소스 검색

gallery now fucking works

yeungalan 4 년 전
부모
커밋
8f53380a2a
4개의 변경된 파일418개의 추가작업 그리고 235개의 파일을 삭제
  1. 77 0
      photo/package-lock.json
  2. 1 0
      photo/package.json
  3. 94 235
      photo/src/ImageList.js
  4. 246 0
      photo/src/imageList.old

+ 77 - 0
photo/package-lock.json

@@ -2368,6 +2368,15 @@
         "normalize-path": "^2.1.1"
       }
     },
+    "aphrodite": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/aphrodite/-/aphrodite-0.5.0.tgz",
+      "integrity": "sha1-pLmokCZiOV0nAucKx6K0ymbyVwM=",
+      "requires": {
+        "asap": "^2.0.3",
+        "inline-style-prefixer": "^2.0.0"
+      }
+    },
     "aproba": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
@@ -3151,6 +3160,11 @@
       "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
       "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
     },
+    "bowser": {
+      "version": "1.9.4",
+      "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz",
+      "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -6775,6 +6789,15 @@
       "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
       "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
     },
+    "inline-style-prefixer": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz",
+      "integrity": "sha1-wVPH6I/YT+9cYC6VqBaLJ3BnH+c=",
+      "requires": {
+        "bowser": "^1.0.0",
+        "hyphenate-style-name": "^1.0.1"
+      }
+    },
     "inquirer": {
       "version": "7.3.3",
       "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
@@ -10803,6 +10826,14 @@
         "screenfull": "^5.0.2"
       }
     },
+    "react-grid-gallery": {
+      "version": "git+https://github.com/benhowell/react-grid-gallery.git#79035fe9abb68cd28a55d45ca2eec922562acc9e",
+      "from": "git+https://github.com/benhowell/react-grid-gallery.git",
+      "requires": {
+        "prop-types": "^15.5.8",
+        "react-images": "^0.5.16"
+      }
+    },
     "react-image-lightbox": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/react-image-lightbox/-/react-image-lightbox-5.1.1.tgz",
@@ -10812,6 +10843,38 @@
         "react-modal": "^3.8.1"
       }
     },
+    "react-images": {
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/react-images/-/react-images-0.5.19.tgz",
+      "integrity": "sha512-B3d4W1uFJj+m17K8S65iAyEJShKGBjPk7n7N1YsPiAydEm8mIq9a6CoeQFMY1d7N2QMs6FBCjT9vELyc5jP5JA==",
+      "requires": {
+        "aphrodite": "^0.5.0",
+        "prop-types": "^15.6.0",
+        "react-scrolllock": "^2.0.1",
+        "react-transition-group": "2"
+      },
+      "dependencies": {
+        "dom-helpers": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
+          "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
+          "requires": {
+            "@babel/runtime": "^7.1.2"
+          }
+        },
+        "react-transition-group": {
+          "version": "2.9.0",
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
+          "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
+          "requires": {
+            "dom-helpers": "^3.4.0",
+            "loose-envify": "^1.4.0",
+            "prop-types": "^15.6.2",
+            "react-lifecycles-compat": "^3.0.4"
+          }
+        }
+      }
+    },
     "react-is": {
       "version": "16.13.1",
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -10842,6 +10905,11 @@
         "resize-observer-polyfill": "^1.5.0"
       }
     },
+    "react-prop-toggle": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/react-prop-toggle/-/react-prop-toggle-1.0.2.tgz",
+      "integrity": "sha512-JmerjAXs7qJ959+d0Ygt7Cb2+4fG+n3I2VXO6JO0AcAY1vkRN/JpZKAN67CMXY889xEJcfylmMPhzvf6nWO68Q=="
+    },
     "react-scripts": {
       "version": "3.4.3",
       "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.3.tgz",
@@ -10902,6 +10970,15 @@
         "workbox-webpack-plugin": "4.3.1"
       }
     },
+    "react-scrolllock": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/react-scrolllock/-/react-scrolllock-2.0.7.tgz",
+      "integrity": "sha512-Gzpu8+ulxdYcybAgJOFTXc70xs7SBZDQbZNpKzchZUgLCJKjz6lrgESx6LHHZgfELx1xYL4yHu3kYQGQPFas/g==",
+      "requires": {
+        "exenv": "^1.2.2",
+        "react-prop-toggle": "^1.0.2"
+      }
+    },
     "react-transition-group": {
       "version": "4.4.1",
       "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",

+ 1 - 0
photo/package.json

@@ -11,6 +11,7 @@
     "react": "^16.13.1",
     "react-dom": "^16.13.1",
     "react-google-photo": "git+https://github.com/yeungalan/react-google-photo.git",
+    "react-grid-gallery": "git+https://github.com/benhowell/react-grid-gallery.git",
     "react-image-lightbox": "^5.1.1",
     "react-photo-gallery": "^8.0.0",
     "react-scripts": "^3.4.3"

+ 94 - 235
photo/src/ImageList.js

@@ -1,244 +1,103 @@
+import PropTypes from 'prop-types';
 import React from 'react';
-import { makeStyles } from '@material-ui/core/styles';
-import GridList from '@material-ui/core/GridList';
-import GridListTile from '@material-ui/core/GridListTile';
-import GridListTileBar from '@material-ui/core/GridListTileBar';
-import ListSubheader from '@material-ui/core/ListSubheader';
-import IconButton from '@material-ui/core/IconButton';
-import InfoIcon from '@material-ui/icons/Info';
-import tileData from './tileData';
-import Modal from '@material-ui/core/Modal';
-import Backdrop from '@material-ui/core/Backdrop';
-import Fade from '@material-ui/core/Fade';
-import Grid from '@material-ui/core/Grid';
-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 CloseIcon from '@material-ui/icons/Close';
-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 Typography from '@material-ui/core/Typography';
-import ListItem from '@material-ui/core/ListItem';
-import ListItemIcon from '@material-ui/core/ListItemIcon';
-import ListItemText from '@material-ui/core/ListItemText';
-import List from '@material-ui/core/List';
-import Paper from '@material-ui/core/Paper';
+import ReactDOM from 'react-dom';
+import Gallery from 'react-grid-gallery';
 
-const useStyles = makeStyles((theme) => ({
-    root: {
-        display: 'flex',
-        flexWrap: 'wrap',
-        justifyContent: 'space-around',
-        overflow: 'hidden',
-    },
-    gridList: {
-        width: '100%',
-        height: '100%',
-    },
-    icon: {
-        color: 'rgba(255, 255, 255, 0.54)',
-    },
-    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"
-        },
-    },
-}));
-var Imagesrc = 0;
-var FabL = false;
-var FabR = false;
-var Open = false;
-
-export default function TitlebarGridList() {
-    const classes = useStyles();
-
-    const [Imageopen, setImageOpen] = React.useState(false);
 
-    const TDLength = tileData.length;
+class imageList extends React.Component {
+    constructor(props) {
+        super(props);
 
-    const { photoIndex, isOpen } = this.state;
-
-    const handleClick = (index) => () => {
-        Imagesrc = index;
-        if (index == 0) {
-            FabL = false;
-        } else {
-            FabL = true;
-        }
-        if (TDLength == index + 1) {
-            FabR = false;
-        } else {
-            FabR = true;
-        }
-        console.log(FabL + " " + FabR);
-        setImageOpen(true);
-    }
+        this.state = {
+            images: this.props.images
+        };
 
-    const moveFw = () => {
-        Imagesrc++;
-        setImageOpen(false);
-        setImageOpen(true);
     }
 
-    const moveBw = () => {
-        Imagesrc--;
-        setImageOpen(false);
-        setImageOpen(true);
+    render() {
+        return (
+                <Gallery
+                    images={this.state.images}
+                    enableLightbox={true}
+                    enableImageSelection={false} />
+        );
     }
-
-    const handleImageClose = () => {
-        setImageOpen(false);
-    };
-
-
-
-    return (
-       
-
-
-
-        <div className={classes.root}>
-            <GridList cellHeight={180} cols={5} className={classes.gridList}>
-                <GridListTile key="Subheader" cols={5} style={{ height: 'auto' }}>
-                    <ListSubheader component="div">December</ListSubheader>
-                </GridListTile>
-                {tileData.map((tile, index) => (
-                    <GridListTile key={tile.img} onClick={handleClick(index)}>
-                        <img src={tile.img} alt={tile.title} />
-                    </GridListTile>
-                ))}
-            </GridList>
-            <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={tileData[this.state.Imagesrc].img}
-                                            style={{
-                                                margin: "auto",
-                                                maxHeight: "100vh",
-                                                maxWidth: "100%",
-                                            }}
-                                        ></img>
-                                    </Grid>
-
-                                </Grid>
-                                {FabL === true ? <Fab color="inherit" aria-label="add" onClick={moveBw} className={classes.fabL}>
-                                    <ArrowBackIosIcon />
-                                </Fab> : ""}
-                                {console.log(FabL + " " + FabR)}
-                                
-                                {FabR === true ? <Fab color="inherit" aria-label="add" onClick={moveFw} 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>
-        
-    );
 }
+
+imageList.propTypes = {
+    images: PropTypes.arrayOf(
+        PropTypes.shape({
+            src: PropTypes.string.isRequired,
+            thumbnail: PropTypes.string.isRequired,
+            srcset: PropTypes.array,
+            caption: PropTypes.oneOfType([
+                PropTypes.string,
+                PropTypes.element
+            ]),
+            thumbnailWidth: PropTypes.number.isRequired,
+            thumbnailHeight: PropTypes.number.isRequired
+        })
+    ).isRequired
+};
+
+imageList.defaultProps = {
+    images: [
+        {
+            src: "https://c2.staticflickr.com/9/8817/28973449265_07e3aa5d2e_b.jpg",
+            thumbnail: "https://c2.staticflickr.com/9/8817/28973449265_07e3aa5d2e_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 174,
+            caption: "After Rain (Jeshu John - designerspics.com)"
+        },
+        {
+            src: "https://c6.staticflickr.com/9/8890/28897154101_a8f55be225_b.jpg",
+            thumbnail: "https://c6.staticflickr.com/9/8890/28897154101_a8f55be225_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 183,
+            caption: "37H (gratispgraphy.com)"
+        },
+        {
+            src: "https://c7.staticflickr.com/9/8106/28941228886_86d1450016_b.jpg",
+            thumbnail: "https://c7.staticflickr.com/9/8106/28941228886_86d1450016_n.jpg",
+            thumbnailWidth: 271,
+            thumbnailHeight: 320,
+            caption: "Orange Macro (Tom Eversley - isorepublic.com)"
+        },
+        {
+            src: "https://c6.staticflickr.com/9/8342/28897193381_800db6419e_b.jpg",
+            thumbnail: "https://c6.staticflickr.com/9/8342/28897193381_800db6419e_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 213,
+            caption: "201H (gratisography.com)"
+        },
+        {
+            src: "https://c8.staticflickr.com/9/8104/28973555735_ae7c208970_b.jpg",
+            thumbnail: "https://c8.staticflickr.com/9/8104/28973555735_ae7c208970_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 213,
+            caption: "Flower Interior Macro (Tom Eversley - isorepublic.com)"
+        },
+        {
+            src: "https://c1.staticflickr.com/9/8707/28868704912_cba5c6600e_b.jpg",
+            thumbnail: "https://c1.staticflickr.com/9/8707/28868704912_cba5c6600e_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 213,
+            caption: "Man on BMX (Tom Eversley - isorepublic.com)"
+        },
+        {
+            src: "https://c4.staticflickr.com/9/8578/28357117603_97a8233cf5_b.jpg",
+            thumbnail: "https://c4.staticflickr.com/9/8578/28357117603_97a8233cf5_n.jpg",
+            thumbnailWidth: 320,
+            thumbnailHeight: 213,
+            caption: "Ropeman - Thailand (Tom Eversley - isorepublic.com)"
+        },
+        {
+            src: "https://c1.staticflickr.com/9/8056/28354485944_148d6a5fc1_b.jpg",
+            thumbnail: "https://c1.staticflickr.com/9/8056/28354485944_148d6a5fc1_n.jpg",
+            thumbnailWidth: 257,
+            thumbnailHeight: 320,
+            caption: "A photo by 贝莉儿 NG. (unsplash.com)"
+        }
+    ]
+};
+export default imageList;

+ 246 - 0
photo/src/imageList.old

@@ -0,0 +1,246 @@
+import React from 'react';
+import { makeStyles } from '@material-ui/core/styles';
+import GridList from '@material-ui/core/GridList';
+import GridListTile from '@material-ui/core/GridListTile';
+import GridListTileBar from '@material-ui/core/GridListTileBar';
+import ListSubheader from '@material-ui/core/ListSubheader';
+import IconButton from '@material-ui/core/IconButton';
+import InfoIcon from '@material-ui/icons/Info';
+import tileData from './tileData';
+import Modal from '@material-ui/core/Modal';
+import Backdrop from '@material-ui/core/Backdrop';
+import Fade from '@material-ui/core/Fade';
+import Grid from '@material-ui/core/Grid';
+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 CloseIcon from '@material-ui/icons/Close';
+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 Typography from '@material-ui/core/Typography';
+import ListItem from '@material-ui/core/ListItem';
+import ListItemIcon from '@material-ui/core/ListItemIcon';
+import ListItemText from '@material-ui/core/ListItemText';
+import List from '@material-ui/core/List';
+import Paper from '@material-ui/core/Paper';
+import Lightbox from 'react-image-lightbox';
+import 'react-image-lightbox/style.css'; // This only needs to be imported once in your app
+
+const useStyles = makeStyles((theme) => ({
+    root: {
+        display: 'flex',
+        flexWrap: 'wrap',
+        justifyContent: 'space-around',
+        overflow: 'hidden',
+    },
+    gridList: {
+        width: '100%',
+        height: '100%',
+    },
+    icon: {
+        color: 'rgba(255, 255, 255, 0.54)',
+    },
+    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"
+        },
+    },
+}));
+var Imagesrc = 0;
+var FabL = false;
+var FabR = false;
+var Open = false;
+
+export default function TitlebarGridList() {
+    const classes = useStyles();
+
+    const [Imageopen, setImageOpen] = React.useState(false);
+
+    const TDLength = tileData.length;
+
+    //const { photoIndex, isOpen } = this.state;
+
+    const handleClick = (index) => () => {
+        Imagesrc = index;
+        if (index == 0) {
+            FabL = false;
+        } else {
+            FabL = true;
+        }
+        if (TDLength == index + 1) {
+            FabR = false;
+        } else {
+            FabR = true;
+        }
+        console.log(FabL + " " + FabR);
+        setImageOpen(true);
+    }
+
+    const moveFw = () => {
+        Imagesrc++;
+        setImageOpen(false);
+        setImageOpen(true);
+    }
+
+    const moveBw = () => {
+        Imagesrc--;
+        setImageOpen(false);
+        setImageOpen(true);
+    }
+
+    const handleImageClose = () => {
+        setImageOpen(false);
+    };
+
+
+
+    return (
+       
+
+
+
+        <div className={classes.root}>
+            <GridList cellHeight={180} cols={5} className={classes.gridList}>
+                <GridListTile key="Subheader" cols={5} style={{ height: 'auto' }}>
+                    <ListSubheader component="div">December</ListSubheader>
+                </GridListTile>
+                {tileData.map((tile, index) => (
+                    <GridListTile key={tile.img} onClick={handleClick(index)}>
+                        <img src={tile.img} alt={tile.title} />
+                    </GridListTile>
+                ))}
+            </GridList>
+            <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={tileData[this.state.Imagesrc].img}
+                                            style={{
+                                                margin: "auto",
+                                                maxHeight: "100vh",
+                                                maxWidth: "100%",
+                                            }}
+                                        ></img>
+                                    </Grid>
+
+                                </Grid>
+                                {FabL === true ? <Fab color="inherit" aria-label="add" onClick={moveBw} className={classes.fabL}>
+                                    <ArrowBackIosIcon />
+                                </Fab> : ""}
+                                {console.log(FabL + " " + FabR)}
+                                
+                                {FabR === true ? <Fab color="inherit" aria-label="add" onClick={moveFw} 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>
+        
+    );
+}