Commit a31f3a2d authored by shigemi miura's avatar shigemi miura

ECAタスク修正

parent 575810d0
......@@ -1230,7 +1230,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.9.4;
MARKETING_VERSION = 0.9.5;
OTHER_SWIFT_FLAGS = "-D CANARY -D COCOAPODS";
PRODUCT_BUNDLE_IDENTIFIER = com.jrc.sailassist.canary;
PRODUCT_NAME = "Sail Assist";
......@@ -1273,7 +1273,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.9.4;
MARKETING_VERSION = 0.9.5;
OTHER_SWIFT_FLAGS = "-D COCOAPODS";
PRODUCT_BUNDLE_IDENTIFIER = com.jrc.sailassist;
PRODUCT_NAME = "Sail Assist";
......@@ -1459,7 +1459,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.9.4;
MARKETING_VERSION = 0.9.5;
OTHER_SWIFT_FLAGS = "-D QC -D COCOAPODS";
PRODUCT_BUNDLE_IDENTIFIER = com.jrc.sailassist.qc;
PRODUCT_NAME = "Sail Assist";
......
......@@ -46,7 +46,7 @@ class EcaTask {
SharingData.location.dataTime = res.dataTime //2023-11-02T05:25:49.4362123Z
SharingData.location.setLocation()
print(debug: "Location:\(res)")
checkEca()
}
case .failure(let errorCode):
......@@ -57,36 +57,37 @@ class EcaTask {
func checkEca() {
let runningEca = eca.ecaArea.first(where: {(key, value) in value.isRunning == true})
if var eca = runningEca?.value {
if let eca = runningEca?.value {
if let location = SharingData.location.location {
if let distance = LocationCalculation.checkPolyline(objPos: eca.points, shipPos: location) {
//起動時に状態を設定
if let distance = LocationCalculation.checkPolyline(objPos: eca.points, shipPos: location){
if SharingData.my.ecaStatus == nil {
eca = runningEcaStatus(eca: eca, distance: distance)
SharingData.my.ecaStatus = EcaState.running
}
if eca.swNotice >= Float(distance) && eca.status == EcaState.running {
notificationEca(point: SwitchingEca.Notice)
SharingData.eca.isShowEcaAlert = true
SharingData.my.ecaStatus = EcaState.noticePass
if 0.0 >= Float(distance) && SharingData.my.ecaStatus != EcaState.incomplete{
SharingData.my.ecaStatus = EcaState.incomplete
var newData = eca
newData.isRunning = false
newData.status = EcaState.incomplete
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Incomplete)
}
if eca.swStart >= Float(distance) && eca.status == EcaState.noticePass {
notificationEca(point: SwitchingEca.Start)
if eca.swFinish >= Float(distance) && 0.0 < Float(distance) && SharingData.my.ecaStatus != EcaState.finishPass{
notificationEca(point: SwitchingEca.Finish)
SharingData.eca.isShowEcaAlert = true
SharingData.my.ecaStatus = EcaState.startPass
SharingData.my.ecaStatus = EcaState.finishPass
}
if eca.swFinish >= Float(distance) && 0.0 < Float(distance) && eca.status == EcaState.startPass {
notificationEca(point: SwitchingEca.Finish)
if eca.swStart >= Float(distance) && eca.swFinish < Float(distance) && SharingData.my.ecaStatus != EcaState.startPass{
notificationEca(point: SwitchingEca.Start)
SharingData.eca.isShowEcaAlert = true
SharingData.my.ecaStatus = EcaState.finishPass
SharingData.my.ecaStatus = EcaState.startPass
}
if 0.0 >= Float(distance) && eca.status == EcaState.finishPass {
if eca.swNotice >= Float(distance) && eca.swStart < Float(distance) && SharingData.my.ecaStatus != EcaState.noticePass{
notificationEca(point: SwitchingEca.Notice)
SharingData.eca.isShowEcaAlert = true
SharingData.my.ecaStatus = EcaState.incomplete
SharingData.my.ecaStatus = EcaState.noticePass
}
}
}
......@@ -97,54 +98,119 @@ class EcaTask {
}
}
func runningEcaStatus(eca: RegisteredEca, distance: Double) -> RegisteredEca {
var result = false
var newData = eca
if 0.0 >= Float(distance){
newData.status = EcaState.finishPass
result = true
}
if eca.swFinish >= Float(distance) && result == false{
newData.status = EcaState.startPass
result = true
}
if eca.swStart >= Float(distance) && result == false{
newData.status = EcaState.noticePass
result = true
}
if eca.swNotice >= Float(distance) && result == false{
newData.status = EcaState.running
}
return newData
}
func chengeEcaStatus(eca: RegisteredEca) {
if eca.status == EcaState.running {
if let status = SharingData.my.ecaStatus{
var newData = eca
newData.status = EcaState.noticePass
newData.status = status
if status == EcaState.noticePass{ //ECA通知円到達
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Notice)
}
if eca.status == EcaState.noticePass {
var newData = eca
newData.status = EcaState.startPass
if status == EcaState.startPass{ //ECA開始円到達
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Start)
}
if eca.status == EcaState.startPass {
var newData = eca
newData.status = EcaState.finishPass
if status == EcaState.finishPass{ //ECAタスク終了円到達
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Finish)
}
if eca.status == EcaState.finishPass {
var newData = eca
newData.status = EcaState.incomplete
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Incomplete)
if status == EcaState.end{ //ECAタスク完了(燃料切替実施済み)
SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.End)
}
}
}
// func checkEca() {
// let runningEca = eca.ecaArea.first(where: {(key, value) in value.isRunning == true})
// if var eca = runningEca?.value {
// if let location = SharingData.location.location {
// if let distance = LocationCalculation.checkPolyline(objPos: eca.points, shipPos: location) {
//
// //ECA実行時に状態を取得
// if SharingData.my.ecaStatus == nil {
// eca = runningEcaStatus(eca: eca, distance: distance)
// }
//
// if eca.swNotice >= Float(distance) && eca.status == EcaState.running {
// notificationEca(point: SwitchingEca.Notice)
// SharingData.eca.isShowEcaAlert = true
// SharingData.my.ecaStatus = EcaState.noticePass
// }
//
// if eca.swStart >= Float(distance) && eca.status == EcaState.noticePass {
// notificationEca(point: SwitchingEca.Start)
// SharingData.eca.isShowEcaAlert = true
// SharingData.my.ecaStatus = EcaState.startPass
// }
//
// if eca.swFinish >= Float(distance) && 0.0 < Float(distance) && eca.status == EcaState.startPass {
// notificationEca(point: SwitchingEca.Finish)
// SharingData.eca.isShowEcaAlert = true
// SharingData.my.ecaStatus = EcaState.finishPass
// }
//
// if 0.0 >= Float(distance) && eca.status == EcaState.incomplete {
// SharingData.eca.isShowEcaAlert = true
// SharingData.my.ecaStatus = EcaState.incomplete
// }
// }
// }
// } else {
// if SharingData.my.ecaStatus != nil {
// SharingData.my.ecaStatus = nil
// }
// }
// }
// func runningEcaStatus(eca: RegisteredEca, distance: Double) -> RegisteredEca {
// var result = false
// var newData = eca
//
// newData.status = EcaState.running
//
// if 0.0 >= Float(distance){
// newData.status = EcaState.incomplete
// result = true
// }
//
// if eca.swFinish >= Float(distance) && result == false{
// newData.status = EcaState.startPass
// result = true
// }
//
// if eca.swStart >= Float(distance) && result == false{
// newData.status = EcaState.noticePass
// result = true
// }
//
// if eca.swNotice >= Float(distance) && result == false{
// newData.status = EcaState.running
// }
//
// return newData
// }
// func chengeEcaStatus(eca: RegisteredEca) {
// if eca.status == EcaState.running {
// var newData = eca
// newData.status = EcaState.noticePass
// SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Notice)
// }
//
// if eca.status == EcaState.noticePass {
// var newData = eca
// newData.status = EcaState.startPass
// SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Start)
// }
//
// if eca.status == EcaState.startPass {
// var newData = eca
// newData.status = EcaState.finishPass
// SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Finish)
// }
//
// if eca.status == EcaState.finishPass {
// var newData = eca
// newData.status = EcaState.incomplete
// SharingData.eca.editEcaArea(key: eca.name, value: newData, type: EcaOperation.Incomplete)
// }
// }
}
......@@ -256,6 +256,9 @@ struct LoginView: View {
// let ecaArea = EcaArea()
// ecaArea.start()
let eca = EcaTask()
eca.start()
timer = Timer.scheduledTimer(withTimeInterval: TimerInterval, repeats: true) { _ in
print(debug: "called timer")
let eca = EcaTask()
......
......@@ -32,8 +32,8 @@ struct MapRepresentable: UIViewControllerRepresentable{
if let focusEcaName = ecaData.focusEca, let focusEca = ecaData.ecaArea[focusEcaName]{
mapVC.updateCamera(location: focusEca.centerPosition, zoomlevel: focusEca.zoomLevel)
mapVC.updateOneTimeEca(eca: focusEca.points)
//5秒後削除
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
//10秒後削除
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
do{
mapVC.updateOneTimeEca(eca: nil)
}catch{
......
......@@ -88,33 +88,17 @@ struct MapTaskView: View {
Spacer()
.frame(height: 55)
}
.onAppear{
EcaCoordinatesTable().setEcaData()
}
.alert("", isPresented: $eca.isShowEcaAlert) {
if let ecaArea = eca.ecaArea.map({ $0.1 }).filter({ $0.isRunning }).first{
if SharingData.my.ecaStatus == .finishPass{
Button("Yes"){
var newData = ecaArea
newData.isRunning = false
newData.status = EcaState.end
SharingData.eca.editEcaArea(key: ecaArea.name, value: newData, type: EcaOperation.Finish)
}
Button("No"){
var newData = ecaArea
newData.isRunning = false
newData.status = EcaState.incomplete
SharingData.eca.editEcaArea(key: ecaArea.name, value: newData, type: EcaOperation.Incomplete)
}
}else{
Button("OK"){
let ecaTask = EcaTask()
ecaTask.chengeEcaStatus(eca: ecaArea)
}
}
}
} message: {
if let ecaArea = eca.ecaArea.map({ $0.1 }).filter({ $0.isRunning }).first{
if let status = SharingData.my.ecaStatus {
......@@ -124,7 +108,7 @@ struct MapTaskView: View {
case .startPass:
Text("Arrived at switching start point.")
case .finishPass:
Text("Have you finished \(ecaArea.name) fuel switching?")
Text("Have you finished \(ecaArea.name) fuel switching?\nIf you finish, you disable it.")
case .incomplete:
Text("Have you finished \(ecaArea.name) fuel switching?\nIf you finish, you disable it.")
default:
......
......@@ -7,16 +7,18 @@
import SwiftUI
enum EcaAlertType: String {
case ecaDelete
case ecaRunningStop
}
//enum EcaAlertType: String {
// case ecaDelete
// case ecaRunningStop
//}
struct TaskSwitchingMenuView: View {
@ObservedObject var taskViewModel: TaskViewModel
@ObservedObject var ecaData = SharingData.eca
@State var isEcaAlert : Bool = false
@State var ecaAlertType: EcaAlertType = .ecaDelete
// @State var isEcaAlert : Bool = false
// @State var ecaAlertType: EcaAlertType = .ecaDelete
@State var isDeleteAlert: Bool = false
@State var isRunningStopAlert: Bool = false
let deleteEcaArea = DeleteEcaArea()
var body: some View {
......@@ -29,10 +31,9 @@ struct TaskSwitchingMenuView: View {
for runningEca in ecaData.ecaArea.map({ $0.1 }).filter({ $0.isRunning }){
taskViewModel.edittingEcaArea = runningEca
taskViewModel.ecaName = runningEca.name
isEcaAlert = true
ecaAlertType = .ecaRunningStop
isRunningStopAlert = true
}
if isEcaAlert == false {
if isRunningStopAlert == false {
var newData = eca
newData.isRunning = true
newData.status = EcaState.running
......@@ -71,8 +72,7 @@ struct TaskSwitchingMenuView: View {
Button{
taskViewModel.edittingEcaArea = eca
taskViewModel.ecaName = eca.name
isEcaAlert = true
ecaAlertType = .ecaDelete
isDeleteAlert = true
} label: {
Text("Delete ECA Task")
}
......@@ -82,13 +82,8 @@ struct TaskSwitchingMenuView: View {
.foregroundColor(eca.isRunning ? ColorSet.Splash.color : ColorSet.Slidebar.color)
}
.disabled(eca.isRunning)
.alert(isPresented: $isEcaAlert) {
switch ecaAlertType {
case .ecaDelete:
return Alert(title: Text("Delete"),
message: Text("Do you delete " + taskViewModel.ecaName + "?"),
primaryButton: .default(Text("No")),
secondaryButton: .cancel(Text("Yes"), action: {
.alert("Delete", isPresented: $isDeleteAlert) {
Button("Yes") {
if let ecaArea = taskViewModel.edittingEcaArea {
var newData = ecaArea
newData.isEnable = false
......@@ -98,21 +93,33 @@ struct TaskSwitchingMenuView: View {
deleteEcaArea.start(ecaId: ecaArea.id)
}
taskViewModel.edittingEcaArea = nil
}))
case .ecaRunningStop:
return Alert(title: Text("Stop"),
message: Text("Do you want to stop " + taskViewModel.ecaName + "?"),
primaryButton: .default(Text("Cancel")),
secondaryButton: .cancel(Text("Stop"), action: {
}
Button("No"){}
} message: {
Text("Do you delete " + taskViewModel.ecaName + "?")
}
.alert("Fuel Switching", isPresented:$isRunningStopAlert) {
Button("Yes") {
if let ecaArea = taskViewModel.edittingEcaArea {
var newData = ecaArea
newData.isRunning = false
newData.status = EcaState.cancel
ecaData.editEcaArea(key: ecaArea.name, value: newData, type: EcaOperation.Cancel)
newData.status = EcaState.end
ecaData.editEcaArea(key: ecaArea.name, value: newData, type: EcaOperation.End)
}
taskViewModel.edittingEcaArea = nil
}))
}
Button("No"){}
// Button("Cancel"){¥
// if let ecaArea = taskViewModel.edittingEcaArea {
// var newData = ecaArea
// newData.isRunning = false
// newData.status = EcaState.cancel
// ecaData.editEcaArea(key: ecaArea.name, value: newData, type: EcaOperation.Cancel)
// }
// taskViewModel.edittingEcaArea = nil
// }
} message: {
Text("Do you delete " + taskViewModel.ecaName + "?")
}
}
.frame(height: 60)
......
......@@ -14,6 +14,7 @@ enum EcaOperation {
case Notice
case Start
case Finish
case End
case Incomplete
case Change
case Cancel
......@@ -186,6 +187,16 @@ class SharingData{
task.status = setEcaStatus(eca: value)
}
setEcaArea.start(eca: task)
case EcaOperation.End:
task.areaId = value.id
task.taskName = value.name
task.noticeRange = value.swNotice
task.startRange = value.swStart
task.finishRange = value.swFinish
if value.isEnable {
task.status = setEcaStatus(eca: value)
}
setEcaArea.start(eca: task)
case EcaOperation.Incomplete:
task.areaId = value.id
task.taskName = value.name
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment