diff --git a/persistence/player_repository.go b/persistence/player_repository.go index 9c33dfb38..85f9219c5 100644 --- a/persistence/player_repository.go +++ b/persistence/player_repository.go @@ -19,6 +19,9 @@ func NewPlayerRepository(ctx context.Context, o orm.Ormer) model.PlayerRepositor r.ctx = ctx r.ormer = o r.tableName = "player" + r.filterMappings = map[string]filterFunc{ + "name": containsFilter, + } return r } diff --git a/persistence/sql_restful.go b/persistence/sql_restful.go index 0269c29df..c5208a96d 100644 --- a/persistence/sql_restful.go +++ b/persistence/sql_restful.go @@ -52,6 +52,10 @@ func startsWithFilter(field string, value interface{}) Sqlizer { return Like{field: fmt.Sprintf("%s%%", value)} } +func containsFilter(field string, value interface{}) Sqlizer { + return Like{field: fmt.Sprintf("%%%s%%", value)} +} + func booleanFilter(field string, value interface{}) Sqlizer { v := strings.ToLower(value.(string)) return Eq{field: strings.ToLower(v) == "true"} diff --git a/ui/src/player/PlayerList.js b/ui/src/player/PlayerList.js index c36ef304b..26c5e21f2 100644 --- a/ui/src/player/PlayerList.js +++ b/ui/src/player/PlayerList.js @@ -5,14 +5,27 @@ import { DateField, FunctionField, ReferenceField, + Filter, + SearchInput, } from 'react-admin' import { useMediaQuery } from '@material-ui/core' import { SimpleList, List } from '../common' -const PlayerList = (props) => { +const PlayerFilter = (props) => ( + + + +) + +const PlayerList = ({ permissions, ...props }) => { const isXsmall = useMediaQuery((theme) => theme.breakpoints.down('xs')) return ( - + } + > {isXsmall ? ( r.client} @@ -22,6 +35,7 @@ const PlayerList = (props) => { ) : ( + {permissions === 'admin' && }