You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
44 lines
1.2 KiB
import SwiftUI
|
|
import Stub
|
|
import ViewModel
|
|
|
|
struct UENoteSlider: View {
|
|
@StateObject var ueVM: UEVM
|
|
|
|
@State private var sliderProgress: CGFloat = 0
|
|
@State private var sliderWidth: CGFloat = 20
|
|
@State private var sliderMaxWidth: CGFloat = 220
|
|
@State private var sliderCurrentWidth: CGFloat = 0
|
|
|
|
var drag: some Gesture {
|
|
DragGesture()
|
|
.onEnded { _ in
|
|
sliderWidth = sliderWidth > sliderMaxWidth ? sliderMaxWidth : sliderWidth
|
|
sliderWidth = sliderWidth >= 0 ? sliderWidth : 20
|
|
|
|
sliderCurrentWidth = sliderWidth
|
|
}
|
|
}
|
|
|
|
var body: some View {
|
|
HStack {
|
|
Rectangle()
|
|
.fill(ueVM.average < 10 ? Color("BadColor") : Color("GoodColor"))
|
|
.frame(width: CGFloat(ueVM.average) * 10, height: 25)
|
|
.clipShape(Capsule())
|
|
.gesture(drag, including: .none)
|
|
Spacer()
|
|
Text("\(String(format: "%.2f", ueVM.average))")
|
|
}
|
|
}
|
|
}
|
|
|
|
struct UENoteSlider_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
let odin = OdinVM(blocs: Stub().loadBlocs())
|
|
let ueVM = odin.blocsVM[0].uesVM[0]
|
|
|
|
UENoteSlider(ueVM: ueVM)
|
|
}
|
|
}
|