module ArrayBased.GetInputTableCommands exposing (..) import Dict import ArrayBased.Messages exposing (..) import ArrayBased.Ports import ArrayBased.PostCellUpdate import ArrayBased.PostSelectedRowsAndSideRows import PostVisibleColumns import InputTable.Messages getInputTableCommands config tableMsg model newTableState = case tableMsg of InputTable.Messages.SetSideBarTinyMceValue tinyMceResponse -> let rowId = case newTableState.sideBarRowId of Just sideBarRowId -> sideBarRowId Nothing -> "" headerId = tinyMceResponse.columnId cellData = { columnId = headerId , rowId = rowId , value = tinyMceResponse.response , remoteId = Maybe.withDefault "" (Dict.get headerId model.headerIdsToRemoteIds) , isBoolUpdate = False , boolValue = False , isMultiUpdate = False } in ArrayBased.PostCellUpdate.postCellUpdate config.postRowsUrl cellData InputTable.Messages.SetCellValue columnId set rowId multipleValues value -> let cellData = { columnId = columnId , rowId = rowId , value = value , remoteId = Maybe.withDefault "" (Dict.get columnId model.headerIdsToRemoteIds) , isBoolUpdate = False , boolValue = False , isMultiUpdate = multipleValues } in ArrayBased.PostCellUpdate.postCellUpdate config.postRowsUrl cellData InputTable.Messages.SetBoolCellValue columnId set rowId value -> let cellData = { columnId = columnId , rowId = rowId , value = "" , remoteId = Maybe.withDefault "" (Dict.get columnId model.headerIdsToRemoteIds) , isBoolUpdate = True , boolValue = value , isMultiUpdate = False } in ArrayBased.PostCellUpdate.postCellUpdate config.postRowsUrl cellData InputTable.Messages.ToggleSideBar rowId -> ArrayBased.Ports.initTinyMce rowId InputTable.Messages.ToggleVisibleRowsCheckboxes _ -> ArrayBased.Ports.sendRowsJson newTableState.rows InputTable.Messages.ToggleRowCheckbox _ -> ArrayBased.Ports.sendRowsJson newTableState.rows InputTable.Messages.ToggleColumnVisibility id -> PostVisibleColumns.post config.postVisibleColumnsUrl model.tableState.columns RecieveColumnsPostNotification id InputTable.Messages.PostSideRows -> if List.isEmpty model.tableState.rows || List.isEmpty model.tableState.sideRows then Cmd.none else ArrayBased.PostSelectedRowsAndSideRows.post config.postRowsUrl model.tableState RecieveSideTablePostNotification _ -> Cmd.none