Browse Source

oh well it works

yeungalan 5 năm trước cách đây
mục cha
commit
1970b2534f
4 tập tin đã thay đổi với 451 bổ sung8 xóa
  1. 430 0
      photo/src/MainPanel.new
  2. 0 3
      photo/src/MiddlePanel.js
  3. 20 5
      photo/src/SearchAppMenu.js
  4. 1 0
      photo/src/index.js

+ 430 - 0
photo/src/MainPanel.new

@@ -0,0 +1,430 @@
+import React, { Component } from "react";
+import { render } from "react-dom";
+import { makeStyles, useTheme, withStyles } from '@material-ui/core/styles';
+import AppBar from '@material-ui/core/AppBar';
+import Toolbar from '@material-ui/core/Toolbar';
+import Typography from '@material-ui/core/Typography';
+import Button from '@material-ui/core/Button';
+import IconButton from '@material-ui/core/IconButton';
+import MenuIcon from '@material-ui/icons/Menu';
+import clsx from 'clsx';
+import Drawer from '@material-ui/core/Drawer';
+import List from '@material-ui/core/List';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import Divider from '@material-ui/core/Divider';
+import ChevronLeftIcon from '@material-ui/icons/ChevronLeft';
+import ChevronRightIcon from '@material-ui/icons/ChevronRight';
+import ListItem from '@material-ui/core/ListItem';
+import ListItemIcon from '@material-ui/core/ListItemIcon';
+import ListItemText from '@material-ui/core/ListItemText';
+import InboxIcon from '@material-ui/icons/MoveToInbox';
+import MailIcon from '@material-ui/icons/Mail';
+import ImageList from './imageList';
+import PhotoIcon from '@material-ui/icons/Photo';
+import ShareIcon from '@material-ui/icons/Share';
+import PhotoAlbumIcon from '@material-ui/icons/PhotoAlbum';
+import LibraryAddCheckIcon from '@material-ui/icons/LibraryAddCheck';
+import Grid from '@material-ui/core/Grid';
+import DeleteIcon from '@material-ui/icons/Delete';
+import CloudUploadIcon from '@material-ui/icons/CloudUpload';
+import HelpOutlineIcon from '@material-ui/icons/HelpOutline';
+import SettingsIcon from '@material-ui/icons/Settings';
+import Avatar from '@material-ui/core/Avatar';
+import Icon from '@material-ui/core/Icon';
+import AddCircle from '@material-ui/icons/AddCircle';
+import CloudIcon from '@material-ui/icons/Cloud';
+import LinearProgress from '@material-ui/core/LinearProgress';
+import Modal from '@material-ui/core/Modal';
+import Backdrop from '@material-ui/core/Backdrop';
+import Fade from '@material-ui/core/Fade';
+import ListItemAvatar from '@material-ui/core/ListItemAvatar';
+import ImageIcon from '@material-ui/icons/Image';
+import WorkIcon from '@material-ui/icons/Work';
+import BeachAccessIcon from '@material-ui/icons/BeachAccess';
+import Paper from '@material-ui/core/Paper';
+import TodayIcon from '@material-ui/icons/Today';
+import CropOriginalIcon from '@material-ui/icons/CropOriginal';
+import CameraIcon from '@material-ui/icons/Camera';
+import LocationOnIcon from '@material-ui/icons/LocationOn';
+import CloseIcon from '@material-ui/icons/Close';
+import ListSubheader from '@material-ui/core/ListSubheader';
+import Fab from '@material-ui/core/Fab';
+import AddIcon from '@material-ui/icons/Add';
+import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';
+import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';
+import GridList from '@material-ui/core/GridList';
+import GridListTile from '@material-ui/core/GridListTile';
+
+const drawerWidth = 240;
+
+const BorderLinearProgress = withStyles((theme) => ({
+    colorPrimary: {
+        backgroundColor: theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],
+    },
+    bar: {
+        borderRadius: 5,
+        backgroundColor: '#1a90ff',
+    },
+}))(LinearProgress);
+
+const useStyles = makeStyles((theme) => ({
+    root: {
+        flexGrow: 1,
+    },
+    menuButton: {
+        marginRight: theme.spacing(2),
+    },
+    title: {
+        flexGrow: 1,
+    },
+    toolbar: {
+        display: 'flex',
+        alignItems: 'center',
+        justifyContent: 'flex-end',
+        padding: theme.spacing(0, 1),
+        // necessary for content to be below app bar
+        ...theme.mixins.toolbar,
+    },
+    root: {
+        display: 'flex',
+    },
+    appBar: {
+        zIndex: theme.zIndex.drawer + 1,
+        transition: theme.transitions.create(['width', 'margin'], {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.leavingScreen,
+        }),
+    },
+    appBarShift: {
+        marginLeft: drawerWidth,
+        width: `calc(100% - ${drawerWidth}px)`,
+        transition: theme.transitions.create(['width', 'margin'], {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.enteringScreen,
+        }),
+    },
+    menuButton: {
+        marginRight: 36,
+    },
+    hide: {
+        display: 'none',
+    },
+    drawer: {
+        width: drawerWidth,
+        flexShrink: 0,
+        whiteSpace: 'nowrap',
+    },
+    drawerOpen: {
+        width: drawerWidth,
+        transition: theme.transitions.create('width', {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.enteringScreen,
+        }),
+    },
+    drawerClose: {
+        transition: theme.transitions.create('width', {
+            easing: theme.transitions.easing.sharp,
+            duration: theme.transitions.duration.leavingScreen,
+        }),
+        overflowX: 'hidden',
+        width: theme.spacing(7) + 1,
+        [theme.breakpoints.up('sm')]: {
+            width: theme.spacing(9) + 1,
+        },
+    },
+    toolbar: {
+        display: 'flex',
+        alignItems: 'center',
+        justifyContent: 'flex-end',
+        padding: theme.spacing(0, 1),
+        // necessary for content to be below app bar
+        ...theme.mixins.toolbar,
+    },
+    content: {
+        flexGrow: 1,
+        padding: theme.spacing(3),
+    },
+    modal: {
+        display: 'flex',
+        alignItems: 'center',
+        justifyContent: 'center',
+    },
+    paper: {
+        backgroundColor: theme.palette.background.paper,
+        width: '100%',
+        height: '100%',
+        //boxShadow: theme.shadows[5],
+        //padding: theme.spacing(2, 4, 3),
+    },
+    fabL: {
+        position: 'absolute',
+        bottom: '50%',
+        left: theme.spacing(2),
+    },
+    fabR: {
+        position: 'absolute',
+        bottom: '50%',
+        //left: `calc(95% - ${theme.spacing(2)}px)`,
+        //right: theme.spacing(2),
+        right: `calc(${theme.spacing(2)}px + ( 100vw / 4 ))`,
+        Mcontainer: {
+            display: "flex",
+            flexWrap: "wrap",
+            position: "absolute",
+            top: 0,
+            left: 0,
+            height: "100%",
+            width: "100%",
+            alignItems: "center"
+        },
+    },
+}));
+
+class MainPanel extends Component {
+    constructor() {
+        super();
+        this.state = {
+            name: "React",
+            showHideDemo1: false,
+            showHideDemo2: false,
+            showHideDemo3: false
+        };
+        this.hideComponent = this.hideComponent.bind(this);
+    }
+
+
+    hideComponent(name) {
+        console.log(name);
+        switch (name) {
+            case "showHideDemo1":
+                this.setState({ showHideDemo1: !this.state.showHideDemo1 });
+                break;
+            case "showHideDemo2":
+                this.setState({ showHideDemo2: !this.state.showHideDemo2 });
+                break;
+            case "showHideDemo3":
+                this.setState({ showHideDemo3: !this.state.showHideDemo3 });
+                break;
+        }
+    }
+
+    render() {
+        
+//const classes = useStyles();
+//const theme = useTheme();
+        const { classes } = this.props;
+        const { theme } = this.props;
+const [open, setOpen] = this.useState(false);
+        const { showHideDemo1, showHideDemo2, showHideDemo3 } = this.state;
+
+        const handleDrawerOpen = () => {
+            setOpen(true);
+        };
+
+        const handleDrawerClose = () => {
+            setOpen(false);
+        };
+
+        const [Imageopen, setImageOpen] = React.useState(false);
+
+        const handleImageOpen = () => {
+            setImageOpen(true);
+        };
+
+        const handleImageClose = () => {
+            setImageOpen(false);
+        };
+
+        return (
+            <div className={classes.root}>
+                <AppBar position="fixed" style={{ background: '#2196f3' }} className={
+                    clsx(classes.appBar, {
+                        [classes.appBarShift]: open,
+                    })
+                }>
+                    <Toolbar >
+                        <IconButton edge="start" onClick={handleDrawerOpen} className={
+                            clsx(classes.menuButton, {
+                                [classes.hide]: open,
+                            })
+                        } className={classes.menuButton} color="inherit" aria-label="menu">
+                            <MenuIcon />
+                        </IconButton>
+                        <Typography variant="h6" className={classes.title}>
+                            谷狗相薄
+                    </Typography>
+                        <Button variant="contained" startIcon={<CloudUploadIcon />} type="button" onClick={handleImageOpen}>上載</Button>
+                        <IconButton style={{ color: '#ffffff' }} aria-label="delete">
+                            <HelpOutlineIcon />
+                        </IconButton>
+                        <IconButton style={{ color: '#ffffff' }} aria-label="delete">
+                            <SettingsIcon />
+                        </IconButton>
+                        <Avatar alt="Remy Sharp" src="/static/images/avatar/1.jpg" />
+                    </Toolbar>
+                </AppBar>
+                <Drawer
+                    variant="permanent"
+                    className={
+                        clsx(classes.drawer, {
+                            [classes.drawerOpen]: open,
+                            [classes.drawerClose]: !open,
+                        })
+                    }
+                    classes={
+                        {
+                            paper: clsx({
+                                [classes.drawerOpen]: open,
+                                [classes.drawerClose]: !open,
+                            }),
+                        }
+                    }>
+                    <div className={classes.toolbar}>
+                        <IconButton onClick={handleDrawerClose}>
+                            {theme.direction === 'ltr' ? <ChevronLeftIcon /> : <ChevronRightIcon />}
+                        </IconButton>
+                    </div>
+                    <Divider />
+                    <List>
+                        {['相片', '共享', '相簿', '實用工具'].map((text, index) => (
+                            <ListItem button key={text} onClick={() => this.hideComponent("showHideDemo1")}>
+                                <ListItemIcon>{index == 0 ? < PhotoIcon /> : index == 1 ? < ShareIcon /> : index == 2 ? < PhotoAlbumIcon /> : < LibraryAddCheckIcon />}</ListItemIcon>
+                                <ListItemText primary={text} />
+                            </ListItem>
+                        ))}
+                    </List>
+                    <Divider />
+                    <List>
+                        {['儲存空間'].map((text, index) => (
+                            <ListItem button key={text}>
+                                <ListItemIcon>{< CloudIcon />}</ListItemIcon>
+                                <ListItemText primary={text} secondary={<BorderLinearProgress variant="determinate" value={50} />} />
+                            </ListItem>
+                        ))}
+                    </List>
+                </Drawer>
+                <main className={classes.content}>
+                    <div className={classes.toolbar} />
+                    {showHideDemo1 && <ImageList />}
+                    <hr />
+                    {showHideDemo2 && <ImageList />}
+                    <hr />
+                    {showHideDemo3 && <ImageList />}
+                    <hr />
+                    <div>
+                        <button onClick={() => this.hideComponent("showHideDemo1")}>
+                            Click to hide Demo1 component
+          </button>
+                        <button onClick={() => this.hideComponent("showHideDemo2")}>
+                            Click to hide Demo2 component
+          </button>
+                        <button onClick={() => this.hideComponent("showHideDemo3")}>
+                            Click to hide Demo3 component
+          </button>
+                    </div>
+                </main>
+                <Modal
+                    aria-labelledby="transition-modal-title"
+                    aria-describedby="transition-modal-description"
+                    className={classes.modal}
+                    open={Imageopen}
+                    onClose={handleImageClose}
+                    closeAfterTransition
+                    BackdropComponent={Backdrop}
+                    BackdropProps={{
+                        timeout: 500,
+                    }}
+                >
+                    <Fade in={Imageopen}>
+                        <div className={classes.paper}>
+                            <Grid container spacing={0}>
+                                <Grid item xs={9}
+                                    style={{
+                                        alignItems: 'center',
+                                        alignContent: 'center',
+                                        backgroundColor: 'black',
+                                        height: '100vh',
+                                    }}
+                                    align="center"
+                                    justify="center"
+                                    direction="column"
+                                >
+                                    <Grid
+                                        container
+                                        spacing={0}
+                                        direction="column"
+                                        alignItems="center"
+                                        justify="center"
+                                        style={{ minHeight: '100vh' }}
+                                    >
+                                        <Grid item xs={12}>
+                                            <img src="./images/Q1_PHYS.jpeg"
+                                                style={{
+                                                    margin: "auto",
+                                                    maxHeight: "100vh",
+                                                    maxWidth: "100%",
+                                                }}
+
+                                            ></img>
+                                        </Grid>
+
+                                    </Grid>
+
+
+                                    <Fab color="inherit" aria-label="add" className={classes.fabL}>
+                                        <ArrowBackIosIcon />
+                                    </Fab>
+                                    <Fab color="inherit" aria-label="add" className={classes.fabR}>
+                                        <ArrowForwardIosIcon />
+                                    </Fab>
+                                </Grid>
+                                <Grid item xs={3}>
+                                    <Typography component="h5">
+                                        <IconButton aria-label="delete" type="button" onClick={handleImageClose}>
+                                            <CloseIcon />
+                                        </IconButton>
+                                    資訊
+                                </Typography>
+                                    <List
+                                        subheader={
+                                            <ListSubheader component="div" id="nested-list-subheader">
+                                                詳細資料
+                                         </ListSubheader>
+                                        }
+                                    >
+                                        <ListItem>
+                                            <ListItemIcon>
+                                                <TodayIcon />
+                                            </ListItemIcon>
+                                            <ListItemText primary="2016年7月14日" secondary="週六 下午5:43 GMT+08:00" />
+                                        </ListItem>
+                                        <ListItem>
+                                            <ListItemIcon>
+                                                <CropOriginalIcon />
+                                            </ListItemIcon>
+                                            <ListItemText primary="IMG_20160716_174348.jpg" secondary="12.8MP 3096×4128 1.6MB" />
+                                        </ListItem>
+                                        <ListItem>
+                                            <ListItemIcon>
+                                                <CameraIcon />
+                                            </ListItemIcon>
+                                            <ListItemText primary="Samsung GT-I9505" secondary="ƒ/2.2 1/33 4.2mm ISO125" />
+                                        </ListItem>
+                                        <ListItem>
+                                            <ListItemIcon>
+                                                <LocationOnIcon />
+                                            </ListItemIcon>
+                                            <ListItemText primary="中國广东省廣州市" secondary="概估位置" />
+                                        </ListItem>
+                                    </List>
+                                </Grid>
+                            </Grid>
+                        </div>
+                    </Fade>
+                </Modal>
+            </div>
+        );
+    }
+}
+
+export default MainPanel;

+ 0 - 3
photo/src/MiddlePanel.js

@@ -34,11 +34,8 @@ class MiddlePanel extends Component {
         return (
             <div>
                 {showHideDemo1 && <ImageList />}
-                <hr />
                 {showHideDemo2 && <ImageList />}
-                <hr />
                 {showHideDemo3 && <ImageList />}
-                <hr />
                 <div>
                     <button onClick={() => this.hideComponent("showHideDemo1")}>
                         Click to hide Demo1 component

+ 20 - 5
photo/src/SearchAppMenu.js

@@ -203,11 +203,25 @@ export default function ButtonAppBar() {
         setImageOpen(false);
     };
 
+    const [Imagelistopen, setImagelistOpen] = React.useState(false);
 
+    const handleImagelistOpen = () => {
+        setImagelistOpen(true);
+    };
+
+    const handleImagelistClose = () => {
+        setImagelistOpen(false);
+    };
+
+    const handleClick = value => () => {
+        console.log(value);
+        switch (value) {
+            case "相片":
+                setImagelistOpen(true);
+                break;
+        }
+    }
     //1
-    const chgPanel = () => {
-        new MiddlePanel().hideComponent("showHideDemo1");
-    }   
     return (
        
     
@@ -262,7 +276,7 @@ export default function ButtonAppBar() {
                     <Divider />
                     <List>
                         {['相片', '共享', '相簿', '實用工具'].map((text, index) => (
-                            <ListItem button key={text} onClick={chgPanel}>
+                            <ListItem button key={text} onClick={handleClick(text)}>
                                 <ListItemIcon>{index == 0 ? < PhotoIcon /> : index == 1 ? < ShareIcon /> : index == 2 ? < PhotoAlbumIcon /> : < LibraryAddCheckIcon />}</ListItemIcon>
                                 <ListItemText primary={text} />
                             </ListItem>
@@ -280,7 +294,8 @@ export default function ButtonAppBar() {
             </Drawer>
             <main className={classes.content}>
                 <div className={classes.toolbar} />
-                <MiddlePanel/>
+                <MiddlePanel />
+                {Imagelistopen && <ImageList />}
             </main>
                 <Modal
                     aria-labelledby="transition-modal-title"

+ 1 - 0
photo/src/index.js

@@ -8,6 +8,7 @@ import SearchAppMenu from './SearchAppMenu';
 //import ButtonAppBar from './testM';
 //import preview from './modal';
 import GP from './gp';
+//import MainPanel from './MainPanel';
 
 ReactDOM.render(
     <div>