You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

394 lines
11 KiB

2 years ago
// Окно на главном меню с рекомендациями, новостями
import React from "react";
import ReactDOM from "react-dom";
2 years ago
//import Scard from "../Componets/Cards/smallCard";
import FullCard from "../Componets/Cards/fullCard";
//import NavBar from "../Componets/NavList/navList";
//import div from "@mui/material/div";
2 years ago
import Widget from "../Componets/WCard/widget";
import "./style.css";
2 years ago
import Accordion from "../Componets/Acardion";
import TabsView from "../Componets/Tabs/tabs";
import {
ProSidebar,
Menu,
MenuItem,
SubMenu,
SidebarHeader,
//SidebarFooter,
SidebarContent
} from "react-pro-sidebar";
export default class MainPage extends React.Component {
2 years ago
VVSB = false;
c = "column__list";
ui = {
menu: {
text: "Меню"
},
catalog: {
text: "Каталог"
}
};
menuBtn = {
all: {
borderBottom: "1px solid #AAA",
background: "#1d1d1d",
color: "#FFF",
textDecoration: "none",
marginLeft: "0px",
padding: " 10px",
borderRight: "1px solid #FFF",
cursor: "pointer",
position: "ralative",
left: "-40px",
borderRadius: "0px 20px 0px 20px",
left: "-20px"
//borderRadius: "10px 20px 0px 0px"
},
active: {
background: "blue",
//color: "#FFF",
textDecoration: "none",
marginLeft: "0px",
padding: " 10px",
borderRight: "1px solid #FFF",
cursor: "pointer",
position: "ralative",
left: "-40px"
}
};
menuButton = [
{ id: "all", text: "Рекомендации", handler: () => this.mainP() },
{
id: "inclides",
text: "Устаовленые",
handler: () => this.mainP()
},
{
id: "catalog",
text: "Каталог",
handler: () => this.viewCatalog()
}
];
active = "Рекомендации";
slideNum = 1;
checkAlias(text) {
//console.log( "aliases:\t" + this.props.aliases)
//return text;
if (text in this.props.aliases) {
return this.props.aliases[text];
//console.log(this.props.aliases[text]);
} else {
return text;
//console.log(e);
}
}
viewCatalog() {
return (
<div className={this.c}>
{Object.keys(this.props.category).map((k, i) => (
<Widget>
<Accordion
style={{
borderRadius: "1.4em",
background: "#1d1d1d",
color: "#FFF",
border: "5px outset rgba(0, 255, 100, 0.5)",
textAlign: "center"
}}
// Список рекомендуемых пакетов в категории
title={
this.checkAlias(k) + "\t\t" + this.props.category[k].length
}
className="column__list"
>
<div
style={{
overflowX: "scroll",
maxHeight: "375px"
//position: "relative"
//background: "#2e323f"
}}
>
{/*}
title={
this.checkAlias(k) +
" (" +
this.props.category[k].length +
")"
}
>*/}
{this.props.category[k].map((pn, j) => (
<div
className="card__item"
style={{
borderBottom: "1px solid #FFF",
//height: "55px",
//margin: "10px",
background: "#1d1d1d",
color: "#FFF"
//background: "#FFF"
//height:"75px"
}}
onClick={() => this.viewInfo(this.props.category[k][i])}
>
<img
className="card__img"
style={{
width: "32px",
height: "32px"
//background: "#CCC"
}}
//src={this.props.icons[pn.Name.split("/")[1]]}
//alt={pn.Name.split("/")[1]}
/>
<div style={{ marginLeft: "10px" }}>
<b>
{" "}
<span
className="card__title"
style={{
color: "red",
color: "#FFF",
//width: "100vw",
overflow: "clip",
fontSize: "1.1em"
}}
key={pn.Name}
>
{pn}
</span>
</b>
</div>
</div>
))}
</div>
</Accordion>
</Widget>
))}
</div>
);
}
2 years ago
TitleView() {
try {
if (document.getElementById("pTitle").textContent !== "Главная") {
document.getElementById("pTitle").textContent = "Главная";
}
} catch (e) {
console.log(e);
}
}
mainP() {
this.TitleView();
return (
<div
id="HomePage"
className=""
style={{ overflowY: "scroll", paddingBottom: "60px" }}
>
2 years ago
<div
className={this.c}
style={{
//marginTop: "35px",
overflowY: "scroll"
2 years ago
//display: "inline-",
//float: "left",
//border: "1px solid #CCC",
//borderRadius: "6px",
//boxShadow: "3px 4px 10px #999"
}}
>
<Widget>
<h3
style={{
borderBottom: "1px solid #AAA",
background: "#1d1d1d",
color: "#FFF"
}}
>
{" "}
Новости
</h3>
2 years ago
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
</Widget>
<Widget
className="column__list"
style={{
marginTop: "35px",
overflow: "clip",
display: "inline-",
//float: "left",
//border: "1px solid #CCC",
//borderRadius: "6px",
boxShadow: "3px 4px 10px #999"
}}
>
<h3
style={{
borderBottom: "1px solid #0F0",
background: "#1d1d1d",
color: "#FFF"
}}
>
Уведомления
</h3>
2 years ago
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
<li>TEST</li>
</Widget>
</div>
<div className="">
<div className={this.c}>
{Object.keys(this.props.rec).map((k) => (
<Widget>
<Accordion
style={{
borderRadius: "1.4em",
background: "#1d1d1d",
color: "#FFF",
border: "5px outset rgba(0, 255, 100, 0.5)",
textAlign: "center"
}}
2 years ago
// Список рекомендуемых пакетов в категории
title={k + "\t\t" + this.props.rec[k].length}
className="column__list"
>
<div
style={{
overflowX: "scroll",
maxHeight: "375px"
//position: "relative"
//background: "#2e323f"
}}
>
{this.props.rec[k].map((pn, i) => (
<div
className="card__item"
style={{
borderBottom: "1px solid #FFF",
//height: "55px",
//margin: "10px",
background: "#1d1d1d",
color: "#FFF"
2 years ago
//background: "#FFF"
//height:"75px"
}}
onClick={() => this.viewInfo(this.props.rec[k][i])}
>
<img
className="card__img"
style={{
width: "32px",
height: "32px"
//background: "#CCC"
}}
src={this.props.icons[pn.Name.split("/")[1]]}
alt={pn.Name.split("/")[1]}
/>
<div style={{ marginLeft: "10px" }}>
<b>
{" "}
<span
className="card__title"
style={{
color: "red",
//width: "100vw",
2 years ago
overflow: "clip",
fontSize: "1.1em"
}}
key={pn.Name}
>
{pn.Name.split("/")[1]}
</span>
</b>
<div style={{ overflow: "clip" }}>
{pn.Description}
</div>
</div>
</div>
))}
</div>
</Accordion>
</Widget>
))}
<div
id="info"
style={{
position: "fixed",
top: "0px",
left: this.posiLetf,
width: "100%",
height: "100%",
background: "#2e323f",
display: "none"
}}
></div>
</div>
</div>
</div>
);
}
viewSideBar() {
if (!this.VVSB) {
document.getElementById("MainContent").style.paddingLeft = "300px";
2 years ago
document.getElementById("btn-toggle").style.float = "right";
document.getElementById("navBar").style.left = "0px";
this.VVSB = true;
} else {
document.getElementById("MainContent").style.paddingLeft = "0px";
document.getElementById("navBar").style.left = "-280px";
this.VVSB = false;
}
}
2 years ago
viewInfo(pkg) {
//onClick={() => this.props.ViewPackageInfo(this.props.rec[k][i])}
document.getElementById("backBtn").style.display = "block";
2 years ago
//document.getElementById("pTitle").textContent = pkg.Name.split("/")[1];
document.getElementById("container").style.display = "none";
document.getElementById("containerInfo").style.display = "block";
ReactDOM.render(
<FullCard
PackageName={pkg}
PropMain={this.props.rec}
icons={this.props.icons}
useDes={this.props.useDes}
Ipkg={this.props.Ipkg}
/>,
2 years ago
document.getElementById("containerInfo")
);
}
2 years ago
render() {
return (
<div id="HomePage">
{this.TitleView()}
<TabsView activeDefault={0} menuButton={this.menuButton} />
<div id="listOve">{this.menuButton[0].handler()}</div>
</div>
);
}
}