diff --git a/.gitignore b/.gitignore
index 3fc3033..21e171f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,6 @@ build/
.project
.settings
.classpath
+classes/
+grails-app/assets/javascripts/appHome.all.js
+src/main/webapp/
diff --git a/README.md b/README.md
index c95fdaa..a18fa8e 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,25 @@
# ResuMe
+ (This guide assumes you already have the JDK installed. If you do not, please go to Oracle and download it.
+
+ 1. Go to Github. If you do not have a github account, you can sign up for a free one here .
+
+ 2. Once you're signed into github, go to Group20's code project repository .
+
+ 3. Fork the repository from github by clicking on the 'Fork' button in the top right-hand corner of the screen:
+
+ This should make the ResuMe repository appear in your Github account under your repositories:
+
+
+ Alternatively, you can 'Clone or Download' Group20's code project repository to your favourite web development IDE. We used IntelliJ, and will give instructions specific to running our repository from this environment.
+
+ 4. You will also need to download React to use our stunning front-end user interface.
+ Download node.js . Then, from commandline in unix or commandprompt in Windows, run these commands:
+
+ npm init
+ @@ -22,6 +22,6 @@ npm install babel-core babel-preset-es2015 babel-preset-react babel-loader webpack
+
+ Downloading node.js enables you to use npm to download and install React, and enables us to integrate our React code with Gradle-based deployment with Grails in IntelliJ. Babel is a transpiler. Go to this tutorial for more information.
+
+ 5. Now, go to your favourite IDE (we recommend IntelliJ and click run. ResuMe will appear in localhost/8080.
+
+ Now you have your very own working version of ResuMe!
diff --git a/build.gradle b/build.gradle
index 5b3e0ec..e49d5fe 100644
--- a/build.gradle
+++ b/build.gradle
@@ -78,4 +78,5 @@ node {
}
processResources.dependsOn(['npmInstall', 'npm_run_bundle'])
-assetCompile.dependsOn(['npmInstall', 'npm_run_bundle'])
\ No newline at end of file
+assetCompile.dependsOn(['npmInstall', 'npm_run_bundle'])
+
diff --git a/devDB.mv.db b/devDB.mv.db
index 6a8c7dd..d50052c 100644
Binary files a/devDB.mv.db and b/devDB.mv.db differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 751007e..8534cc8 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,3 +1,4 @@
+
#Fri Mar 24 11:20:16 EDT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
diff --git a/grails-app/assets/javascripts/app.all.js b/grails-app/assets/javascripts/app.all.js
index 7c2f563..3d26636 100644
--- a/grails-app/assets/javascripts/app.all.js
+++ b/grails-app/assets/javascripts/app.all.js
@@ -63,7 +63,7 @@
/******/ __webpack_require__.p = "/assets/";
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 186);
+/******/ return __webpack_require__(__webpack_require__.s = 187);
/******/ })
/************************************************************************/
/******/ ([
@@ -21919,7 +21919,8 @@ module.exports = g;
/* 182 */,
/* 183 */,
/* 184 */,
-/* 185 */
+/* 185 */,
+/* 186 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -21989,15 +21990,6 @@ var Menu = function (_React$Component) {
'My Certifications'
)
),
- _react2.default.createElement(
- 'li',
- null,
- _react2.default.createElement(
- 'a',
- { href: '#certifications' },
- 'My Certifications'
- )
- ),
_react2.default.createElement(
'li',
null,
@@ -22075,7 +22067,7 @@ var Profile = function (_React$Component2) {
null,
_react2.default.createElement(
'a',
- { href: 'MyResumes.html' },
+ { href: '/resume' },
'View My Resumes'
)
),
@@ -22311,17 +22303,21 @@ var ProfileInfo = function (_React$Component3) {
}(_react2.default.Component);
_reactDom2.default.render(_react2.default.createElement(Menu, { icon: 'http://images.clipartpanda.com/stack-of-paper-vector-29343.png' }), document.getElementById('menu'));
+
_reactDom2.default.render(_react2.default.createElement(Profile, { name: 'Yeeee', status: 'Evil Goddess', work: 'Part-time Librarian', pic: 'https://cdn3.iconfinder.com/data/icons/internet-and-web-4/78/internt_web_technology-13-256.png', camera: 'http://www.ensatt.fr/images/Graphisme/photo-icone.png' }), document.getElementById('profile-box'));
+
+_reactDom2.default.render(_react2.default.createElement(Profile, { name: 'John Smith', status: 'Student at Western University', work: 'Part-time Librarian', pic: 'https://cdn3.iconfinder.com/data/icons/internet-and-web-4/78/internt_web_technology-13-256.png', camera: 'http://www.ensatt.fr/images/Graphisme/photo-icone.png' }), document.getElementById('profile-box'));
+
_reactDom2.default.render(_react2.default.createElement(ProfileInfo, null), document.getElementById('profile-info'));
/***/ }),
-/* 186 */
+/* 187 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var _profile = __webpack_require__(185);
+var _profile = __webpack_require__(186);
var _profile2 = _interopRequireDefault(_profile);
diff --git a/grails-app/assets/javascripts/app2.all.js b/grails-app/assets/javascripts/app2.all.js
index 258da15..5799791 100644
--- a/grails-app/assets/javascripts/app2.all.js
+++ b/grails-app/assets/javascripts/app2.all.js
@@ -63,7 +63,7 @@
/******/ __webpack_require__.p = "/assets/";
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 187);
+/******/ return __webpack_require__(__webpack_require__.s = 188);
/******/ })
/************************************************************************/
/******/ ([
@@ -21917,7 +21917,8 @@ module.exports = g;
/***/ }),
/* 182 */,
-/* 183 */
+/* 183 */,
+/* 184 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -22024,7 +22025,7 @@ var LoginForm = function (_React$Component2) {
username: "",
password: "",
message: "",
- successMessage: "",
+ successMessage: "We made it!",
isLocked: false
};
@@ -22087,6 +22088,7 @@ var LoginForm = function (_React$Component2) {
if (response.ok) {
//this.setState({message: " "});
_this3.setState({
+ message: "Account: " + _this3.state.name + " is made!",
successMessage: _this3.state.name + ", you successfully signed up!",
isLocked: true
});
@@ -22128,10 +22130,10 @@ var LoginForm = function (_React$Component2) {
'Sign Up'
),
_react2.default.createElement('br', null),
- _react2.default.createElement('input', { className: 'formInput', type: 'text', placeholder: 'Enter ', disabled: this.state.isLocked, value: this.state.name, onChange: this.handleNameChange }),
- _react2.default.createElement('br', null),
_react2.default.createElement('input', { className: 'formInput', type: 'text', placeholder: 'Enter Username', disabled: this.state.isLocked, value: this.state.username, onChange: this.handleUsernameChange }),
_react2.default.createElement('br', null),
+ _react2.default.createElement('input', { className: 'formInput', type: 'text', placeholder: 'Enter Name', disabled: this.state.isLocked, value: this.state.name, onChange: this.handleNameChange }),
+ _react2.default.createElement('br', null),
_react2.default.createElement('input', { className: 'formInput', type: 'password', placeholder: 'Enter password', disabled: this.state.isLocked, value: this.state.password, onChange: this.handlePasswordChange }),
_react2.default.createElement('br', null),
_react2.default.createElement(
@@ -22155,16 +22157,16 @@ _reactDom2.default.render(_react2.default.createElement(MenuLogin, { icon: 'http
_reactDom2.default.render(_react2.default.createElement(LoginForm, null), document.getElementById('log-in'));
/***/ }),
-/* 184 */,
/* 185 */,
/* 186 */,
-/* 187 */
+/* 187 */,
+/* 188 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var _login = __webpack_require__(183);
+var _login = __webpack_require__(184);
var _login2 = _interopRequireDefault(_login);
diff --git a/grails-app/assets/javascripts/app3.all.js b/grails-app/assets/javascripts/app3.all.js
index 460b681..c5a63bb 100644
--- a/grails-app/assets/javascripts/app3.all.js
+++ b/grails-app/assets/javascripts/app3.all.js
@@ -63,7 +63,7 @@
/******/ __webpack_require__.p = "/assets/";
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 188);
+/******/ return __webpack_require__(__webpack_require__.s = 189);
/******/ })
/************************************************************************/
/******/ ([
@@ -21918,7 +21918,8 @@ module.exports = g;
/***/ }),
/* 182 */,
/* 183 */,
-/* 184 */
+/* 184 */,
+/* 185 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -21945,98 +21946,59 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
*/
-var MenuResumes = function (_React$Component) {
- _inherits(MenuResumes, _React$Component);
+var ResumeList = function (_React$Component) {
+ _inherits(ResumeList, _React$Component);
- function MenuResumes() {
- _classCallCheck(this, MenuResumes);
+ function ResumeList() {
+ _classCallCheck(this, ResumeList);
- return _possibleConstructorReturn(this, (MenuResumes.__proto__ || Object.getPrototypeOf(MenuResumes)).apply(this, arguments));
+ return _possibleConstructorReturn(this, (ResumeList.__proto__ || Object.getPrototypeOf(ResumeList)).apply(this, arguments));
}
- _createClass(MenuResumes, [{
+ _createClass(ResumeList, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
- { className: 'menu-box' },
+ { id: 'template-List' },
_react2.default.createElement(
'h2',
- { id: 'resume' },
- 'ResuME'
- ),
- _react2.default.createElement(
- 'icon',
- null,
- _react2.default.createElement('img', { src: this.props.icon, height: 90 })
- ),
- _react2.default.createElement(
- 'li',
- null,
- _react2.default.createElement(
- 'a',
- { href: 'index.html' },
- 'About'
- )
- ),
- _react2.default.createElement(
- 'li',
- null,
- _react2.default.createElement(
- 'a',
- { href: '#certifications' },
- 'Contact'
- )
+ { className: 'heading2' },
+ this.props.myresumes
),
+ _react2.default.createElement('br', null),
+ _react2.default.createElement('br', null),
+ _react2.default.createElement('br', null),
+ _react2.default.createElement('br', null),
_react2.default.createElement(
- 'li',
- null,
+ 'h2',
+ { className: 'heading2' },
_react2.default.createElement(
'a',
- { href: '#applications' },
- 'Help'
+ { href: '/choose' },
+ 'New Resume Template'
)
)
);
}
}]);
- return MenuResumes;
-}(_react2.default.Component);
-
-var ResumeList = function (_React$Component2) {
- _inherits(ResumeList, _React$Component2);
-
- function ResumeList() {
- _classCallCheck(this, ResumeList);
-
- return _possibleConstructorReturn(this, (ResumeList.__proto__ || Object.getPrototypeOf(ResumeList)).apply(this, arguments));
- }
-
- _createClass(ResumeList, [{
- key: 'render',
- value: function render() {
- return _react2.default.createElement('div', { id: 'Shadow-Box' });
- }
- }]);
-
return ResumeList;
}(_react2.default.Component);
-_reactDom2.default.render(_react2.default.createElement(MenuResumes, { icon: 'http://images.clipartpanda.com/stack-of-paper-vector-29343.png' }), document.getElementById('menu-MyResumes'));
-_reactDom2.default.render(_react2.default.createElement(ResumeList, null), document.getElementById('list'));
+_reactDom2.default.render(_react2.default.createElement(ResumeList, { myresumes: 'You have no Resumes' }), document.getElementById('list'));
/***/ }),
-/* 185 */,
/* 186 */,
/* 187 */,
-/* 188 */
+/* 188 */,
+/* 189 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var _myresumes = __webpack_require__(184);
+var _myresumes = __webpack_require__(185);
var _myresumes2 = _interopRequireDefault(_myresumes);
diff --git a/grails-app/assets/javascripts/app4.all.js b/grails-app/assets/javascripts/app4.all.js
index dc01e15..8a3f3be 100644
--- a/grails-app/assets/javascripts/app4.all.js
+++ b/grails-app/assets/javascripts/app4.all.js
@@ -63,7 +63,7 @@
/******/ __webpack_require__.p = "/assets/";
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 189);
+/******/ return __webpack_require__(__webpack_require__.s = 190);
/******/ })
/************************************************************************/
/******/ ([
@@ -21978,7 +21978,8 @@ _reactDom2.default.render(_react2.default.createElement(Templates, null), docume
/* 186 */,
/* 187 */,
/* 188 */,
-/* 189 */
+/* 189 */,
+/* 190 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
diff --git a/grails-app/assets/stylesheets/styleSheet.css b/grails-app/assets/stylesheets/styleSheet.css
index 9247cd1..d8fe36e 100644
--- a/grails-app/assets/stylesheets/styleSheet.css
+++ b/grails-app/assets/stylesheets/styleSheet.css
@@ -11,6 +11,20 @@
rgba(0,0,0,0.12);
}
+.menu-box-white {
+ color: black;
+ list-style-type: none;
+ margin: 0;
+ overflow: hidden;
+ padding-right: 150px;
+ height: 170px;
+ webkit-transition: all 500ms ease;
+ -moz-transition: all 500ms ease;
+ -ms-transition: all 500ms ease;
+ -o-transition: all 500ms ease;
+ transition: all 500ms ease;
+}
+
icon{
position: relative;
bottom: 100px;
@@ -29,11 +43,19 @@ li a {
text-align: center;
padding: 14px 20px;
text-decoration: none;
-
}
+div.menu-box-white:hover:not(.active)
+{
+ opacity: 0.7;
+ color: black;
+ background-color: mediumseagreen;
+ box-shadow: 0 2px 2px 2px rgba(0, 0, 0, 0.14),
+ 0 5px 1px -2px rgba(0,0,0,0.3), 0 4px 8px 0
+ rgba(0,0,0,0.12);
+}
li a:hover:not(.active) {
- background-color: #111;
+ background-color: black;
}
.active {
@@ -79,6 +101,22 @@ li a:hover:not(.active) {
rgba(0,0,0,0.12);
}
+#Shadow-Box-2{
+ display:inline-block;
+ position: relative;
+ left: 260px;
+ top: 80px;
+ margin: 24px;
+ margin-top: 2px;
+ margin-bottom: 3px;
+ width: 800px;
+
+ padding: 6px;
+ text-align: center;
+
+}
+
+
.profileInfoTitle{
font-family: Calibri Light;
color: grey;
@@ -119,6 +157,32 @@ btn a:hover:not(.active) {
background-color: mediumblue;
}
+btng{
+ position: relative;
+ left: 288px;
+}
+
+btng a{
+
+ display: block;
+ color: white;
+ background-color: limegreen;
+ font-family: Calibri;
+ font-size: 22px;
+ text-align: center;
+ border: hidden;
+ text-align: center;
+ position: relative;
+ padding: 25px 10px 1px 10px;
+ width: 200px;
+ height: 50px;
+ text-decoration: none;
+}
+
+btng a:hover:not(.active) {
+ background-color: green;
+}
+
circularbtn {
position: relative;
left: 500px;
@@ -169,6 +233,10 @@ circularbtn3 {
}
+#background-image{
+ opacity: 0.7
+}
+
.heading{
font-family: Calibri Light;
color: darkslategrey;
@@ -176,6 +244,20 @@ circularbtn3 {
right: 6px;
}
+.heading2{
+ font-family: Calibri Light;
+ color: white;
+ position: relative;
+ left: 6px;
+}
+
+.headingHome{
+ font-family: Calibri Light;
+ color: white;
+ position: relative;
+ right: 6px;
+}
+
.loginMessage{
font-family: Calibri Light;
color: black;
@@ -236,14 +318,13 @@ circularbtn3 {
display: inline-block;
position: relative;
right: 25px;
- background-color: white;
top: 20px;
margin: 24px;
margin-top: 2px;
margin-bottom: 3px;
width: 100%;
border: 1px solid #ddd;
- background-color: lightgrey;
+ background-color: mediumseagreen;
box-shadow: 0 2px 2px 2px rgba(0, 0, 0, 0.14),
0 5px 1px -2px rgba(0,0,0,0.3), 0 4px 8px 0
rgba(0,0,0,0.12);
diff --git a/grails-app/controllers/resume/UrlMappings.groovy b/grails-app/controllers/resume/UrlMappings.groovy
index a61aa17..74ac069 100644
--- a/grails-app/controllers/resume/UrlMappings.groovy
+++ b/grails-app/controllers/resume/UrlMappings.groovy
@@ -9,6 +9,8 @@ class UrlMappings {
}
}
+ "/resume"(view: "/resume/index")
+ "/choose"(view: "/choose/index")
"/"(view:"/index")
"500"(view:'/error')
"404"(view:'/notFound')
diff --git a/grails-app/views/index.gsp b/grails-app/views/index.gsp
index 499a4b6..57d2824 100644
--- a/grails-app/views/index.gsp
+++ b/grails-app/views/index.gsp
@@ -1,18 +1,31 @@