Include compatibility and completed site layout
@ -32,7 +32,7 @@ services:
|
|||||||
- postgres
|
- postgres
|
||||||
- server
|
- server
|
||||||
ports:
|
ports:
|
||||||
- "3002:3000"
|
- "13002:3000"
|
||||||
environment:
|
environment:
|
||||||
- CHOKIDAR_USEPOLLING=true
|
- CHOKIDAR_USEPOLLING=true
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
|
@ -32,6 +32,10 @@ body{
|
|||||||
color:#fff;
|
color:#fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.profile:hover{
|
||||||
|
background-color:#6666AA;
|
||||||
|
}
|
||||||
|
|
||||||
.header{
|
.header{
|
||||||
font: 32px ACROTSRG;
|
font: 32px ACROTSRG;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -55,6 +59,10 @@ body{
|
|||||||
0 0 150px #0ff;
|
0 0 150px #0ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.shadowImage {
|
||||||
|
box-shadow: 0px 0px 30px #fff;
|
||||||
|
}
|
||||||
|
|
||||||
.glowLight {
|
.glowLight {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-shadow:
|
text-shadow:
|
||||||
|
@ -53,20 +53,258 @@ const ChooseFlavorLoadingText = () => {
|
|||||||
return strings[Math.floor(Math.random()*strings.length)]
|
return strings[Math.floor(Math.random()*strings.length)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const GetAvatar=(username)=>{
|
||||||
|
return "https://ui-avatars.com/api/?name="+username+"&rounded=true";
|
||||||
|
}
|
||||||
|
const GetSign=(birth_year,birth_month,birth_day,birth_minute,birth_hour)=>{
|
||||||
|
if (birth_month===2) {
|
||||||
|
if (birth_day<21) {
|
||||||
|
return 12;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===3) {
|
||||||
|
if (birth_day<20) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===4) {
|
||||||
|
if (birth_day<21) {
|
||||||
|
return 2;
|
||||||
|
} else {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===5) {
|
||||||
|
if (birth_day<21) {
|
||||||
|
return 3;
|
||||||
|
} else {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===6) {
|
||||||
|
if (birth_day<23) {
|
||||||
|
return 4;
|
||||||
|
} else {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===7) {
|
||||||
|
if (birth_day<23) {
|
||||||
|
return 5;
|
||||||
|
} else {
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===8) {
|
||||||
|
if (birth_day<23) {
|
||||||
|
return 6;
|
||||||
|
} else {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===9) {
|
||||||
|
if (birth_day<23) {
|
||||||
|
return 7;
|
||||||
|
} else {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===10) {
|
||||||
|
if (birth_day<22) {
|
||||||
|
return 8;
|
||||||
|
} else {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===11) {
|
||||||
|
if (birth_day<22) {
|
||||||
|
return 9;
|
||||||
|
} else {
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===0) {
|
||||||
|
if (birth_day<20) {
|
||||||
|
return 10;
|
||||||
|
} else {
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
if (birth_month===1) {
|
||||||
|
if (birth_day<19) {
|
||||||
|
return 11;
|
||||||
|
} else {
|
||||||
|
return 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1; //Defaults to Aries...
|
||||||
|
}
|
||||||
|
|
||||||
|
const GetSignByUser = (username,users)=>{
|
||||||
|
var user = users.filter(((user)=>user.username===username))[0];
|
||||||
|
return GetSign(user.birth_year,user.birth_month,user.birth_day,user.birth_minute,user.birth_hour)
|
||||||
|
}
|
||||||
|
|
||||||
|
const GetSignData = (username,users,signs)=>{
|
||||||
|
var user = users.filter(((user)=>user.username===username))[0];
|
||||||
|
return signs.filter((sign)=>sign.id===GetSign(user.birth_year,user.birth_month,user.birth_day,user.birth_minute,user.birth_hour))[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
const GetCompatibleMembers = (username,users,signs,compatibility)=>{
|
||||||
|
//Look for your sign data.
|
||||||
|
var myData = GetSignData(username,users,signs)
|
||||||
|
var compatibilityData = compatibility.filter((c)=>
|
||||||
|
{
|
||||||
|
return c.signid===myData.id && c.compatible
|
||||||
|
})
|
||||||
|
//See if compatible members exist.
|
||||||
|
var compatibleIds = []
|
||||||
|
for (var compat of compatibilityData) {
|
||||||
|
compatibleIds.push(compat.compatiblesignid)
|
||||||
|
}
|
||||||
|
//console.log(compatibleIds)
|
||||||
|
var compatibleUsers = []
|
||||||
|
users.forEach((user)=>{
|
||||||
|
if (compatibleIds.includes(GetSignData(user.username,users,signs).id)) {
|
||||||
|
compatibleUsers.push(user.username)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
//console.log(compatibleUsers)
|
||||||
|
return compatibleUsers
|
||||||
|
}
|
||||||
|
|
||||||
|
const RandomDarkColor = (username)=>{
|
||||||
|
if (username.length>=3) {
|
||||||
|
return Math.floor((username.charCodeAt(0)*7%16)/2).toString(16)+(username.charCodeAt(0)%16).toString(16)+Math.floor((username.charCodeAt(1)*7%16)/2).toString(16)+(username.charCodeAt(1)%16).toString(16)+Math.floor((username.charCodeAt(2)*7%16)/2).toString(16)+(username.charCodeAt(2)%16).toString(16)
|
||||||
|
} else {
|
||||||
|
return "646968";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Member =(p)=>{
|
||||||
|
const [additionalText,setAdditionalText] = useState("");
|
||||||
|
return (
|
||||||
|
<div className="col-md-4 border fadein profile">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-12">
|
||||||
|
<img src={"https://ui-avatars.com/api/?name="+p.username+"&rounded=true&background="+RandomDarkColor(p.username)}/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-md-12">
|
||||||
|
{p.username}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{additionalText}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const UserPage = ()=>{
|
const UserPage = ()=>{
|
||||||
const [text,setText] = useState("");
|
const [text,setText] = useState("");
|
||||||
|
const [dailytext,setDailyText] = useState("");
|
||||||
|
const [compatibilitytext,setCompatibilityText] = useState("");
|
||||||
const [page,setPage] = useState(null);
|
const [page,setPage] = useState(null);
|
||||||
switch (page) {
|
const [sign,setSign] = useState("");
|
||||||
default:{
|
const [careerRating,setCareerRating] = useState(0);
|
||||||
return (<div className="container stars border rounded shadow-sm">
|
const [wealthRating,setWealthRating] = useState(0);
|
||||||
<div className="row">
|
const [loveRelationshipRating,setLoveRelationshipRating] = useState(0);
|
||||||
|
const [healthRating,setHealthRating] = useState(0);
|
||||||
|
const [update,setUpdate] = useState(false);
|
||||||
|
const [users,setUsers] = useState([]);
|
||||||
|
const [signs,setSigns] = useState([]);
|
||||||
|
const [compatibility,setCompatibility] = useState([]);
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
axios.get(REMOTE_ADDR+"/users/view").then((data)=>{
|
||||||
|
setUsers(data.data)
|
||||||
|
return axios.get(REMOTE_ADDR+"/signs/view")
|
||||||
|
})
|
||||||
|
.then((data)=>{setSigns(data.data)
|
||||||
|
return axios.get(REMOTE_ADDR+"/compatibility/view")
|
||||||
|
})
|
||||||
|
.then((data)=>{
|
||||||
|
setCompatibility(data.data)
|
||||||
|
})
|
||||||
|
.then(()=>{
|
||||||
|
setPage("USERHOME");
|
||||||
|
})
|
||||||
|
},[update]);
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
if (users.length>0 && signs.length>0) {
|
||||||
|
//console.log("Users: "+users)
|
||||||
|
axios.get("http://45.33.13.215/astronomy/"+GetSignData(getCookie("username"),users,signs).sign_name).then((data)=>{
|
||||||
|
setDailyText(data.data.horoscope)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},[users,signs]);
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
if (users.length>0 && signs.length>0 && compatibility.length>0) {
|
||||||
|
var finalText = GetCompatibleMembers(getCookie("username"),users,signs,compatibility).reverse().map((member)=>{
|
||||||
|
return <Member username={member} users={users} signs={signs} compatibility={compatibility}/>
|
||||||
|
})
|
||||||
|
setCompatibilityText(finalText)
|
||||||
|
}
|
||||||
|
},[users,signs,compatibility])
|
||||||
|
|
||||||
|
|
||||||
|
const header = <div className="row">
|
||||||
<div className="col-md-12 header text-center">
|
<div className="col-md-12 header text-center">
|
||||||
<span className="glowHeavy animated fadein">{getCookie("username")}'s ASTRONOMY</span>
|
<span className="glowHeavy animated fadein">{getCookie("username")}'s ASTRONOMY</span>
|
||||||
</div>
|
</div>
|
||||||
|
</div>;
|
||||||
|
const dailyheader = <div className="row pt-5">
|
||||||
|
<div className="col-md-12 header text-center">
|
||||||
|
<span className="glowHeavy animated fadein">{getCookie("username")}'s DAILY HOROSCOPE</span>
|
||||||
|
</div>
|
||||||
|
</div>;
|
||||||
|
const compatibilityheader = <div className="row pt-5">
|
||||||
|
<div className="col-md-12 header text-center">
|
||||||
|
<span className="glowHeavy animated fadein">{getCookie("username")}'s COMPATIBILITY</span>
|
||||||
|
</div>
|
||||||
|
</div>;
|
||||||
|
|
||||||
|
switch (page) {
|
||||||
|
case "USERHOME":{
|
||||||
|
return (<div className="pb-3 container stars border rounded shadow-sm">
|
||||||
|
{header}
|
||||||
|
<div className="row pt-2 pb-2">
|
||||||
|
<div className="col-md-12 text-center">
|
||||||
|
{GetSignData(getCookie("username"),users,signs).sign_name}
|
||||||
|
<br/>
|
||||||
|
<img width={64} src={require('./astrology_signs/'+GetSignByUser(getCookie("username"),users)+'.png')}/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{dailyheader}
|
||||||
|
<div className="row pt-2 pb-2">
|
||||||
|
<div className="col-md-12 text-center">
|
||||||
|
{dailytext}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{compatibilityheader}
|
||||||
|
<div className="row pt-2 pb-2">
|
||||||
|
<div className="col-md-12 text-center">
|
||||||
|
<div className="row text-center">
|
||||||
|
{compatibilitytext}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>);
|
||||||
|
}break;
|
||||||
|
default:{
|
||||||
|
return (<div className="pb-3 container stars border rounded shadow-sm">
|
||||||
|
{header}
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="col-md-12 text-center">
|
<div className="col-md-12 text-center">
|
||||||
{text}
|
<span className="slowblink">
|
||||||
|
{ChooseFlavorLoadingText()}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>);
|
</div>);
|
||||||
|
BIN
frontend/src/astrology_signs/1.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
frontend/src/astrology_signs/10.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
frontend/src/astrology_signs/11.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
frontend/src/astrology_signs/12.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
frontend/src/astrology_signs/2.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
frontend/src/astrology_signs/3.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
frontend/src/astrology_signs/4.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
frontend/src/astrology_signs/5.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
frontend/src/astrology_signs/6.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
frontend/src/astrology_signs/7.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
frontend/src/astrology_signs/8.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
frontend/src/astrology_signs/9.png
Normal file
After Width: | Height: | Size: 12 KiB |