Skip to content

Sophie0527/data_management_program

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

61 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Data Management Program

๐Ÿšฉ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ์ง„ํ–‰๊ธฐ๊ฐ„ : 10/07 ~ 10/10
  • ๊ณผ์ œ์ฃผ๊ด€ : (์ฃผ)๋ฐ”๋”ง
  • ์ฐธ์—ฌ๋ช…๋‹จ : ๊น€๋ฏผ์šฑ, ์†Œ์žฌํ˜„, ์†์†Œํฌ, ์œ ๊ด‘ํ˜„, ์ •ํ›ˆ์กฐ, ์กฐ๋ฏผ์žฌ
  • DEMO : DEMO


๐Ÿ›  ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

MISSION 1

์„ผ์„œ ๋ชฉ๋ก ํ™”๋ฉด ๊ตฌํ˜„ํ•˜๊ธฐ

ํŠน์ • ์—ด ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„/๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„

  • ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ํ—ค๋” onClick ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ โ†’ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

    TypeScript ์‚ฌ์šฉํ•จ์— CustomType ์ ์šฉ
//TableHeader.tsx

<Sorter
    width={header.getSize()}
    isSortable={header.column.getCanSort()}
    onClick={header.column.getToggleSortingHandler()}
    >
     {header.isPlaceholder
      ? null
      : flexRender(header.column.columnDef.header, header.getContext())}
     {
      {
        asc: <FaSortUp />,
        desc: <FaSortDown />,
      }[header.column.getIsSorted() as SortDirection]
     }
</Sorter>

...
const Sorter = styled.div<CustomSorter>`
  width: ${({ width }) => width};
  cursor: ${({ isSortable }) => (isSortable ? "pointer" : "default")};

๊ฐ๊ฐ์˜ ์—ด์— ๋Œ€ํ•ด์„œ ํ•„ํ„ฐ๋ง

  • ๋“œ๋กญ๋‹ค์šด ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋ง

    react-table ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•„ํ„ฐ๋ง ๊ด€๋ จ ํ•จ์ˆ˜๋“ค์„ importํ•˜์—ฌ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    ๊ฐ ์—ด์ด ํ•„ํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•„๋‹Œ์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด getCanFilter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ํ•„ํ„ฐ๋ง์ด ๋˜์ง€ ์•Š๋Š” ์—ด์—๋Š” ๋“œ๋กญ๋‹ค์šด์ด ๋ณด์ด์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
<ColumnFilter>
  {header.column.getCanFilter() ? (
    <select onChange={({ currentTarget: { value } }) => onFilterChange(value)}>
      <option value='null'>All</option>
      {sortedUniqueValues.map((value) => (
        <option key={value}>{value}</option>
      ))}
    </select>
  ) : null}
</ColumnFilter>

๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋กœ ๊ตฌํ˜„

  • ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์˜ ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์— ์œ ์—ฐํ•˜๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ˜์‘ํ˜•์œผ๋กœ ๊ตฌํ˜„

    media queries๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    overflow: scroll ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋กค๊ธฐ๋Šฅ์œผ๋กœ mobile, tablet, desktop ๋“ฑ ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋กœ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ์˜ˆ์‹œ) tablet ํ™”๋ฉด
    ๋ฐ˜แ„‹แ…ณแ†ผแ„’แ…งแ†ผ




MISSION 2

๋ฐ์ดํ„ฐ ๊ทธ๋ž˜ํ”„ ๋Œ€์‹œ๋ณด๋“œ ํ™”๋ฉด ๊ตฌํ˜„ํ•˜๊ธฐ

๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜์—ฌ ํŠน์ • ๋‚ ์งœ์˜ ๋ฐ์ดํ„ฐ(24์‹œ๊ฐ„)์„ ํ™•์ธ

  • ๋‚ ์งœ์ •๋ณด์˜ ๋ถ€์กฑ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

    ย ย  ์ œ์‹œ๋œ API๋Š” ์ด 100๊ฐœ์˜ ๋ฐฐ์—ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋งŽ์•„์•ผ ์ดํ‹€์น˜ ๋ถ„๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค. 24์‹œ๊ฐ„์„ ์˜จ์ „ํžˆ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์–ด์„œ ๋”ฐ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต์„ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ csv๋กœ export

  • csv๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ จ ์ฝ”๋“œ

const CSVdata: Array<Object | undefined[] | any> = [
  ['Channer'],
  ['Created at', weatherData?.channel.created_at],
  ['Description', weatherData?.channel.description],
  ['Latitude', weatherData?.channel.latitude],
  ['Longitude', weatherData?.channel.longitude],
  ['Name', weatherData?.channel.name],
  ['Updated at', weatherData?.channel.updated_at],
  [''],
  ['Feeds'],
  ['Created at', 'Entry ID', 'Temp', 'Humidity', 'Pressure'],
  ...(weatherData?.feeds.map((i) => {
    const { created_at, entry_id, field1, field2, field3 } = i;
    const arrayData = [created_at, entry_id, field1, field2, field3];
    return arrayData;
  }) || []),
];

x์ถ• ํ™•๋Œ€/์ถ•์†Œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • +,- ํ™•๋Œ€ ์ถ•์†Œ ๋ฒ„ํŠผ ๊ตฌํ˜„

    ย ย  ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ +, - ๋ฒ„ํŠผ์ด ์•„๋‹Œ ๋งˆ์šฐ์Šค ํœ ๋กœ ํ™•๋Œ€ ์ถ•์†Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„



MISSION 3

์„ ํƒ ๊ตฌํ˜„ ์‚ฌํ•ญ

  • ๋‚ ์งœ ์„ ํƒ ์‹œ ์บ˜๋ฆฐ๋” UI ์ ์šฉ
  • TypeScript ์‚ฌ์šฉ


โš™ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ์„ค๊ณ„์™€ ๊ด€๋ จ๋œ ์‚ฌํ•ญ๋“ค


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published