/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre Departamento de Informatica - Universidade Federal do Parana This file is part of Plataforma Integrada MEC. Plataforma Integrada MEC is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Plataforma Integrada MEC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ import React, { useState } from 'react'; import { Grid } from '@material-ui/core'; import styled from 'styled-components'; import Button from '@material-ui/core/Button'; import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import CheckBoxIcon from '@material-ui/icons/CheckBox'; import GetAppIcon from '@material-ui/icons/GetApp'; import ResourceCardFunction from './ResourceCardFunction.js'; export default function ResourceList(props) { const [selected, setSelected] = useState(Array.apply( null, {length: props.resources.length}).map(i => false)); const [selectable, setSelectable] = useState(false); const updateSelected = (index) => { let new_selected = selected.slice(); new_selected[index] = !new_selected[index]; setSelected(new_selected); } const checkBoxIcon = (s) => { if (s) return <CheckBoxIcon />; else return <CheckBoxOutlineBlankIcon />; } return ( <ResourceListContainer> <Grid container direction="row" justify="space-between" alignItems="center"> <Grid item> <Title>{props.resources.length} recurso{props.resources.length == 1 ? "" : "s"}</Title> </Grid> <Grid item> <Button color="primary" onClick={() => setSelectable(!selectable)}> <PanelButtonText> Ativar seleção </PanelButtonText> </Button> </Grid> <Grid item> <Button color="primary" variant="outlined" startIcon={<GetAppIcon fontSize="large"/>} > <PanelButtonText>baixar seleção</PanelButtonText> </Button> </Grid> </Grid> <Grid container direction="row" justify="space-around" alignItems="center"> {props.resources.map((r) => { return ( <Grid item key={r.title}> <ResourceCardFunction type={r.type} author={r.author} tags={r.tags} published={r.published} title={r.title} rating={r.rating} likeCount={r.likeCount} liked={r.liked} thumbnail={r.thumbnail} /> {selectable ? (<SelectButton variant="outline" color="primary" startIcon={checkBoxIcon(selected[props.resources.indexOf(r)])} onClick={() => updateSelected(props.resources.indexOf(r))} > Selecionar </SelectButton>) : <span></span>} </Grid> ); })} </Grid> </ResourceListContainer> ); } const ResourceListContainer=styled.div` margin-left: 20; margin-right: 20; ` const Title=styled.p` color: rgb(102, 102, 102); font-size: 2em; font-weigth: 300; ` const SelectButton=styled(Button)` width: 100%; ` const PanelButtonText=styled.span` font-weight: 900; `