안형욱

Merge branch 'develop' of http://khuhub.khu.ac.kr/2021-1-capstone-design1/GCL_Pr…

…oject1 into feat/elasticsearch
...@@ -13,7 +13,6 @@ const HeaderHeight = '170px'; ...@@ -13,7 +13,6 @@ const HeaderHeight = '170px';
13 13
14 const HeaderTop = styled.div` 14 const HeaderTop = styled.div`
15 background-color: black; 15 background-color: black;
16 - float: up;
17 height: 20px; 16 height: 20px;
18 `; 17 `;
19 const MainContainer = styled.div` 18 const MainContainer = styled.div`
...@@ -32,9 +31,9 @@ const MenuContainer = styled.div` ...@@ -32,9 +31,9 @@ const MenuContainer = styled.div`
32 `; 31 `;
33 32
34 const LogoContainer = styled.div` 33 const LogoContainer = styled.div`
35 - margin-top: 10px; 34 + padding-right: 20px;
36 - float: left; 35 + padding-left: 20px;
37 - padding: 20px; 36 + padding-top: 1%;
38 img { 37 img {
39 width: 130px; 38 width: 130px;
40 39
...@@ -44,13 +43,15 @@ const LogoContainer = styled.div` ...@@ -44,13 +43,15 @@ const LogoContainer = styled.div`
44 `; 43 `;
45 44
46 const SearchContainer = styled.div` 45 const SearchContainer = styled.div`
46 + display: flex;
47 + width: 70%;
48 + position: relative;
47 margin-top: 20px; 49 margin-top: 20px;
48 `; 50 `;
49 51
50 const SLink = styled(NavLink)` 52 const SLink = styled(NavLink)`
51 list-style-type: none; 53 list-style-type: none;
52 color: black; 54 color: black;
53 - float: left;
54 line-height: 55px; 55 line-height: 55px;
55 vertical-align: middle; 56 vertical-align: middle;
56 text-align: center; 57 text-align: center;
...@@ -75,16 +76,13 @@ const SLink = styled(NavLink)` ...@@ -75,16 +76,13 @@ const SLink = styled(NavLink)`
75 } 76 }
76 `; 77 `;
77 const DropDownWrap = styled.div``; 78 const DropDownWrap = styled.div``;
78 -const SearchOptionContainer = styled.div` 79 +const SearchOptionContainer = styled.div``;
79 - float: left;
80 -`;
81 80
82 -const SortOptionContainer = styled.div` 81 +const SortOptionContainer = styled.div``;
83 - float: left;
84 -`;
85 82
86 const OptionContainer = styled.div` 83 const OptionContainer = styled.div`
87 position: absolute; 84 position: absolute;
85 + display: flex;
88 top: 132px; 86 top: 132px;
89 left: 750px; 87 left: 750px;
90 `; 88 `;
...@@ -100,9 +98,7 @@ const AirContainer = styled.div` ...@@ -100,9 +98,7 @@ const AirContainer = styled.div`
100 height: ${HeaderHeight}; 98 height: ${HeaderHeight};
101 `; 99 `;
102 100
103 -const DropDownContainer = styled.div` 101 +const DropDownContainer = styled.div``;
104 - flex-direction: column;
105 -`;
106 102
107 const Header = () => { 103 const Header = () => {
108 const [showModal, setShowModal] = useState(false); 104 const [showModal, setShowModal] = useState(false);
...@@ -117,10 +113,10 @@ const Header = () => { ...@@ -117,10 +113,10 @@ const Header = () => {
117 <> 113 <>
118 <MainContainer> 114 <MainContainer>
119 <HeaderTop /> 115 <HeaderTop />
116 + <SearchContainer>
120 <LogoContainer onClick={onMainClick}> 117 <LogoContainer onClick={onMainClick}>
121 <img src="eDrive_logo_v2.png" alt="" /> 118 <img src="eDrive_logo_v2.png" alt="" />
122 </LogoContainer> 119 </LogoContainer>
123 - <SearchContainer>
124 <DropDownContainer> 120 <DropDownContainer>
125 <DropDownWrap> 121 <DropDownWrap>
126 <DropDownButton 122 <DropDownButton
...@@ -134,7 +130,7 @@ const Header = () => { ...@@ -134,7 +130,7 @@ const Header = () => {
134 /> 130 />
135 </DropDownWrap> 131 </DropDownWrap>
136 </DropDownContainer> 132 </DropDownContainer>
137 - <InputBlock color="blue" fontsize="20px" width="850px" display="" /> 133 + <InputBlock color="blue" fontsize="20px" width="70%" display />
138 </SearchContainer> 134 </SearchContainer>
139 <MenuContainer> 135 <MenuContainer>
140 <ul> 136 <ul>
......
...@@ -10,23 +10,25 @@ import { setParsedDocuments } from '../../features/parsedDocumentsSlice'; ...@@ -10,23 +10,25 @@ import { setParsedDocuments } from '../../features/parsedDocumentsSlice';
10 10
11 const InputBlock = styled.div` 11 const InputBlock = styled.div`
12 width: ${props => props.width}; 12 width: ${props => props.width};
13 - float: ${props => props.float || 'left'};
14 height: ${props => props.height}; 13 height: ${props => props.height};
14 + position: relative;
15 `; 15 `;
16 16
17 const InputWrap = styled.div` 17 const InputWrap = styled.div`
18 padding-top: ${props => props.paddingsize}; 18 padding-top: ${props => props.paddingsize};
19 + position: relative;
19 padding-left: 10px; 20 padding-left: 10px;
20 - width: 70%;
21 height: 100%; 21 height: 100%;
22 color: ${props => inputColorMap[props.color].color}; 22 color: ${props => inputColorMap[props.color].color};
23 outline: none; 23 outline: none;
24 font-size: ${props => props.size}; 24 font-size: ${props => props.size};
25 border: 3px solid ${props => inputColorMap[props.color].borderColor}; 25 border: 3px solid ${props => inputColorMap[props.color].borderColor};
26 - float: left; 26 + width: 100%;
27 `; 27 `;
28 const SearchIconWrap = styled.div` 28 const SearchIconWrap = styled.div`
29 - float: left; 29 + position: absolute;
30 + right: 0;
31 + top: 0;
30 `; 32 `;
31 33
32 const MyInput = ({ 34 const MyInput = ({
......
1 import React from 'react'; 1 import React from 'react';
2 -import { Link } from 'react-router-dom'; 2 +import { HiOutlineDocumentDownload } from 'react-icons/hi';
3 import palette from '../../lib/styles/palette'; 3 import palette from '../../lib/styles/palette';
4 4
5 -const File = ({ filename }) => { 5 +const File = ({ filename, filepath }) => {
6 return ( 6 return (
7 - <Link style={{ color: palette.blue6 }} to="/"> 7 + <a style={{ color: palette.blue6 }} href={filepath}>
8 {filename} 8 {filename}
9 - </Link> 9 + <HiOutlineDocumentDownload />
10 + </a>
10 ); 11 );
11 }; 12 };
12 export default File; 13 export default File;
......
1 import { Image, Text } from '@mantine/core'; 1 import { Image, Text } from '@mantine/core';
2 import React from 'react'; 2 import React from 'react';
3 +import styled from 'styled-components';
3 4
4 -const Thumbnails = () => { 5 +const ImageWrapper = styled.div`
6 + display: flex;
7 +`;
8 +const Thumbnails = ({ srcs }) => {
5 return ( 9 return (
6 <> 10 <>
7 <Text style={{ marginTop: '1rem' }}>문서 이미지</Text> 11 <Text style={{ marginTop: '1rem' }}>문서 이미지</Text>
8 - <div style={{ display: 'flex', justifyContent: 'space-between' }}> 12 + <ImageWrapper>
9 - <Image width={200} height={250} radius="md" withPlaceholder /> 13 + {srcs.map(src => (
10 - <Image width={200} height={250} radius="md" withPlaceholder /> 14 + <Image
11 - <Image width={200} height={250} radius="md" withPlaceholder /> 15 + width={200}
12 - <Image width={200} height={250} radius="md" withPlaceholder /> 16 + height={250}
13 - </div> 17 + radius="md"
18 + src={src}
19 + withPlaceholder
20 + />
21 + ))}
22 + </ImageWrapper>
14 </> 23 </>
15 ); 24 );
16 }; 25 };
......
1 -import React from 'react'; 1 +import React, { useState, useEffect } from 'react';
2 import { Container, Text } from '@mantine/core'; 2 import { Container, Text } from '@mantine/core';
3 import File from './File'; 3 import File from './File';
4 import Thumbnails from './Thumbnail'; 4 import Thumbnails from './Thumbnail';
5 5
6 const Document = () => { 6 const Document = () => {
7 - // 파일이름 7 + const [files, setFiles] = useState([]); // 파일 정보를 담은 객체
8 - // 본문 글 미리보기(짧게 ...으로짤림) 8 + const [page, setPage] = useState(0); // 쿼리로 던져야 하는 페이지 넘버
9 - // 문서 내 이미지 9 + const limit = 250;
10 - return ( 10 + const toggleEllipsis = (str, _limit) => {
11 + return {
12 + string: str.slice(0, _limit),
13 + };
14 + };
15 + const getFile = async () => {
16 + const temptext = `미친듯이 심플. 제목만 보더라도 이 책은 어떤 내용을 다루며, 글쓴이는 어떤 말을 하고 싶은지 느낄 수 있는 문구이다. 이 책에서도 언급하였지만, 나는 모든 사람, 더 나아가 모든 생명체들은 더욱 단순하고 간단한 프로세스를 본능적으로 추구한다는 것에 공감하고 심지어 체감한다. 이 수업을 듣기 전 글쓰기 라는 교양 수업을 들었을 때도 그 때 당시 교수님께서 하신 말씀이 떠오른다.
17 +이 책의 저자는 약 17년간 스티브 잡스와 함께 광고와 마케팅을 진행한 크리에이티브 디렉터이다. 그리고 이 자는 잡스와 함께 하며 단순함이란 무엇인지, 애플이 단순함을 추구하는 것은 어떤 것인지에 대한 내용을 인텔, 델과 같은 소위 대기업 이라 부르는 기업들과 비교 또는 비유하며 소개하고, 또한 그렇기 때문에 왜 단순함이 중요하며, 어떻게 써야하는지를 서술하였다.
18 +애플이 추구하는 단순함을 활용하기 위한 여러가지 요소 중, 나는 심플 스틱 이라는 문구가 깊이 감명받았었다.이라는 것은 정의하자면 애플의 모든 것에 지독하리만치 단순함을 적용하려 했던 잡스의 경영 원칙을 상징하는 말이라고 할 수 있다. 애플 또는 잡스와 함께 일했던 사람들은 잡스가 휘두르는 심플 스틱이라는 것에 위협을 받기도 하였고, 이것을 통해 많은 영감을 받기도 하였다. 심플 스틱이라는 심볼은 회사의 구조를 간단하게 만들었으며, 고객에게 제품을 있는 그대로 사용하게 해줄 수 있는 원동력이 되며, 더욱 창의적인 생산활동을 할 수 있게 해준다. 회사에 빠져서는 안될 요소중 하나인 회의를 예로 들면 애플은 심플스틱을 활용하여 회의에 불필요한 인원이 들어오는 일이 없도록 간소화시키며, 회의시간은 되도록 짧게 하여 핵심만 다룰 수 있도록 하였다. 이렇게 함으로써 더욱 확실하고 효과적인 회의 시스템을 갖출 수 있게 된다. 또한 애플이 제공하는 혁신적인 경험들(아이폰, 아이맥, 아이패드 등), 경영 철학, 마케팅, 다른 기업들과의 차별화 되는 점에 대한 이유의 중심에는 언제나 심플스틱이 자리하고 있었다.
19 +물론 이렇게 애플처럼 단순함을 추구함으로써 얻을 수 있는 성공의 확률은 극히 낮다고 생각한다. 사람들은 단순함을 추구하지만, 단순함을 추구하기 위해 복잡한 과정을 생각해내고 이 복잡한 과정들 마저 단순하고 간결화해야 한다. 경영, 생산, 마케팅등 회사가 돌아가는데 필요한 모든것이 단순함과 조화를 넘어 융화가 되어야만 극강의 효과를 볼 수 있을 것이다. 만약 이러한 단순함을 잘못 사용하여 제품을 출시하게 된다면, 사용자들은 이 제품을 사용하는데 복잡함이라는 번거로운 수고를 해야 할것이다.`;
20 + setPage(page + 1);
21 + const templist = [];
22 + templist.push(
11 <Container 23 <Container
12 style={{ 24 style={{
13 padding: '2rem 4rem', 25 padding: '2rem 4rem',
...@@ -15,16 +27,31 @@ const Document = () => { ...@@ -15,16 +27,31 @@ const Document = () => {
15 border: '1px solid black', 27 border: '1px solid black',
16 }} 28 }}
17 > 29 >
18 - <File filename="Sample Document.docx" /> 30 + <File
19 - <Text color="green">경로: /샘플부서/샘플폴더/Sample Document.docx</Text> 31 + filename="book_report"
20 - <Text> 32 + filepath="https://yoonsbucket.s3.amazonaws.com/book_report.docx"
21 - {`네드 로렘(Ned Rorem 1923- )은 현존하는 미국의 대표적인 현대 작곡가이다. 33 + />
22 - 무엇 가곡 장르를 섭렵한 첫 번째 미국 작곡가로 많은 사람들에 34 + <Text color="green">
23 - 의해 미국 가곡 작곡가들의 선두에 있다고 여기질 만큼 뛰어난 가곡을 많이 35 + 경로: https://yoonsbucket.s3.amazonaws.com/book_report.docx
24 - 작곡한 현대 미...`}
25 </Text> 36 </Text>
26 - <Thumbnails /> 37 + <Text>{toggleEllipsis(temptext, limit).string}...</Text>
38 + <Thumbnails
39 + srcs={[
40 + 'https://yoonsbucket.s3.amazonaws.com/book_report_1.png',
41 + 'https://yoonsbucket.s3.amazonaws.com/book_report_2.png',
42 + ]}
43 + />
27 </Container> 44 </Container>
28 ); 45 );
46 + setFiles([...files, ...templist]);
47 + };
48 + // 파일이름
49 + // 본문 글 미리보기(짧게 ...으로짤림)
50 + // 문서 내 이미지
51 + useEffect(() => {
52 + getFile();
53 + }, []);
54 +
55 + return <>{files}</>;
29 }; 56 };
30 export default Document; 57 export default Document;
......
...@@ -26,9 +26,8 @@ const LogoWrap = styled.div` ...@@ -26,9 +26,8 @@ const LogoWrap = styled.div`
26 `; 26 `;
27 27
28 const SearchBlock = styled.div` 28 const SearchBlock = styled.div`
29 - display: inline-block; 29 + display: flex;
30 - width: 100%; 30 + width: 50%;
31 - margin-left: 23%;
32 `; 31 `;
33 const LoginButtonBlock = styled.div` 32 const LoginButtonBlock = styled.div`
34 position: fixed; 33 position: fixed;
...@@ -56,9 +55,8 @@ const HomePage = () => { ...@@ -56,9 +55,8 @@ const HomePage = () => {
56 { id: 2, name: '개인' }, 55 { id: 2, name: '개인' },
57 { id: 3, name: '부서' }, 56 { id: 3, name: '부서' },
58 ]} 57 ]}
59 - float="left"
60 /> 58 />
61 - <Input color="blue" paddingsize="10px" width="700px" display /> 59 + <Input color="blue" paddingsize="10px" width="100%" display />
62 </SearchBlock> 60 </SearchBlock>
63 61
64 {/* Todo : 로그인 했을 경우 로그인 버튼 숨기기 */} 62 {/* Todo : 로그인 했을 경우 로그인 버튼 숨기기 */}
......