У меня есть довольно простое приложение elm
https://github.com/chrisortman/team-player
Я не могу понять, как реализовать что-то, что позволило бы мне щелкнуть ячейку таблицы и перетащить несколько других ячеек, чтобы выбрать их.
Кажется, что onMouseOver - это то, что я хотел бы, но я не уверен, как совместить это с сигналом Mouse.isDown. Я могу комбинировать Mouse.isDown и Mouse.position, но тогда я не знаю, как привязать позицию к ячейке таблицы.
Я думаю, что эта идея приближает меня...
import Mouse
import Html exposing(..)
import Html.Attributes exposing(style)
import Html.Events exposing(onMouseOver,onClick)
import Signal exposing(..)
positionWithButton2 =
Signal.map3 (,,) Mouse.isDown Mouse.position mouseEvents.signal
|> Signal.filterMap positionIfDown (0,0)
--positionWithButton =
-- Signal.map2 (,) Mouse.isDown Mouse.position
-- |> Signal.map positionIfDown
font : List (String, String)
font =
[ ("font-family", "futura, sans-serif")
, ("color", "red")
, ("font-size", "2em")
]
type ElementAction
= Hover Int
| NoHover
mouseEvents = Signal.mailbox NoHover
background : List (String, String)
background =
[ ("background-color", "rgb(245, 245, 245)")
]
positionIfDown (isDown,position,hover) =
case (isDown,hover) of
(True, Hover x) -> Just (x,x)
(True, NoHover) -> Just position
(False, Hover x) -> Just position
_ -> Nothing
view pos =
div [ ]
[ p [ style (font ++ background)] [text (toString pos)]
, h1 [onMouseOver mouseEvents.address (Hover 10)]
[text "Magic"]
, Html.button
[ onClick mouseEvents.address NoHover]
[text "Stop"]
]
main : Signal Html
main =
Signal.map view positionWithButton2