module ArrayBased.PostSelectedRowsAndSideRows exposing (post) import Http import Json.Decode as Decode import Json.Encode as Encode import InputTable.Model exposing (TableState) post : String -> TableState rowData sideRowData -> (Result Http.Error String -> msg) -> Cmd msg post url tableState msg = let getCheckedIds = List.filter .checked >> List.map .id rows = getCheckedIds tableState.rows sideRows = getCheckedIds tableState.sideRows in postVisibleColumns url { rows = rows, sideRows = sideRows } msg type alias DataToServer = { rows : List String , sideRows : List String } postVisibleColumns : String -> DataToServer -> (Result Http.Error String -> msg) -> Cmd msg postVisibleColumns url data msg = let request = Http.post url (Http.jsonBody (encodeData data)) postReplyDecoder in Http.send msg request encodeData : DataToServer -> Encode.Value encodeData data = Encode.object [ ( "rows", Encode.list <| List.map Encode.string data.rows ) , ( "sideRows", Encode.list <| List.map Encode.string data.sideRows ) ] postReplyDecoder : Decode.Decoder String postReplyDecoder = Decode.string