From 5d73eb74114958220daab8fe795d213fd6809c05 Mon Sep 17 00:00:00 2001 From: Mostafiz Rahman Date: Wed, 21 Jun 2017 01:57:21 +0600 Subject: [PATCH 1/5] Create readme --- readme | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 readme diff --git a/readme b/readme new file mode 100644 index 0000000..9234979 --- /dev/null +++ b/readme @@ -0,0 +1,2 @@ +# Meteor-Boilerplate +Lightweight Boilerplate for Meteor React Application with Semantic UI From 09bffe84d75f66965048122d065cd13b486bbfeb Mon Sep 17 00:00:00 2001 From: Mostafiz Rahman Date: Mon, 7 Aug 2017 18:12:05 +0600 Subject: [PATCH 2/5] ui done upto login/register --- client/main.css | 50 ++++++++++++ imports/startup/client/routes.js | 26 +++++- .../ui/pages/{samplePage.jsx => HomePage.jsx} | 2 +- imports/ui/pages/LoginPage.jsx | 46 +++++++++++ imports/ui/pages/RegisterPage.jsx | 75 ++++++++++++++++++ public/images/logo.png | Bin 0 -> 33945 bytes 6 files changed, 195 insertions(+), 4 deletions(-) rename imports/ui/pages/{samplePage.jsx => HomePage.jsx} (86%) create mode 100644 imports/ui/pages/LoginPage.jsx create mode 100644 imports/ui/pages/RegisterPage.jsx create mode 100644 public/images/logo.png diff --git a/client/main.css b/client/main.css index 0f57162..b824018 100644 --- a/client/main.css +++ b/client/main.css @@ -103,3 +103,53 @@ body{ border-right: 3px solid #ed4054; font-weight: normal; } + + +/**************************************** Login Page Starts **************************************/ + +.loginSectionCon{ + background: rgba(255,255,255,0.4); + margin: 3% auto; + max-width: 400px; + height: auto; + border-radius: 10px; +} +.loginLogo{ + height: auto; + max-width: 123px; + margin: 0px auto 20px; + padding-top: 20px; +} +.loginSectionCon h2{ + font-size: 30px; + font-weight: lighter; + margin: 20px 0px; + display: block; + text-align: center; + color: #212121; +} +.logFieldContainer{ + padding: 20px; + background: #fff; + border: 1px solid #ddd; + border-radius: 10px; +} +.logFieldContainer p{ + margin: 0px; +} +.logFieldContainer .loginField{ + padding: 9px 10px; + border: 1px solid #E9ECD2; + border-radius: 5px; + background: #FEFFEF; + width: 100%; + margin: 5px 0px 15px; +} +.regCheckbox{ + margin-right: 20px; +} +.regCheckboxTitle{ + margin-right: 20px; + padding-bottom: 10px; + display: inline-block; +} diff --git a/imports/startup/client/routes.js b/imports/startup/client/routes.js index 34b7829..24d6abe 100644 --- a/imports/startup/client/routes.js +++ b/imports/startup/client/routes.js @@ -1,13 +1,33 @@ import { FlowRouter } from 'meteor/kadira:flow-router'; import { mount } from 'react-mounter'; -import SamplePage from '/imports/ui/pages/samplePage.jsx' +import HomePage from '/imports/ui/pages/HomePage.jsx' +import RegisterPage from '/imports/ui/pages/RegisterPage' +import LoginPage from '/imports/ui/pages/LoginPage' + FlowRouter.route('/', { - name: 'SamplePage', + name: 'Homepage' , + action(params, queryParams) { + console.log("home route is being called..."); + Meteor.userId() ? mount(HomePage) : mount(LoginPage); + } +}); + +FlowRouter.route('/register', { + name: 'RegisterPage', + action(params, queryParams) { + console.log("home route is being called..."); + // Meteor.userId() ? mount(Dashboard) : mount(Login); + mount(RegisterPage); + } +}); + +FlowRouter.route('/login', { + name: 'LoginPage', action(params, queryParams) { console.log("home route is being called..."); // Meteor.userId() ? mount(Dashboard) : mount(Login); - mount(SamplePage); + mount(LoginPage); } }); diff --git a/imports/ui/pages/samplePage.jsx b/imports/ui/pages/HomePage.jsx similarity index 86% rename from imports/ui/pages/samplePage.jsx rename to imports/ui/pages/HomePage.jsx index 575cf87..182587e 100644 --- a/imports/ui/pages/samplePage.jsx +++ b/imports/ui/pages/HomePage.jsx @@ -3,7 +3,7 @@ import React, { Component } from 'react'; import SampleLayout from '/imports/ui/layouts/SampleLayout.jsx'; import SampleComponent from '/imports/ui/components/SampleComponent.jsx'; -export default class SamplePage extends Component{ +export default class HomePage extends Component{ render(){ console.log("SamplePage being rendered"); diff --git a/imports/ui/pages/LoginPage.jsx b/imports/ui/pages/LoginPage.jsx new file mode 100644 index 0000000..75eadf2 --- /dev/null +++ b/imports/ui/pages/LoginPage.jsx @@ -0,0 +1,46 @@ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import { mount } from 'react-mounter'; + +import Homepage from '/imports/ui/pages/HomePage.jsx' + +export default class LoginPage extends Component{ + + componentWillMount(){ + document.body.style.background= "#004212 "; + } + + componentWillUnmount(){ + document.body.style.background= "#FFF"; + } + + handleSubmit(){ + let code = ReactDOM.findDOMNode(this.refs.code).value; + let password = ReactDOM.findDOMNode(this.refs.password).value; + console.log(code, password); + Meteor.loginWithPassword(code, password, (error) =>{ + if(error)window.alert("School code and password don't match."); + else mount(Homepage); + }) + } + + render(){ + return( +
+ Logo +

লগইন

+
+

ইউজারনেম/ইমেইল

+ +

পাসওয়ার্ড

+ +
+
+ +
+ +
+
+ ) + } +} diff --git a/imports/ui/pages/RegisterPage.jsx b/imports/ui/pages/RegisterPage.jsx new file mode 100644 index 0000000..58367fd --- /dev/null +++ b/imports/ui/pages/RegisterPage.jsx @@ -0,0 +1,75 @@ +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; + +export default class RegisterPage extends Component{ + + componentWillMount(){ + document.body.style.background= "#004212"; + } + + componentWillUnmount(){ + document.body.style.background= "#FFF"; + } + + register(){ + data = { + name : ReactDOM.findDOMNode(this.refs.name).value, + userId : ReactDOM.findDOMNode(this.refs.userId).value, + password : ReactDOM.findDOMNode(this.refs.password).value, + password1 : ReactDOM.findDOMNode(this.refs.password1).value, + code: ReactDOM.findDOMNode(this.refs.code).value, + } + if(data.password != data.password1){ + window.alert("Error! Passwords don't match."); + return; + } + else if(data.name == '' || + data.userId == '' || + data.password == '' + ){ + window.alert("Please fill up all fields"); + return; + } + if(data.code != 'army101'){ + alert("Code is wrong!"); + return; + } + Meteor.call("user.create", data, function(error, result){ + if(error){ + console.log("error", error); + window.alert('Error! Please contact admin.') + } + if(result){ + console.log(result); + Meteor.loginWithPassword(data.userId, data.password, (error) =>{ + FlowRouter.go('/'); + }) + } + }); + } + + render(){ + return( +
+ BanBeis +

নিবন্ধন করুন

+
+

নাম

+ +

ইউজার আইডি অথবা ইমেইল

+ +

অ্যাকটিভেশন কোড

+ +

পাসওয়ার্ড

+ +

পুনরায় পাসওয়ার্ড লিখুন

+ +
+
+ +
+
+
+ ) + } +} diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d02b75a17435f5a0d4d63f2eee858a15a4bf3628 GIT binary patch literal 33945 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%0ApB?Y#viU&P)lH^WY}y`}xbV2I*v7+q`mSd^tHa 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 f;9DD=^T<#&r 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 JPDHLkV1l$oyWao+ literal 0 HcmV?d00001 From 8b0fbfc79d8905524cfc74fff2046b34cdde2823 Mon Sep 17 00:00:00 2001 From: Mostafiz Rahman Date: Mon, 7 Aug 2017 19:12:42 +0600 Subject: [PATCH 3/5] login/register api done ++ color theme updated --- client/main.css | 104 +++++++++++++++--------------- imports/api/users.js | 0 imports/api/users/methods.js | 15 +++++ imports/startup/server/index.js | 1 + imports/ui/pages/RegisterPage.jsx | 6 +- server/main.js | 2 + 6 files changed, 71 insertions(+), 57 deletions(-) create mode 100644 imports/api/users.js create mode 100644 imports/api/users/methods.js diff --git a/client/main.css b/client/main.css index b824018..9448cb3 100644 --- a/client/main.css +++ b/client/main.css @@ -47,7 +47,7 @@ body{ padding-bottom: 0px !important; } .topBarTitle{ - background: #3e40a1; + background: #00300d; color: #fff; } .topBarTitle h3{ @@ -56,7 +56,7 @@ body{ font-weight: normal; } .topBar{ - background: #3e40a1; + background: #00300d; text-align: center; } .topBar h3{ @@ -69,7 +69,7 @@ body{ .sideBar{ height: calc(100vh - 50px); - background: #5153aa; + background: #004212; position: fixed !important; z-index: 9; margin: 64px 0px 0px 5px !important; @@ -100,56 +100,56 @@ body{ } .activeMenu{ background: rgba(0,0,0,0.3); - border-right: 3px solid #ed4054; + border-right: 3px solid #004212; font-weight: normal; } -/**************************************** Login Page Starts **************************************/ - -.loginSectionCon{ - background: rgba(255,255,255,0.4); - margin: 3% auto; - max-width: 400px; - height: auto; - border-radius: 10px; -} -.loginLogo{ - height: auto; - max-width: 123px; - margin: 0px auto 20px; - padding-top: 20px; -} -.loginSectionCon h2{ - font-size: 30px; - font-weight: lighter; - margin: 20px 0px; - display: block; - text-align: center; - color: #212121; -} -.logFieldContainer{ - padding: 20px; - background: #fff; - border: 1px solid #ddd; - border-radius: 10px; -} -.logFieldContainer p{ - margin: 0px; -} -.logFieldContainer .loginField{ - padding: 9px 10px; - border: 1px solid #E9ECD2; - border-radius: 5px; - background: #FEFFEF; - width: 100%; - margin: 5px 0px 15px; -} -.regCheckbox{ - margin-right: 20px; -} -.regCheckboxTitle{ - margin-right: 20px; - padding-bottom: 10px; - display: inline-block; -} +/**************************************** Login Page Starts **************************************/ + +.loginSectionCon{ + background: rgba(255,255,255,0.4); + margin: 3% auto; + max-width: 400px; + height: auto; + border-radius: 10px; +} +.loginLogo{ + height: auto; + max-width: 123px; + margin: 0px auto 20px; + padding-top: 20px; +} +.loginSectionCon h2{ + font-size: 30px; + font-weight: lighter; + margin: 20px 0px; + display: block; + text-align: center; + color: #212121; +} +.logFieldContainer{ + padding: 20px; + background: #fff; + border: 1px solid #ddd; + border-radius: 10px; +} +.logFieldContainer p{ + margin: 0px; +} +.logFieldContainer .loginField{ + padding: 9px 10px; + border: 1px solid #E9ECD2; + border-radius: 5px; + background: #FEFFEF; + width: 100%; + margin: 5px 0px 15px; +} +.regCheckbox{ + margin-right: 20px; +} +.regCheckboxTitle{ + margin-right: 20px; + padding-bottom: 10px; + display: inline-block; +} diff --git a/imports/api/users.js b/imports/api/users.js new file mode 100644 index 0000000..e69de29 diff --git a/imports/api/users/methods.js b/imports/api/users/methods.js new file mode 100644 index 0000000..0939400 --- /dev/null +++ b/imports/api/users/methods.js @@ -0,0 +1,15 @@ +import { Meteor } from 'meteor/meteor'; +import { Accounts } from 'meteor/accounts-base'; + +const bcrypt = require('bcrypt'); + +Meteor.methods({ + 'user.create':function(data){ + if(data.code != 'army101') throw new Meteor.Error(500, 'Wrong Activation Code', 'Wrong Activation Code'); + return Accounts.createUser({ + name: data.name, + username: data.userId, + password: data.password, + }); + } +}); diff --git a/imports/startup/server/index.js b/imports/startup/server/index.js index e69de29..bafe591 100644 --- a/imports/startup/server/index.js +++ b/imports/startup/server/index.js @@ -0,0 +1 @@ +import '/imports/api/users/methods.js'; diff --git a/imports/ui/pages/RegisterPage.jsx b/imports/ui/pages/RegisterPage.jsx index 58367fd..187515f 100644 --- a/imports/ui/pages/RegisterPage.jsx +++ b/imports/ui/pages/RegisterPage.jsx @@ -30,14 +30,10 @@ export default class RegisterPage extends Component{ window.alert("Please fill up all fields"); return; } - if(data.code != 'army101'){ - alert("Code is wrong!"); - return; - } Meteor.call("user.create", data, function(error, result){ if(error){ console.log("error", error); - window.alert('Error! Please contact admin.') + window.alert(error.message) } if(result){ console.log(result); diff --git a/server/main.js b/server/main.js index 31a9e0e..a24e704 100644 --- a/server/main.js +++ b/server/main.js @@ -1,5 +1,7 @@ import { Meteor } from 'meteor/meteor'; +import '/imports/startup/server/index.js' + Meteor.startup(() => { // code to run on server at startup }); From 464ceb0c350074d4bdc15654791901e0ec9b1bf7 Mon Sep 17 00:00:00 2001 From: Mostafiz Rahman Date: Tue, 8 Aug 2017 11:45:51 +0600 Subject: [PATCH 4/5] homepage button fixed --- client/main.css | 12 +++++++ imports/ui/components/SampleComponent.jsx | 43 +++++++++++++++++++---- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/client/main.css b/client/main.css index 9448cb3..b0a2da5 100644 --- a/client/main.css +++ b/client/main.css @@ -153,3 +153,15 @@ body{ padding-bottom: 10px; display: inline-block; } + + + +/************************************ others *************************************/ +.dropdownContent{ + margin-bottom: 15px; +} + +.actionButtonContainer .button{ + margin: 20px auto 0; + display: block; +} diff --git a/imports/ui/components/SampleComponent.jsx b/imports/ui/components/SampleComponent.jsx index edd1de1..93618b9 100644 --- a/imports/ui/components/SampleComponent.jsx +++ b/imports/ui/components/SampleComponent.jsx @@ -3,20 +3,51 @@ import React, { Component } from 'react'; export default class SampleComponent extends Component{ constructor(props){ super(props); - - this.state = { - count: 0, - } } componentDidMount(){ - // initiate something + $('.ui.dropdown').dropdown() + } + + handleChange(name, e) { + let val = parseInt(e.target.value); + if(val.isNan() || val == -1) return; + + let change = {} + change[name] = val + this.setState(change) + } + + handleSubmit(){ + } render(){ + console.log(this.state) return(
-

Hello! This is your component!

+
+

Select Net Type

+
+ + +
+ +
+
+
) } From 9c5e0c741f0ddbfc90c30df288904fd663a0f2e9 Mon Sep 17 00:00:00 2001 From: Mostafiz Rahman Date: Tue, 8 Aug 2017 21:01:14 +0600 Subject: [PATCH 5/5] navigation and cardview page done --- client/main.css | 131 ++++++++++++++++++++++ imports/ui/components/HomeCard.jsx | 34 ++++++ imports/ui/components/SampleComponent.jsx | 22 +++- imports/ui/pages/HomeCardPage.jsx | 15 +++ 4 files changed, 199 insertions(+), 3 deletions(-) create mode 100644 imports/ui/components/HomeCard.jsx create mode 100644 imports/ui/pages/HomeCardPage.jsx diff --git a/client/main.css b/client/main.css index b0a2da5..c129e63 100644 --- a/client/main.css +++ b/client/main.css @@ -165,3 +165,134 @@ body{ margin: 20px auto 0; display: block; } + + + +/************************************ HOME CARD ************************************/ + +.complainContainer{ + width: 90%; + margin: 20px auto; + background: #fff; + border-radius: 5px; + box-shadow: 2px 2px 4px #9FA4A8; + padding: 20px; + position: relative; + cursor: pointer; +} +.complainContainer03{ + width: 90%; + margin: 0px auto; + background: #fff; + padding: 20px; + position: relative; + border-bottom: 1px solid #ddd; + color: #757575; +} +.complainContainer03:first-child{ + margin-top: 20px; +} +.complainContainer03:last-child{ + margin-bottom: 20px; +} +.complainContainer02{ + width: 90%; + margin: 20px auto 20px; + background: #fff; + border-radius: 2px; + box-shadow: 0px 1px 4px rgba(0,0,0,0.14); + padding: 20px; + position: relative; +} +.complainContainer > img, +.complainContainer02 > img{ + max-height: 60px; + max-width: 60px; + border-radius: 50%; + float: left; + margin: 0px 20px 10px 0px; +} +.complainContainer > h3{ + margin: 0px 0px 10px; +} +.complainContainer02 > h3{ + margin: 0px; +} +.rightFloatedIcon{ + float: right; + margin-left: 20px; +} +.complainItems{ + float: left; +} +.complainItems span, +.complainItems a{ + margin-right: 10px; + color: #365C7A; + cursor: pointer; +} +.endTimeIndicator{ + color: #FF4081; + float: right; +} +.votingOptions{ + padding-left: 50px; +} +.votingOptions li{ + padding-bottom: 5px; + margin-bottom: 5px; + border-bottom: 1px solid #eee; +} +.votingOptions li:last-child{ + border: 0; +} +.votingOptions li:last-child a{ + color: #333; + margin-left: 30px; +} +.votingOptions li:last-child a:hover{ + text-decoration: underline; +} +.perticipatorOptions{ + padding-left: 50px; + color: #FF9800; + list-style-type: disc; +} +.perticipatorOptions li span{ + color: #333; +} +.threadRemoveIcon{ + position: absolute; + right: 10px; + top: 10px; +} +.complainAddBtn{ + position: fixed; + bottom: 5vh; + right: 2.5vw; + z-index: 999; +} +.complainInputContainer{ + width: 60%; + margin: 0px auto; +} +.complainInput{ + width: 100%; + padding: 7px 10px; + border: 0px; + border-bottom: 1px solid #ddd; + margin: 10px 0px; + resize: none; + transition: all 0.3s; +} +.complainInput:focus{ + border-bottom: 2px solid #026DB5; +} +.complainInputContainer li i{ + color: rgba(0,0,0,.87); + margin-right: 15px; +} +.modalHeader{ + background: #F7F7F7 !important; + text-align: center; +} diff --git a/imports/ui/components/HomeCard.jsx b/imports/ui/components/HomeCard.jsx new file mode 100644 index 0000000..4549e84 --- /dev/null +++ b/imports/ui/components/HomeCard.jsx @@ -0,0 +1,34 @@ +import React, { Component } from 'react'; + + +import HomeCardPage from '/imports/ui/pages/HomeCardPage.jsx'; + + +export default class HomeCard extends React.Component{ + constructor(props){ + super(props); + } + + render(){ + console.log(this.props) + return( +
+ + +

Complain title goes here

+

+ 5:05 pm + 11 replies + +

+
+

+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +

+ +
+ ) + } +} diff --git a/imports/ui/components/SampleComponent.jsx b/imports/ui/components/SampleComponent.jsx index 93618b9..5fea28f 100644 --- a/imports/ui/components/SampleComponent.jsx +++ b/imports/ui/components/SampleComponent.jsx @@ -1,8 +1,16 @@ import React, { Component } from 'react'; +import { mount } from 'react-mounter'; + +import HomeCardPage from '/imports/ui/pages/HomeCardPage.jsx'; export default class SampleComponent extends Component{ constructor(props){ super(props); + + this.state = { + radio_net: -1, + cmd_net: -1, + } } componentDidMount(){ @@ -11,7 +19,7 @@ export default class SampleComponent extends Component{ handleChange(name, e) { let val = parseInt(e.target.value); - if(val.isNan() || val == -1) return; + if(val == -1) return; let change = {} change[name] = val @@ -19,7 +27,15 @@ export default class SampleComponent extends Component{ } handleSubmit(){ - + let x = { + radio_net: this.state.radio_net, + cmd_net: this.state.cmd_net, + } + if(x.radio_net == -1 || x.cmd_net == -1){ + alert('Please select values from both dropdowns') + return; + } + mount(HomeCardPage, x) } render(){ @@ -41,7 +57,7 @@ export default class SampleComponent extends Component{
- diff --git a/imports/ui/pages/HomeCardPage.jsx b/imports/ui/pages/HomeCardPage.jsx new file mode 100644 index 0000000..a081b36 --- /dev/null +++ b/imports/ui/pages/HomeCardPage.jsx @@ -0,0 +1,15 @@ +import React, { Component } from 'react'; + +import SampleLayout from '/imports/ui/layouts/SampleLayout.jsx'; +import HomeCard from '/imports/ui/components/HomeCard.jsx'; + +export default class HomeCardPage extends Component{ + + render(){ + console.log("SamplePage being rendered"); + + return( + }/> + ); + } +}