function makeUserListColumns()

in frontend/app/Users/UserListContent.tsx [12:81]


function makeUserListColumns(
    knownDepartments: string[],
    collectionsList: string[],
    stringFieldChanged: (entry:UserProfileRow, fieldName:string, newString:string)=>void,
    boolFieldChanged: (entry:UserProfileRow, fieldName:string, currentValue:boolean)=>void,
    userCollectionsUpdated: (entry:UserProfileRow, newValues:string[])=>void,
    quotaChanged: (entry:UserProfileRow, fieldName:string, newValue:number)=>void,
    deleteClicked: (entry:UserProfileRow)=>void
):ColDef[] {
    return [
        {
            field: "userEmail",
            headerName: "Email",
            width: 200,
        },
        {
            field: "productionOffice",
            headerName: "Office",
            width: 150,
            renderCell: (params) => <GenericDropdown valueList={["UK","US","Aus"]}
                                                     onChange={(evt)=>stringFieldChanged(params.row as UserProfileRow, "PRODUCTION_OFFICE", evt.target.value)}
                                                     value={(params.value ?? "UK") as string}/>
        },
        {
            field: "department",
            headerName: "Department",
            width: 400,
            renderCell: (params) => <DepartmentSelector knownDepartments={knownDepartments}
                                                        value={params.value as string}
                                                        onChange={
                                                            (evt, newValue)=>
                                                                stringFieldChanged(params.row as UserProfileRow,"DEPARTMENT", newValue ?? "")
                                                        }
            />

        },
        {
            field: "isAdmin",
            headerName: "Admin",
            width: 100,
            renderCell: (params) => <Switch checked={params.value as boolean}
                                            onClick={()=>boolFieldChanged(params.row as UserProfileRow,"IS_ADMIN", params.value as boolean)}/>
        },
        {
            field: "visibleCollections",
            headerName: "Visible Collections",
            width: 300,
            renderCell: (params) => <CollectionSelector collections={collectionsList}
                                                        userSelected={params.value as string[]}
                                                        selectionUpdated={(newValues:string[])=>userCollectionsUpdated(params.row as UserProfileRow, newValues)}/>
        },
        {
            field: "allCollectionsVisible",
            headerName: "All collections visible",
            width: 100,
            renderCell: (params)=><Switch checked={params.value as boolean}
                                          onClick={()=>boolFieldChanged(params.row as UserProfileRow, "ALL_COLLECTIONS", params.value as boolean)}/>
        },
        {
            field: "restoreLimits",
            headerName: "Restore limits",
            width:600,
            renderCell: (params)=><RestoreLimitComponent row={params.row as UserProfileRow} quotaChanged={quotaChanged}/>
        },
        {
            field: "delete",
            headerName: "Delete",
            width:100,
            renderCell: (params)=><IconButton onClick={()=>deleteClicked(params.row as UserProfileRow)}><DeleteIcon /></IconButton>
        }