Commits After Part 1
This commit is contained in:
		
							parent
							
								
									083b450fd3
								
							
						
					
					
						commit
						c406c11b88
					
				
							
								
								
									
										97
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										97
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1385,6 +1385,16 @@ | ||||
|       "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "@nuxt/opencollective": { | ||||
|       "version": "0.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.0.tgz", | ||||
|       "integrity": "sha512-Vf09BxCdj1iT2IRqVwX5snaY2WCTkvM0O4cWWSO1ThCFuc4if0Q/nNwAgCxRU0FeYHJ7DdyMUNSdswCLKlVqeg==", | ||||
|       "requires": { | ||||
|         "chalk": "^2.4.2", | ||||
|         "consola": "^2.10.1", | ||||
|         "node-fetch": "^2.6.0" | ||||
|       } | ||||
|     }, | ||||
|     "@soda/friendly-errors-webpack-plugin": { | ||||
|       "version": "1.7.1", | ||||
|       "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", | ||||
| @ -2607,7 +2617,6 @@ | ||||
|       "version": "3.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||||
|       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "color-convert": "^1.9.0" | ||||
|       } | ||||
| @ -3323,6 +3332,23 @@ | ||||
|       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "bootstrap": { | ||||
|       "version": "4.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz", | ||||
|       "integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA==" | ||||
|     }, | ||||
|     "bootstrap-vue": { | ||||
|       "version": "2.16.0", | ||||
|       "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.16.0.tgz", | ||||
|       "integrity": "sha512-gLETwPmeRHCe5WHmhGxzb5PtTEuKqQPGl0TFvZ2Odbkg/7UuIHdqIexrJRerpnomP4ZzDQ+qYGL91Ls9lcQsJQ==", | ||||
|       "requires": { | ||||
|         "@nuxt/opencollective": "^0.3.0", | ||||
|         "bootstrap": ">=4.5.0 <5.0.0", | ||||
|         "popper.js": "^1.16.1", | ||||
|         "portal-vue": "^2.1.7", | ||||
|         "vue-functional-data-merge": "^3.1.0" | ||||
|       } | ||||
|     }, | ||||
|     "brace-expansion": { | ||||
|       "version": "1.1.11", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||
| @ -3883,7 +3909,6 @@ | ||||
|       "version": "2.4.2", | ||||
|       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | ||||
|       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "ansi-styles": "^3.2.1", | ||||
|         "escape-string-regexp": "^1.0.5", | ||||
| @ -4419,7 +4444,6 @@ | ||||
|       "version": "1.9.3", | ||||
|       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||||
|       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "color-name": "1.1.3" | ||||
|       } | ||||
| @ -4427,8 +4451,7 @@ | ||||
|     "color-name": { | ||||
|       "version": "1.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||||
|       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||||
|     }, | ||||
|     "color-string": { | ||||
|       "version": "1.5.3", | ||||
| @ -4631,6 +4654,11 @@ | ||||
|       "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "consola": { | ||||
|       "version": "2.14.0", | ||||
|       "resolved": "https://registry.npmjs.org/consola/-/consola-2.14.0.tgz", | ||||
|       "integrity": "sha512-A2j1x4u8d6SIVikhZROfpFJxQZie+cZOfQMyI/tu2+hWXe8iAv7R6FW6s6x04/7zBCst94lPddztot/d6GJiuQ==" | ||||
|     }, | ||||
|     "console-browserify": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", | ||||
| @ -5239,8 +5267,12 @@ | ||||
|     "date-fns": { | ||||
|       "version": "2.14.0", | ||||
|       "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.14.0.tgz", | ||||
|       "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-1zD+68jhFgDIM0rF05rcwYO8cExdNqxjq4xP1QKM60Q45mnO6zaMWB4tOzrIr4M4GSLntsKeE4c9Bdl2jhL/yw==" | ||||
|     }, | ||||
|     "date-format-parse": { | ||||
|       "version": "0.2.5", | ||||
|       "resolved": "https://registry.npmjs.org/date-format-parse/-/date-format-parse-0.2.5.tgz", | ||||
|       "integrity": "sha512-PzvB3p9bTxrGQbz3ZlO/kxgXzKZhMo4l0OQfPqVYjuwixHRS9yHH6cUJI9JG2Hh6iUQgh17T7w95lzQ131dS/g==" | ||||
|     }, | ||||
|     "de-indent": { | ||||
|       "version": "1.0.2", | ||||
| @ -6240,8 +6272,7 @@ | ||||
|     "escape-string-regexp": { | ||||
|       "version": "1.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | ||||
|       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | ||||
|     }, | ||||
|     "escodegen": { | ||||
|       "version": "1.14.3", | ||||
| @ -7628,8 +7659,7 @@ | ||||
|     "has-flag": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||||
|       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" | ||||
|     }, | ||||
|     "has-symbol-support-x": { | ||||
|       "version": "1.4.2", | ||||
| @ -10958,6 +10988,11 @@ | ||||
|         "semver": "^5.7.0" | ||||
|       } | ||||
|     }, | ||||
|     "node-fetch": { | ||||
|       "version": "2.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", | ||||
|       "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" | ||||
|     }, | ||||
|     "node-forge": { | ||||
|       "version": "0.9.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", | ||||
| @ -12232,6 +12267,16 @@ | ||||
|         "ts-pnp": "^1.1.6" | ||||
|       } | ||||
|     }, | ||||
|     "popper.js": { | ||||
|       "version": "1.16.1", | ||||
|       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", | ||||
|       "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" | ||||
|     }, | ||||
|     "portal-vue": { | ||||
|       "version": "2.1.7", | ||||
|       "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", | ||||
|       "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==" | ||||
|     }, | ||||
|     "portfinder": { | ||||
|       "version": "1.0.26", | ||||
|       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", | ||||
| @ -14634,7 +14679,6 @@ | ||||
|       "version": "5.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||||
|       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "has-flag": "^3.0.0" | ||||
|       } | ||||
| @ -15584,6 +15628,11 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "vue-functional-data-merge": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", | ||||
|       "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" | ||||
|     }, | ||||
|     "vue-hot-reload-api": { | ||||
|       "version": "2.3.4", | ||||
|       "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", | ||||
| @ -15630,6 +15679,16 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "vue-router": { | ||||
|       "version": "3.3.4", | ||||
|       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz", | ||||
|       "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg==" | ||||
|     }, | ||||
|     "vue-select": { | ||||
|       "version": "3.10.7", | ||||
|       "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-3.10.7.tgz", | ||||
|       "integrity": "sha512-6rvIYBNEp9y0xK/sq2ZzDCxKA2BoVNliyctOeMtzarQzvpLlab7l8zvqr2jhGZOxozp7jd2AvZxpF3Ivems2wQ==" | ||||
|     }, | ||||
|     "vue-style-loader": { | ||||
|       "version": "4.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", | ||||
| @ -15664,6 +15723,20 @@ | ||||
|       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "vue2-datepicker": { | ||||
|       "version": "3.6.1", | ||||
|       "resolved": "https://registry.npmjs.org/vue2-datepicker/-/vue2-datepicker-3.6.1.tgz", | ||||
|       "integrity": "sha512-U6iQWSDsNoq/u6QJCtAMcyWlcZSx0rmPmqaJ8LQtGvwu9x12jXDoe3YNeG4y7E45OYAMLXs9WzGkDqDmNj3jkw==", | ||||
|       "requires": { | ||||
|         "date-fns": "^2.0.1", | ||||
|         "date-format-parse": "^0.2.5" | ||||
|       } | ||||
|     }, | ||||
|     "vuex": { | ||||
|       "version": "3.5.1", | ||||
|       "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz", | ||||
|       "integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw==" | ||||
|     }, | ||||
|     "w3c-hr-time": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", | ||||
|  | ||||
							
								
								
									
										78
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								package.json
									
									
									
									
									
								
							| @ -1,53 +1,46 @@ | ||||
| { | ||||
|   "ManifestComments": [ | ||||
|     "Only add dependencies that you want shipped to the end user, for everything else, use devDependencies, including things that will be bundled by webpack.", | ||||
|     "NW.js requires a name and a main, everything else is optional.", | ||||
|     "The build section is used by nwjs-builder-phoenix, see its documentation for more info", | ||||
|     "To turn spell checking off, remove it from the chromium-args in this file" | ||||
|   ], | ||||
|   "name": "nw-vue", | ||||
|   "version": "1.6.0", | ||||
|   "main": "http://localhost:8964", | ||||
|   "node-remote": "http://localhost:8964", | ||||
|   "node-main": "", | ||||
|   "window": { | ||||
|     "width": 960, | ||||
|     "height": 600, | ||||
|     "min_width": 700, | ||||
|     "min_height": 500, | ||||
|     "icon": "src/assets/vue.png" | ||||
|   }, | ||||
|   "private": true, | ||||
|   "scripts": { | ||||
|     "start": "concurrently \"npm run serve\" \"wait-on http://localhost:8964 && nw .\"", | ||||
|     "serve": "vue-cli-service serve --port=8964", | ||||
|     "build": "npm run build:clean && npm run build:vue && npm run build:nw", | ||||
|     "build:clean": "rimraf ./dist-vue ./dist", | ||||
|     "build:vue": "vue-cli-service build --modern --dest ./dist-vue", | ||||
|     "build:nw": "build --concurrent --tasks win-x86,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:win": "npm run build:win:clean && npm run build:vue && build --tasks win-x86 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:lin": "npm run build:lin:clean && npm run build:vue && build --tasks linux-x64 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:win:clean": "rimraf ./dist-vue ./dist/nw-vue-1.6.0-win-x86 ./dist/nw-vue-1.6.0-win-x86.zip ./dist/nw-vue-1.6.0-win-x86.7z ./dist/nw-vue-1.6.0-win-x86-Setup.exe", | ||||
|     "build:lin:clean": "rimraf ./dist-vue ./dist/nw-vue-1.6.0-linux-x64 ./dist/nw-vue-1.6.0-linux-x64.zip", | ||||
|     "run:win": "dist\\nw-vue-1.6.0-win-x86\\nw-vue.exe", | ||||
|     "run:lin": "./dist/nw-vue-1.6.0-linux-x64/nw-vue", | ||||
|     "regression": "rd /s /q node_modules & rd /s /q node_modules & rd /s /q node_modules & npm install && npm run lint && npm test && npm run build:win && npm run run:win", | ||||
|     "lint": "vue-cli-service lint --no-fix", | ||||
|     "fix": "vue-cli-service lint --fix", | ||||
|     "test": "npm run test:unit", | ||||
|     "test:e2e": "vue-cli-service test:e2e", | ||||
|     "test:unit": "jest --config jest.config.js --coverage", | ||||
|     "validate": "npm run lint && npm run test:unit && npm run build:vue", | ||||
|     "update:vue-devtools": "rimraf ./node_modules/nw-vue-devtools-prebuilt && npm install" | ||||
|     "test:e2e": "vue-cli-service test:e2e", | ||||
|     "lint": "vue-cli-service lint --no-fix", | ||||
|     "build:clean": "rimraf ./dist-vue ./dist", | ||||
|     "build:lin": "npm run build:lin:clean && npm run build:vue && build --tasks linux-x64 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:lin:clean": "rimraf ./dist-vue ./dist/nw-vue-1.6.0-linux-x64 ./dist/nw-vue-1.6.0-linux-x64.zip", | ||||
|     "build:nw": "build --concurrent --tasks win-x86,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:vue": "vue-cli-service build --modern --dest ./dist-vue", | ||||
|     "build:win": "npm run build:win:clean && npm run build:vue && build --tasks win-x86 --mirror https://dl.nwjs.io/ .", | ||||
|     "build:win:clean": "rimraf ./dist-vue ./dist/nw-vue-1.6.0-win-x86 ./dist/nw-vue-1.6.0-win-x86.zip ./dist/nw-vue-1.6.0-win-x86.7z ./dist/nw-vue-1.6.0-win-x86-Setup.exe", | ||||
|     "fix": "vue-cli-service lint --fix", | ||||
|     "regression": "rd /s /q node_modules & rd /s /q node_modules & rd /s /q node_modules & npm install && npm run lint && npm test && npm run build:win && npm run run:win", | ||||
|     "run:lin": "./dist/nw-vue-1.6.0-linux-x64/nw-vue", | ||||
|     "run:win": "dist\\nw-vue-1.6.0-win-x86\\nw-vue.exe", | ||||
|     "start": "concurrently \"npm run serve\" \"wait-on http://localhost:8964 && nw .\"", | ||||
|     "test": "npm run test:unit", | ||||
|     "update:vue-devtools": "rimraf ./node_modules/nw-vue-devtools-prebuilt && npm install", | ||||
|     "validate": "npm run lint && npm run test:unit && npm run build:vue" | ||||
|   }, | ||||
|   "main": "http://localhost:8964", | ||||
|   "dependencies": { | ||||
|     "express": "^4.17.1" | ||||
|     "bootstrap": "^4.5.0", | ||||
|     "bootstrap-vue": "^2.16.0", | ||||
|     "express": "^4.17.1", | ||||
|     "vue-router": "^3.2.0", | ||||
|     "vue-select": "^3.10.7", | ||||
|     "vue2-datepicker": "^3.6.1", | ||||
|     "vuex": "^3.4.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@vue/cli-plugin-babel": "^4.4.6", | ||||
|     "@vue/cli-plugin-e2e-nightwatch": "^4.4.6", | ||||
|     "@vue/cli-plugin-eslint": "^4.4.6", | ||||
|     "@vue/cli-plugin-router": "^4.4.6", | ||||
|     "@vue/cli-plugin-unit-jest": "^4.4.6", | ||||
|     "@vue/cli-plugin-vuex": "^4.4.6", | ||||
|     "@vue/cli-service": "^4.4.6", | ||||
|     "@vue/test-utils": "^1.0.3", | ||||
|     "babel-eslint": "^10.1.0", | ||||
| @ -69,7 +62,12 @@ | ||||
|     "vue-template-compiler": "^2.6.11", | ||||
|     "wait-on": "^5.1.0" | ||||
|   }, | ||||
|   "chromium-args": "--enable-spell-checking --load-extension='./node_modules/nw-vue-devtools-prebuilt/extension'", | ||||
|   "ManifestComments": [ | ||||
|     "Only add dependencies that you want shipped to the end user, for everything else, use devDependencies, including things that will be bundled by webpack.", | ||||
|     "NW.js requires a name and a main, everything else is optional.", | ||||
|     "The build section is used by nwjs-builder-phoenix, see its documentation for more info", | ||||
|     "To turn spell checking off, remove it from the chromium-args in this file" | ||||
|   ], | ||||
|   "build": { | ||||
|     "nwVersion": "v0.47.0", | ||||
|     "nwFlavor": "normal", | ||||
| @ -138,5 +136,15 @@ | ||||
|       "diffUpdaters": false, | ||||
|       "hashCalculation": true | ||||
|     } | ||||
|   }, | ||||
|   "chromium-args": "--enable-spell-checking --load-extension='./node_modules/nw-vue-devtools-prebuilt/extension'", | ||||
|   "node-main": "", | ||||
|   "node-remote": "http://localhost:8964", | ||||
|   "window": { | ||||
|     "width": 960, | ||||
|     "height": 600, | ||||
|     "min_width": 700, | ||||
|     "min_height": 500, | ||||
|     "icon": "src/assets/vue.png" | ||||
|   } | ||||
| } | ||||
|  | ||||
							
								
								
									
										74
									
								
								src/App.vue
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								src/App.vue
									
									
									
									
									
								
							| @ -1,41 +1,55 @@ | ||||
| <template> | ||||
|   <div id="app"> | ||||
|     <img | ||||
|       src="@/assets/logo.png" | ||||
|       alt="Vue.js logo" | ||||
|       title="Vue.js" | ||||
|       class="logo" | ||||
|     /> | ||||
|     <img | ||||
|       src="@/assets/nw.png" | ||||
|       alt="NW.js logo" | ||||
|       title="NW.js" | ||||
|       class="logo" | ||||
|     /> | ||||
|     <HelloWorld msg="Welcome to your Vue.js Desktop App in NW.js!" /> | ||||
|     <b-navbar toggleable="lg" type="dark" variant="info"> | ||||
|       <b-button class="mr-4" v-b-toggle.sidebar>Menu</b-button> | ||||
|       <b-navbar-brand href="#">NavBar</b-navbar-brand> | ||||
|     </b-navbar> | ||||
|     <b-sidebar id="sidebar" title="Main Menu"> | ||||
|       <div class="px-3 py-2"> | ||||
|         <b-list-group> | ||||
|           <b-list-group-item href="/#/"> | ||||
|             Hours Log | ||||
|           </b-list-group-item> | ||||
|           <b-list-group-item href="/#/projects"> | ||||
|             Projects | ||||
|           </b-list-group-item> | ||||
|         </b-list-group> | ||||
|         <div class="dropdown-divider"></div> | ||||
|         <b-list-group class=""> | ||||
|           <b-list-group-item href="/"> | ||||
|             Exports | ||||
|           </b-list-group-item> | ||||
|           <b-list-group-item href="/"> | ||||
|             Settings | ||||
|           </b-list-group-item> | ||||
|         </b-list-group> | ||||
|       </div> | ||||
|     </b-sidebar>     | ||||
|     <div id="nav"> | ||||
|     </div> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import HelloWorld from '@/components/HelloWorld.vue'; | ||||
| 
 | ||||
| export default { | ||||
|   name: 'App', | ||||
|   components: { | ||||
|     HelloWorld | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style> | ||||
| #app { | ||||
|   margin-top: 60px; | ||||
|   color: #2C3E50; | ||||
|   font-family: 'Avenir', sans-serif; | ||||
|   font-family: Avenir, Helvetica, Arial, sans-serif; | ||||
|   -webkit-font-smoothing: antialiased; | ||||
|   -moz-osx-font-smoothing: grayscale; | ||||
|   text-align: center; | ||||
|   color: #2c3e50; | ||||
| } | ||||
| .logo { | ||||
|   max-height: 140px; | ||||
|   margin: 0px 10px; | ||||
| 
 | ||||
| #nav { | ||||
|   padding: 30px; | ||||
| } | ||||
| 
 | ||||
| #nav a { | ||||
|   font-weight: bold; | ||||
|   color: #2c3e50; | ||||
| } | ||||
| 
 | ||||
| #nav a.router-link-exact-active { | ||||
|   color: #42b983; | ||||
| } | ||||
| </style> | ||||
|  | ||||
							
								
								
									
										19
									
								
								src/main.js
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/main.js
									
									
									
									
									
								
							| @ -1,10 +1,29 @@ | ||||
| import Vue from 'vue'; | ||||
| import { BootstrapVue, IconsPlugin } from 'bootstrap-vue' | ||||
| import vSelect from 'vue-select' | ||||
| import DatePicker from 'vue2-datepicker' | ||||
| 
 | ||||
| import 'bootstrap/dist/css/bootstrap.css' | ||||
| import 'bootstrap-vue/dist/bootstrap-vue.css' | ||||
| import 'vue-select/dist/vue-select.css' | ||||
| import 'vue2-datepicker/index.css' | ||||
| 
 | ||||
| import App from './App.vue'; | ||||
| import router from './router'; | ||||
| import store from './store'; | ||||
| 
 | ||||
| Vue.use(BootstrapVue) | ||||
| Vue.use(IconsPlugin) | ||||
| Vue.component('v-select', vSelect) | ||||
| Vue.component('date-picker', DatePicker) | ||||
| 
 | ||||
| Vue.config.productionTip = false; | ||||
| 
 | ||||
| // eslint-disable-next-line no-unused-vars
 | ||||
| const app = new Vue({ | ||||
|   router, | ||||
|   store, | ||||
| 
 | ||||
|   render: function (hyperscript) { | ||||
|     return hyperscript(App); | ||||
|   } | ||||
|  | ||||
							
								
								
									
										31
									
								
								src/router/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/router/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| import Vue from 'vue'; | ||||
| import VueRouter from 'vue-router'; | ||||
| import HoursLog from '../views/HoursLog.vue'; | ||||
| import TimeEntry from '../views/TimeEntry.vue'; | ||||
| import Projects from '../views/Projects.vue' | ||||
| 
 | ||||
| Vue.use(VueRouter); | ||||
| 
 | ||||
| const routes = [ | ||||
|   { | ||||
|     path: '/', | ||||
|     name: 'HoursLog', | ||||
|     component: HoursLog | ||||
|   }, | ||||
|   { | ||||
|     path: '/add-time-entry', | ||||
|     name: 'TimeEntry', | ||||
|     component: TimeEntry | ||||
|   }, | ||||
|   { | ||||
|     path: '/projects', | ||||
|     name: 'Projects', | ||||
|     component: Projects | ||||
|   }, | ||||
| ]; | ||||
| 
 | ||||
| const router = new VueRouter({ | ||||
|   routes | ||||
| }); | ||||
| 
 | ||||
| export default router; | ||||
							
								
								
									
										15
									
								
								src/store/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/store/index.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| import Vue from 'vue'; | ||||
| import Vuex from 'vuex'; | ||||
| 
 | ||||
| Vue.use(Vuex); | ||||
| 
 | ||||
| export default new Vuex.Store({ | ||||
|   state: { | ||||
|   }, | ||||
|   mutations: { | ||||
|   }, | ||||
|   actions: { | ||||
|   }, | ||||
|   modules: { | ||||
|   } | ||||
| }); | ||||
							
								
								
									
										46
									
								
								src/views/HoursLog.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/views/HoursLog.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| <template> | ||||
|   <b-container class="hours-log-page"> | ||||
|     <b-row> | ||||
|       <b-col cm="8" offset-sm="2"> | ||||
|         <b-row class="mt-5 mb-4 "> | ||||
|           <b-col> | ||||
|             <h1>Hours Log</h1> | ||||
|           </b-col> | ||||
|           <b-col> | ||||
|             <b-btn variant="primary" @click="$router.push({name: 'TimeEntry'})"> | ||||
|               + Add Entry | ||||
|               </b-btn> | ||||
|           </b-col> | ||||
|         </b-row> | ||||
|         <b-row> | ||||
|           <b-col> | ||||
|             <b-table striped hover :items="items"></b-table>  | ||||
|           </b-col> | ||||
|         </b-row> | ||||
|       </b-col> | ||||
|     </b-row> | ||||
|   </b-container> | ||||
|    | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| // @ is an alias to /src | ||||
| 
 | ||||
| export default { | ||||
|   name: 'HoursLog', | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       items: [ | ||||
|         {  | ||||
|           project_name: 'Company #1',  | ||||
|           date: 'May 12, 2020',  | ||||
|           start_time: '7:00 am',  | ||||
|           end_time: '11:00', | ||||
|         }, | ||||
|       ] | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										39
									
								
								src/views/Projects.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/views/Projects.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| <template> | ||||
|   <b-container class="projects-page"> | ||||
|     <b-row> | ||||
|       <b-col cm="8" offset-sm="2"> | ||||
|         <b-row class="mt-5 mb-4 "> | ||||
|           <b-col> | ||||
|             <h1>Projects</h1> | ||||
|           </b-col> | ||||
|           <b-col> | ||||
|             <b-btn variant="primary">+ Add New Project</b-btn> | ||||
|           </b-col> | ||||
|         </b-row> | ||||
| 
 | ||||
|         <b-row> | ||||
|           <b-col> | ||||
|             <v-select | ||||
|             :options="[{label: 'Canada', code: 'ca'}]"  | ||||
|             /> | ||||
|           </b-col> | ||||
|         </b-row> | ||||
|       </b-col> | ||||
|     </b-row> | ||||
|   </b-container> | ||||
|    | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| // @ is an alias to /src | ||||
| 
 | ||||
| export default { | ||||
|   name: 'Projects', | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
							
								
								
									
										56
									
								
								src/views/TimeEntry.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/views/TimeEntry.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | ||||
| <template> | ||||
|   <b-container class="time-entry-page"> | ||||
|     <b-row> | ||||
|       <b-col sm="6" offset-sm="3"> | ||||
|         <b-row> | ||||
|           <b-col> | ||||
|             <h1>New Time Entry</h1> | ||||
|           </b-col> | ||||
|         </b-row> | ||||
|         <b-row> | ||||
|           <b-col> | ||||
|             <b-form @submit="onSubmit" @reset="onReset"> | ||||
|               <b-form-group id="input-group-1" label="Star Date:" label-for="input-1"> | ||||
|                 <date-picker v-model="formData.startDate" type="datetime" /> | ||||
|               </b-form-group> | ||||
| 
 | ||||
|               <b-form-group id="input-group-2" label="End Date:" label-for="input-2"> | ||||
|                 <date-picker v-model="formData.endDate" type="datetime" /> | ||||
|               </b-form-group> | ||||
|               <b-button type="submit" variant="primary">Submit</b-button> | ||||
|               <b-button type="reset" variant="danger">Reset</b-button> | ||||
|             </b-form>         | ||||
|           </b-col> | ||||
|         </b-row> | ||||
|       </b-col> | ||||
|     </b-row> | ||||
|   </b-container> | ||||
|    | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| // @ is an alias to /src | ||||
| 
 | ||||
| export default { | ||||
|   name: 'TimeEntry', | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       formData: { | ||||
|         startDate: {}, | ||||
|         endDate: {}, | ||||
|         notes: '', | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     onSubmit() { | ||||
| 
 | ||||
|     }, | ||||
|     onReset() { | ||||
| 
 | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user