Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
Sailassist
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
CpjJwWHV
Sailassist
Commits
9c00f333
Commit
9c00f333
authored
Dec 04, 2023
by
shigemi miura
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
タスク登録・削除(削除出来ない不具合あり)
Push履歴取得 その他
parent
06371738
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
549 additions
and
177 deletions
+549
-177
project.pbxproj
Seilassist/Sailassist.xcodeproj/project.pbxproj
+12
-0
GetPushHistory.swift
Seilassist/Sailassist/Alert/GetPushHistory.swift
+36
-0
DeleteEcaArea.swift
Seilassist/Sailassist/ECA/DeleteEcaArea.swift
+1
-1
EcaCoordinatesTable.swift
Seilassist/Sailassist/ECA/EcaCoordinatesTable.swift
+49
-49
EcaTask.swift
Seilassist/Sailassist/ECA/EcaTask.swift
+34
-27
GetEcaList.swift
Seilassist/Sailassist/ECA/GetEcaList.swift
+41
-4
RegisteredEca.swift
Seilassist/Sailassist/ECA/RegisteredEca.swift
+12
-2
SetEcaArea.swift
Seilassist/Sailassist/ECA/SetEcaArea.swift
+6
-8
HttpRequestType.swift
Seilassist/Sailassist/Http/HttpRequestType.swift
+5
-2
ReqTaskList.swift
Seilassist/Sailassist/Json/ReqTaskList.swift
+10
-3
ResPushHistory.swift
Seilassist/Sailassist/Json/ResPushHistory.swift
+36
-0
LocationCalculation.swift
Seilassist/Sailassist/Location/LocationCalculation.swift
+6
-4
LocationViewModel.swift
Seilassist/Sailassist/LocationViewModel.swift
+25
-27
LoginView.swift
Seilassist/Sailassist/Login/LoginView.swift
+9
-5
InputUserNameView.swift
Seilassist/Sailassist/Login/View/InputUserNameView.swift
+9
-5
ScannerViewModel.swift
Seilassist/Sailassist/Login/ViewModel/ScannerViewModel.swift
+4
-4
EcaListView.swift
Seilassist/Sailassist/Map/Task/View/EcaListView.swift
+1
-1
EcaSettingView.swift
Seilassist/Sailassist/Map/Task/View/EcaSettingView.swift
+1
-3
TaskSwitchingMenuView.swift
...sist/Sailassist/Map/Task/View/TaskSwitchingMenuView.swift
+5
-4
MenuGpsSelectView.swift
Seilassist/Sailassist/Menu/View/MenuGpsSelectView.swift
+1
-0
Preferences.swift
Seilassist/Sailassist/Preferences/Preferences.swift
+3
-2
PreferencesKey.swift
Seilassist/Sailassist/Preferences/PreferencesKey.swift
+3
-3
SailassistApp.swift
Seilassist/Sailassist/SailassistApp.swift
+43
-4
ServerSession.swift
Seilassist/Sailassist/ServerSession/ServerSession.swift
+1
-0
SessionEcaArea.swift
Seilassist/Sailassist/ServerSession/SessionEcaArea.swift
+1
-1
SessionGetMessage.swift
Seilassist/Sailassist/ServerSession/SessionGetMessage.swift
+1
-1
SessionMonitoringRoute.swift
...ist/Sailassist/ServerSession/SessionMonitoringRoute.swift
+1
-1
SessionPushHistory.swift
Seilassist/Sailassist/ServerSession/SessionPushHistory.swift
+42
-0
SessionShipStatus.swift
Seilassist/Sailassist/ServerSession/SessionShipStatus.swift
+1
-1
SessionTaskList.swift
Seilassist/Sailassist/ServerSession/SessionTaskList.swift
+3
-3
SharingData.swift
Seilassist/Sailassist/SharingData/SharingData.swift
+144
-9
SignalRService.swift
Seilassist/Sailassist/SignalR/SignalRService.swift
+3
-3
No files found.
Seilassist/Sailassist.xcodeproj/project.pbxproj
View file @
9c00f333
...
@@ -96,6 +96,9 @@
...
@@ -96,6 +96,9 @@
D592D5252B0F16CA00B91A1C
/* ReqMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
;
};
D592D5252B0F16CA00B91A1C
/* ReqMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
;
};
D592D5272B0F182C00B91A1C
/* ReqAckMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
;
};
D592D5272B0F182C00B91A1C
/* ReqAckMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
;
};
D592D5292B0F198100B91A1C
/* ReqChatModeMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
;
};
D592D5292B0F198100B91A1C
/* ReqChatModeMessage.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
;
};
D59908C62B19EA70000E13DD
/* ResPushHistory.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D59908C52B19EA70000E13DD
/* ResPushHistory.swift */
;
};
D59908C82B1ABD43000E13DD
/* SessionPushHistory.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D59908C72B1ABD43000E13DD
/* SessionPushHistory.swift */
;
};
D59908CA2B1AC381000E13DD
/* GetPushHistory.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D59908C92B1AC381000E13DD
/* GetPushHistory.swift */
;
};
D5AE351A2AEBA66A00059889
/* ReqLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE35182AEBA66A00059889
/* ReqLogin.swift */
;
};
D5AE351A2AEBA66A00059889
/* ReqLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE35182AEBA66A00059889
/* ReqLogin.swift */
;
};
D5AE351B2AEBA66A00059889
/* ResLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE35192AEBA66A00059889
/* ResLogin.swift */
;
};
D5AE351B2AEBA66A00059889
/* ResLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE35192AEBA66A00059889
/* ResLogin.swift */
;
};
D5AE351D2AEBA6FC00059889
/* SessionLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE351C2AEBA6FC00059889
/* SessionLogin.swift */
;
};
D5AE351D2AEBA6FC00059889
/* SessionLogin.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
D5AE351C2AEBA6FC00059889
/* SessionLogin.swift */
;
};
...
@@ -239,6 +242,9 @@
...
@@ -239,6 +242,9 @@
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqMessage.swift
;
path
=
Sailassist/Json/ReqMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqMessage.swift
;
path
=
Sailassist/Json/ReqMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqAckMessage.swift
;
path
=
Sailassist/Json/ReqAckMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqAckMessage.swift
;
path
=
Sailassist/Json/ReqAckMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqChatModeMessage.swift
;
path
=
Sailassist/Json/ReqChatModeMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqChatModeMessage.swift
;
path
=
Sailassist/Json/ReqChatModeMessage.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D59908C52B19EA70000E13DD
/* ResPushHistory.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ResPushHistory.swift
;
path
=
Sailassist/Json/ResPushHistory.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D59908C72B1ABD43000E13DD
/* SessionPushHistory.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
SessionPushHistory.swift
;
path
=
Sailassist/ServerSession/SessionPushHistory.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D59908C92B1AC381000E13DD
/* GetPushHistory.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
name
=
GetPushHistory.swift
;
path
=
Sailassist/Alert/GetPushHistory.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE35182AEBA66A00059889
/* ReqLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqLogin.swift
;
path
=
Sailassist/Json/ReqLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE35182AEBA66A00059889
/* ReqLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ReqLogin.swift
;
path
=
Sailassist/Json/ReqLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE35192AEBA66A00059889
/* ResLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ResLogin.swift
;
path
=
Sailassist/Json/ResLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE35192AEBA66A00059889
/* ResLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
ResLogin.swift
;
path
=
Sailassist/Json/ResLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE351C2AEBA6FC00059889
/* SessionLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
SessionLogin.swift
;
path
=
Sailassist/ServerSession/SessionLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
D5AE351C2AEBA6FC00059889
/* SessionLogin.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
name
=
SessionLogin.swift
;
path
=
Sailassist/ServerSession/SessionLogin.swift
;
sourceTree
=
SOURCE_ROOT
;
};
...
@@ -450,6 +456,7 @@
...
@@ -450,6 +456,7 @@
children
=
(
children
=
(
023DB8262B1429CE00B351CF
/* View */
,
023DB8262B1429CE00B351CF
/* View */
,
020B98642ADD14F60029DE4C
/* NotificationView.swift */
,
020B98642ADD14F60029DE4C
/* NotificationView.swift */
,
D59908C92B1AC381000E13DD
/* GetPushHistory.swift */
,
);
);
path
=
Alert
;
path
=
Alert
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
...
@@ -520,6 +527,7 @@
...
@@ -520,6 +527,7 @@
D5258CA22B036CC500365276
/* SessionGetMessage.swift */
,
D5258CA22B036CC500365276
/* SessionGetMessage.swift */
,
D5E03A662B04484D00D65FCE
/* SessionTaskList.swift */
,
D5E03A662B04484D00D65FCE
/* SessionTaskList.swift */
,
D592D5222B0F14FE00B91A1C
/* SessionUploadImage.swift */
,
D592D5222B0F14FE00B91A1C
/* SessionUploadImage.swift */
,
D59908C72B1ABD43000E13DD
/* SessionPushHistory.swift */
,
);
);
path
=
ServerSession
;
path
=
ServerSession
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
...
@@ -675,6 +683,7 @@
...
@@ -675,6 +683,7 @@
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
,
D592D5242B0F16CA00B91A1C
/* ReqMessage.swift */
,
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
,
D592D5262B0F182C00B91A1C
/* ReqAckMessage.swift */
,
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
,
D592D5282B0F198100B91A1C
/* ReqChatModeMessage.swift */
,
D59908C52B19EA70000E13DD
/* ResPushHistory.swift */
,
);
);
path
=
Json
;
path
=
Json
;
sourceTree
=
"<group>"
;
sourceTree
=
"<group>"
;
...
@@ -934,6 +943,7 @@
...
@@ -934,6 +943,7 @@
02A1DE312AFB61D8005BCF55
/* MyChatContentView.swift in Sources */
,
02A1DE312AFB61D8005BCF55
/* MyChatContentView.swift in Sources */
,
D58E1F522B142A3F0092D8FE
/* ResEcaArea.swift in Sources */
,
D58E1F522B142A3F0092D8FE
/* ResEcaArea.swift in Sources */
,
025C27FE2B0206D700BADC49
/* PDFDownloadManager.swift in Sources */
,
025C27FE2B0206D700BADC49
/* PDFDownloadManager.swift in Sources */
,
D59908CA2B1AC381000E13DD
/* GetPushHistory.swift in Sources */
,
025C27FC2AFE191A00BADC49
/* MenuManualView.swift in Sources */
,
025C27FC2AFE191A00BADC49
/* MenuManualView.swift in Sources */
,
D58E1F502B142A260092D8FE
/* EcaArea.swift in Sources */
,
D58E1F502B142A260092D8FE
/* EcaArea.swift in Sources */
,
020B98592AD92A4C0029DE4C
/* MainTabView.swift in Sources */
,
020B98592AD92A4C0029DE4C
/* MainTabView.swift in Sources */
,
...
@@ -948,6 +958,7 @@
...
@@ -948,6 +958,7 @@
020B98672ADD15050029DE4C
/* MenuView.swift in Sources */
,
020B98672ADD15050029DE4C
/* MenuView.swift in Sources */
,
020B98572AD924F50029DE4C
/* CameraPreview.swift in Sources */
,
020B98572AD924F50029DE4C
/* CameraPreview.swift in Sources */
,
D5CB6FA12B023F7F00EC2010
/* EcaTask.swift in Sources */
,
D5CB6FA12B023F7F00EC2010
/* EcaTask.swift in Sources */
,
D59908C82B1ABD43000E13DD
/* SessionPushHistory.swift in Sources */
,
02CD068F2AE6535F005F8D8F
/* MapSource.swift in Sources */
,
02CD068F2AE6535F005F8D8F
/* MapSource.swift in Sources */
,
02C3E5CE2AFCA04700AF7837
/* OtherChatContentView.swift in Sources */
,
02C3E5CE2AFCA04700AF7837
/* OtherChatContentView.swift in Sources */
,
020B98442AD8E4910029DE4C
/* FontStyle.swift in Sources */
,
020B98442AD8E4910029DE4C
/* FontStyle.swift in Sources */
,
...
@@ -960,6 +971,7 @@
...
@@ -960,6 +971,7 @@
D5258CA32B036CC500365276
/* SessionGetMessage.swift in Sources */
,
D5258CA32B036CC500365276
/* SessionGetMessage.swift in Sources */
,
D5258C992B0334BF00365276
/* SessionShipStatus.swift in Sources */
,
D5258C992B0334BF00365276
/* SessionShipStatus.swift in Sources */
,
02CE4D872ADF62A7002E79BC
/* EcaListView.swift in Sources */
,
02CE4D872ADF62A7002E79BC
/* EcaListView.swift in Sources */
,
D59908C62B19EA70000E13DD
/* ResPushHistory.swift in Sources */
,
020B986C2ADD3E810029DE4C
/* InTextLib.swift in Sources */
,
020B986C2ADD3E810029DE4C
/* InTextLib.swift in Sources */
,
02C3E5D12AFCC16800AF7837
/* ChatTitleView.swift in Sources */
,
02C3E5D12AFCC16800AF7837
/* ChatTitleView.swift in Sources */
,
024EDE1D2B0C42F70013BAC8
/* MenuGpsSelectView.swift in Sources */
,
024EDE1D2B0C42F70013BAC8
/* MenuGpsSelectView.swift in Sources */
,
...
...
Seilassist/Sailassist/Alert/GetPushHistory.swift
0 → 100644
View file @
9c00f333
//
// GetPushHistory.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/12/02.
//
import
Foundation
class
GetPushHistory
{
var
sessionPushHistory
=
SessionPushHistory
()
func
start
()
{
print
(
debug
:
"called"
)
sessionPushHistory
.
RequestPushHistory
(
responsePushHistory
)
}
private
func
responsePushHistory
(
result
:
Result
<
Data
,
APIError
>
)
{
print
(
debug
:
"called"
)
switch
result
{
case
.
success
(
let
resultData
):
let
serverSession
=
ServerSession
()
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
[
ResPushHistory
]
.
self
)
if
let
res
=
resjson
{
for
push
in
res
{
if
let
id
=
push
.
id
{
SharingData
.
pushHistory
.
setPushHistory
(
key
:
id
,
value
:
push
)
}
}
}
case
.
failure
(
let
errorCode
):
print
(
debug
:
errorCode
)
break
}
}
}
Seilassist/Sailassist/ECA/DeleteEcaArea.swift
View file @
9c00f333
...
@@ -12,7 +12,7 @@ class DeleteEcaArea {
...
@@ -12,7 +12,7 @@ class DeleteEcaArea {
func
start
(
ecaId
:
Int
)
{
func
start
(
ecaId
:
Int
)
{
print
(
debug
:
"called"
)
print
(
debug
:
"called"
)
//
sessionTaskList.RequestDeleteTaskList(ecaId, completion: responseDeleteTaskList)
sessionTaskList
.
RequestDeleteTaskList
(
ecaId
,
completion
:
responseDeleteTaskList
)
}
}
private
func
responseDeleteTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
private
func
responseDeleteTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
...
...
Seilassist/Sailassist/ECA/EcaCoordinatesTable.swift
View file @
9c00f333
...
@@ -3718,53 +3718,53 @@ var iceland:[CLLocationCoordinate2D] = [
...
@@ -3718,53 +3718,53 @@ var iceland:[CLLocationCoordinate2D] = [
//ECA Coordinates IMO
//ECA Coordinates IMO
var
northAmericanPacificCoasts
:[
CLLocationCoordinate2D
]
=
[
var
northAmericanPacificCoasts
:[
CLLocationCoordinate2D
]
=
[
CLLocationCoordinate2D
(
latitude
:
32.53
361111
,
longitude
:
-
117.1030
556
),
CLLocationCoordinate2D
(
latitude
:
32.53
611111
,
longitude
:
-
117.10305
556
),
CLLocationCoordinate2D
(
latitude
:
32.53444444
,
longitude
:
-
117.1247222
),
CLLocationCoordinate2D
(
latitude
:
32.53444444
,
longitude
:
-
117.1247222
2
),
CLLocationCoordinate2D
(
latitude
:
32.52750000
,
longitude
:
-
117.23
3
8889
),
CLLocationCoordinate2D
(
latitude
:
32.52750000
,
longitude
:
-
117.23
88
8889
),
CLLocationCoordinate2D
(
latitude
:
32.55361111
,
longitude
:
-
117.2
513
889
),
CLLocationCoordinate2D
(
latitude
:
32.55361111
,
longitude
:
-
117.2
6388
889
),
CLLocationCoordinate2D
(
latitude
:
32.57250000
,
longitude
:
-
117.3669444
),
CLLocationCoordinate2D
(
latitude
:
32.57250000
,
longitude
:
-
117.3669444
4
),
CLLocationCoordinate2D
(
latitude
:
32.58972222
,
longitude
:
-
117.4647222
),
CLLocationCoordinate2D
(
latitude
:
32.58972222
,
longitude
:
-
117.4647222
2
),
CLLocationCoordinate2D
(
latitude
:
32.62722222
,
longitude
:
-
117.8261111
),
CLLocationCoordinate2D
(
latitude
:
32.62722222
,
longitude
:
-
117.8261111
1
),
CLLocationCoordinate2D
(
latitude
:
31.13305556
,
longitude
:
-
118.6058333
),
CLLocationCoordinate2D
(
latitude
:
31.13305556
,
longitude
:
-
118.6058333
3
),
CLLocationCoordinate2D
(
latitude
:
30.55694444
,
longitude
:
-
121.7913889
),
CLLocationCoordinate2D
(
latitude
:
30.55694444
,
longitude
:
-
121.791388
8
9
),
CLLocationCoordinate2D
(
latitude
:
31.76972222
,
longitude
:
-
123.2894444
),
CLLocationCoordinate2D
(
latitude
:
31.76972222
,
longitude
:
-
123.2894444
4
),
CLLocationCoordinate2D
(
latitude
:
32.36611111
,
longitude
:
-
123.8455556
),
CLLocationCoordinate2D
(
latitude
:
32.36611111
,
longitude
:
-
123.845555
5
6
),
CLLocationCoordinate2D
(
latitude
:
32.94416667
,
longitude
:
-
124.1963889
),
CLLocationCoordinate2D
(
latitude
:
32.94416667
,
longitude
:
-
124.196388
8
9
),
CLLocationCoordinate2D
(
latitude
:
33.67000000
,
longitude
:
-
124.4541667
),
CLLocationCoordinate2D
(
latitude
:
33.67000000
,
longitude
:
-
124.454166
6
7
),
CLLocationCoordinate2D
(
latitude
:
34.52444444
,
longitude
:
-
125.2811111
),
CLLocationCoordinate2D
(
latitude
:
34.52444444
,
longitude
:
-
125.2811111
1
),
CLLocationCoordinate2D
(
latitude
:
35.24388889
,
longitude
:
-
125.7230556
),
CLLocationCoordinate2D
(
latitude
:
35.24388889
,
longitude
:
-
125.723055
5
6
),
CLLocationCoordinate2D
(
latitude
:
35.7
1833333
,
longitude
:
-
126.3147
222
),
CLLocationCoordinate2D
(
latitude
:
35.7
3333333
,
longitude
:
-
126.31472
222
),
CLLocationCoordinate2D
(
latitude
:
36.27361111
,
longitude
:
-
126.75
08
333
),
CLLocationCoordinate2D
(
latitude
:
36.27361111
,
longitude
:
-
126.75
833
333
),
CLLocationCoordinate2D
(
latitude
:
37.02638889
,
longitude
:
-
127.1216667
),
CLLocationCoordinate2D
(
latitude
:
37.02638889
,
longitude
:
-
127.121666
6
7
),
CLLocationCoordinate2D
(
latitude
:
37.76083333
,
longitude
:
-
127.6338889
),
CLLocationCoordinate2D
(
latitude
:
37.76083333
,
longitude
:
-
127.633888
8
9
),
CLLocationCoordinate2D
(
latitude
:
38.41888889
,
longitude
:
-
127.8
68
3333
),
CLLocationCoordinate2D
(
latitude
:
38.41888889
,
longitude
:
-
127.8
833
3333
),
CLLocationCoordinate2D
(
latitude
:
39.41805556
,
longitude
:
-
128.5230556
),
CLLocationCoordinate2D
(
latitude
:
39.41805556
,
longitude
:
-
128.523055
5
6
),
CLLocationCoordinate2D
(
latitude
:
40.31305556
,
longitude
:
-
128.7627778
),
CLLocationCoordinate2D
(
latitude
:
40.31305556
,
longitude
:
-
128.762777
7
8
),
CLLocationCoordinate2D
(
latitude
:
41.22750000
,
longitude
:
-
128.6727778
),
CLLocationCoordinate2D
(
latitude
:
41.22750000
,
longitude
:
-
128.672777
7
8
),
CLLocationCoordinate2D
(
latitude
:
42.21361111
,
longitude
:
-
129.0105556
),
CLLocationCoordinate2D
(
latitude
:
42.21361111
,
longitude
:
-
129.010555
5
6
),
CLLocationCoordinate2D
(
latitude
:
42.79277778
,
longitude
:
-
129.0950000
),
CLLocationCoordinate2D
(
latitude
:
42.79277778
,
longitude
:
-
129.0950000
0
),
CLLocationCoordinate2D
(
latitude
:
43.43944444
,
longitude
:
-
129.0238889
),
CLLocationCoordinate2D
(
latitude
:
43.43944444
,
longitude
:
-
129.023888
8
9
),
CLLocationCoordinate2D
(
latitude
:
44.41194444
,
longitude
:
-
128.6897222
),
CLLocationCoordinate2D
(
latitude
:
44.41194444
,
longitude
:
-
128.6897222
2
),
CLLocationCoordinate2D
(
latitude
:
45.51194444
,
longitude
:
-
128.6672222
),
CLLocationCoordinate2D
(
latitude
:
45.51194444
,
longitude
:
-
128.6672222
2
),
CLLocationCoordinate2D
(
latitude
:
46.18361111
,
longitude
:
-
128.8169444
),
CLLocationCoordinate2D
(
latitude
:
46.18361111
,
longitude
:
-
128.8169444
4
),
CLLocationCoordinate2D
(
latitude
:
46.56527778
,
longitude
:
-
129.0747222
),
CLLocationCoordinate2D
(
latitude
:
46.56527778
,
longitude
:
-
129.0747222
2
),
CLLocationCoordinate2D
(
latitude
:
47.66527778
,
longitude
:
-
131.2613889
),
CLLocationCoordinate2D
(
latitude
:
47.66527778
,
longitude
:
-
131.261388
8
9
),
CLLocationCoordinate2D
(
latitude
:
48.54222222
,
longitude
:
-
132.6833333
),
CLLocationCoordinate2D
(
latitude
:
48.54222222
,
longitude
:
-
132.6833333
3
),
CLLocationCoordinate2D
(
latitude
:
48.96305556
,
longitude
:
-
133.2463889
),
CLLocationCoordinate2D
(
latitude
:
48.96305556
,
longitude
:
-
133.246388
8
9
),
CLLocationCoordinate2D
(
latitude
:
49.37750000
,
longitude
:
-
134.2641667
),
CLLocationCoordinate2D
(
latitude
:
49.37750000
,
longitude
:
-
134.264166
6
7
),
CLLocationCoordinate2D
(
latitude
:
50.03111111
,
longitude
:
-
135.3169444
),
CLLocationCoordinate2D
(
latitude
:
50.03111111
,
longitude
:
-
135.3169444
4
),
CLLocationCoordinate2D
(
latitude
:
51.05500000
,
longitude
:
-
136.7625000
),
CLLocationCoordinate2D
(
latitude
:
51.05500000
,
longitude
:
-
136.7625000
0
),
CLLocationCoordinate2D
(
latitude
:
51.90111111
,
longitude
:
-
137.6983333
),
CLLocationCoordinate2D
(
latitude
:
51.90111111
,
longitude
:
-
137.6983333
3
),
CLLocationCoordinate2D
(
latitude
:
52.75333333
,
longitude
:
-
138.3372222
),
CLLocationCoordinate2D
(
latitude
:
52.75333333
,
longitude
:
-
138.3372222
2
),
CLLocationCoordinate2D
(
latitude
:
53.48
388889
,
longitude
:
-
138.67
66667
),
CLLocationCoordinate2D
(
latitude
:
53.48
888889
,
longitude
:
-
138.676
66667
),
CLLocationCoordinate2D
(
latitude
:
53.67750000
,
longitude
:
-
138.8147222
),
CLLocationCoordinate2D
(
latitude
:
53.67750000
,
longitude
:
-
138.8147222
2
),
CLLocationCoordinate2D
(
latitude
:
54.22916667
,
longitude
:
-
139.5438889
),
CLLocationCoordinate2D
(
latitude
:
54.22916667
,
longitude
:
-
139.543888
8
9
),
CLLocationCoordinate2D
(
latitude
:
54.65694444
,
longitude
:
-
139.9386111
),
CLLocationCoordinate2D
(
latitude
:
54.65694444
,
longitude
:
-
139.9386111
1
),
CLLocationCoordinate2D
(
latitude
:
55.33833333
,
longitude
:
-
140.9291667
),
CLLocationCoordinate2D
(
latitude
:
55.33833333
,
longitude
:
-
140.929166
6
7
),
CLLocationCoordinate2D
(
latitude
:
56.12000000
,
longitude
:
-
141.6050000
),
CLLocationCoordinate2D
(
latitude
:
56.12000000
,
longitude
:
-
141.6050000
0
),
CLLocationCoordinate2D
(
latitude
:
56.47555556
,
longitude
:
-
142.2886111
),
CLLocationCoordinate2D
(
latitude
:
56.47555556
,
longitude
:
-
142.2886111
1
),
CLLocationCoordinate2D
(
latitude
:
56.62194444
,
longitude
:
-
142.8158333
),
CLLocationCoordinate2D
(
latitude
:
56.62194444
,
longitude
:
-
142.8158333
3
),
CLLocationCoordinate2D
(
latitude
:
58.85111111
,
longitude
:
-
153.2508333
)
CLLocationCoordinate2D
(
latitude
:
58.85111111
,
longitude
:
-
153.2508333
3
)
]
]
var
northAmericanAtlanticCoasts
:[
CLLocationCoordinate2D
]
=
[
var
northAmericanAtlanticCoasts
:[
CLLocationCoordinate2D
]
=
[
...
@@ -4313,7 +4313,7 @@ class EcaCoordinatesTable : NSObject {
...
@@ -4313,7 +4313,7 @@ class EcaCoordinatesTable : NSObject {
}
}
var
ecaDataTable
:[
ecaData
]
=
[
var
ecaDataTable
:[
ecaData
]
=
[
// ecaData(id: 11, name: "North American Atlantic Coasts", table: northAmericanAtlanticCoasts),
ecaData
(
id
:
11
,
name
:
"North American Atlantic Coasts"
,
table
:
northAmericanAtlanticCoasts
)
// ecaData(id: 12, name: "North American Hawai", table: northAmericanHawai),
// ecaData(id: 12, name: "North American Hawai", table: northAmericanHawai),
// ecaData(id: 31, name: "Unites States Caribbean", table: unitesStatesCaribbean),
// ecaData(id: 31, name: "Unites States Caribbean", table: unitesStatesCaribbean),
// ecaData(id: 21, name: "North Sea 1", table: northSea1), //err
// ecaData(id: 21, name: "North Sea 1", table: northSea1), //err
...
@@ -4332,7 +4332,7 @@ class EcaCoordinatesTable : NSObject {
...
@@ -4332,7 +4332,7 @@ class EcaCoordinatesTable : NSObject {
// ecaData(id: 17, name: "Korea Busan Port West", table: koreaBusanPortWest),
// ecaData(id: 17, name: "Korea Busan Port West", table: koreaBusanPortWest),
// ecaData(id: 18, name: "Korea Ulsan Port", table: koreaUlsanPort),
// ecaData(id: 18, name: "Korea Ulsan Port", table: koreaUlsanPort),
// ecaData(id: 19, name: "Panama Canal Atlantic Entrance", table: panamaCanalAtlanticEntrance),
// ecaData(id: 19, name: "Panama Canal Atlantic Entrance", table: panamaCanalAtlanticEntrance),
ecaData
(
id
:
20
,
name
:
"Panama Canal Pacific Entrance"
,
table
:
panamaCanalPacificEntrance
)
//
ecaData(id: 20, name: "Panama Canal Pacific Entrance", table: panamaCanalPacificEntrance)
]
]
func
setEcaData
()
{
func
setEcaData
()
{
...
...
Seilassist/Sailassist/ECA/EcaTask.swift
View file @
9c00f333
...
@@ -45,8 +45,8 @@ class EcaTask {
...
@@ -45,8 +45,8 @@ class EcaTask {
SharingData
.
my
.
server
=
CLLocationCoordinate2D
(
latitude
:
res
.
lat
,
longitude
:
res
.
lon
)
SharingData
.
my
.
server
=
CLLocationCoordinate2D
(
latitude
:
res
.
lat
,
longitude
:
res
.
lon
)
SharingData
.
my
.
dataTime
=
res
.
dataTime
//2023-11-02T05:25:49.4362123Z
SharingData
.
my
.
dataTime
=
res
.
dataTime
//2023-11-02T05:25:49.4362123Z
SharingData
.
my
.
setLocation
()
if
Preferences
.
LocationType
==
1
{
if
Preferences
.
LocationType
==
1
{
SharingData
.
my
.
location
=
SharingData
.
my
.
server
checkEca
()
checkEca
()
}
}
}
}
...
@@ -58,34 +58,41 @@ class EcaTask {
...
@@ -58,34 +58,41 @@ class EcaTask {
func
checkEca
()
{
func
checkEca
()
{
let
runningEca
=
eca
.
ecaArea
.
first
(
where
:
{(
key
,
value
)
in
value
.
isRunning
==
true
})
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
.
my
.
location
{
if
let
location
=
SharingData
.
my
.
location
{
let
distance
=
LocationCalculation
.
checkPolyline
(
objPos
:
eca
.
points
,
shipPos
:
location
)
if
let
distance
=
LocationCalculation
.
checkPolyline
(
objPos
:
eca
.
points
,
shipPos
:
location
)
{
if
eca
.
swNotice
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
start
{
if
eca
.
swNotice
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
running
{
notificationEca
(
point
:
SwitchingEca
.
Start
)
notificationEca
(
point
:
SwitchingEca
.
Notice
)
eca
.
status
=
EcaState
.
noticePass
SharingData
.
eca
.
isShowEcaAlert
=
true
SharingData
.
eca
.
isShowEcaAlert
=
true
var
newData
=
eca
}
newData
.
status
=
EcaState
.
noticePass
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Notice
)
if
eca
.
swStart
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
noticePass
{
}
notificationEca
(
point
:
SwitchingEca
.
Notice
)
eca
.
status
=
EcaState
.
startPass
if
eca
.
swStart
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
noticePass
{
SharingData
.
eca
.
isShowEcaAlert
=
true
notificationEca
(
point
:
SwitchingEca
.
Start
)
}
SharingData
.
eca
.
isShowEcaAlert
=
true
var
newData
=
eca
if
eca
.
swFinish
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
startPass
{
newData
.
status
=
EcaState
.
startPass
notificationEca
(
point
:
SwitchingEca
.
Finish
)
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Start
)
eca
.
status
=
EcaState
.
finishPass
}
SharingData
.
eca
.
isShowEcaAlert
=
true
}
if
eca
.
swFinish
>=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
startPass
{
notificationEca
(
point
:
SwitchingEca
.
Finish
)
if
0.0
<=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
finishPass
{
SharingData
.
eca
.
isShowEcaAlert
=
true
eca
.
status
=
EcaState
.
incomplete
var
newData
=
eca
SharingData
.
eca
.
isShowEcaAlert
=
true
newData
.
status
=
EcaState
.
finishPass
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Finish
)
}
if
0.0
<=
Float
(
distance
)
&&
eca
.
status
==
EcaState
.
finishPass
{
SharingData
.
eca
.
isShowEcaAlert
=
true
var
newData
=
eca
newData
.
status
=
EcaState
.
incomplete
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Incomplete
)
}
}
}
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
eca
)
}
}
}
}
}
}
...
...
Seilassist/Sailassist/ECA/GetEcaList.swift
View file @
9c00f333
...
@@ -6,15 +6,15 @@
...
@@ -6,15 +6,15 @@
//
//
import
Foundation
import
Foundation
import
SwiftUI
import
Foundation
class
GetEcaList
{
class
GetEcaList
{
@ObservedObject
var
ecaData
=
SharingData
.
eca
var
sessionTaskList
=
SessionTaskList
()
var
sessionTaskList
=
SessionTaskList
()
func
start
()
{
func
start
()
{
print
(
debug
:
"called"
)
print
(
debug
:
"called"
)
//
sessionTaskList.RequestGetTaskList(responseGetTaskList)
sessionTaskList
.
RequestGetTaskList
(
responseGetTaskList
)
}
}
private
func
responseGetTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
private
func
responseGetTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
...
@@ -24,11 +24,48 @@ class GetEcaList {
...
@@ -24,11 +24,48 @@ class GetEcaList {
let
serverSession
=
ServerSession
()
let
serverSession
=
ServerSession
()
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
[
ReqTaskList
]
.
self
)
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
[
ReqTaskList
]
.
self
)
if
let
res
=
resjson
{
if
let
res
=
resjson
{
//ECA保存
for
ecaList
in
res
{
if
var
value
=
ecaData
.
ecaArea
[
ecaList
.
taskName
]
{
value
.
isEnable
=
true
value
.
swNotice
=
ecaList
.
noticeRange
value
.
swStart
=
ecaList
.
startRange
value
.
swFinish
=
ecaList
.
finishRange
if
ecaList
.
status
&
serverRunning
==
serverRunning
{
value
.
isRunning
=
true
value
.
status
=
setEcaServer
(
status
:
ecaList
.
status
)
}
ecaData
.
ecaArea
.
updateValue
(
value
,
forKey
:
ecaList
.
taskName
)
}
}
}
}
case
.
failure
(
let
errorCode
):
case
.
failure
(
let
errorCode
):
print
(
debug
:
errorCode
)
print
(
debug
:
errorCode
)
break
break
}
}
}
}
private
func
setEcaServer
(
status
:
Int
)
->
EcaState
{
let
statusInf
=
status
^
serverRunning
var
state
=
EcaState
.
register
switch
statusInf
{
case
serverRunning
:
state
=
EcaState
.
running
case
serverNoticePass
:
state
=
EcaState
.
noticePass
case
serverStartPass
:
state
=
EcaState
.
startPass
case
serverFinishPass
:
state
=
EcaState
.
finishPass
case
serverEnd
:
state
=
EcaState
.
end
case
serverIncomplete
:
state
=
EcaState
.
incomplete
case
serverCancel
:
state
=
EcaState
.
cancel
default
:
state
=
EcaState
.
register
}
return
state
}
}
}
Seilassist/Sailassist/ECA/RegisteredEca.swift
View file @
9c00f333
...
@@ -9,7 +9,8 @@ import Foundation
...
@@ -9,7 +9,8 @@ import Foundation
import
CoreLocation
import
CoreLocation
enum
EcaState
{
enum
EcaState
{
case
start
//ECAタスク実行開始
case
register
//登録
case
running
//ECAタスク実行開始
case
noticePass
//ECA通知円到達
case
noticePass
//ECA通知円到達
case
startPass
//ECA開始円到達
case
startPass
//ECA開始円到達
case
finishPass
//ECAタスク終了円到達
case
finishPass
//ECAタスク終了円到達
...
@@ -18,6 +19,15 @@ enum EcaState {
...
@@ -18,6 +19,15 @@ enum EcaState {
case
cancel
//ECAタスクキャンセル (タスク終了・タスク未完了前にキャンセル)
case
cancel
//ECAタスクキャンセル (タスク終了・タスク未完了前にキャンセル)
}
}
let
serverRegister
=
0x00000000
//登録
let
serverRunning
=
0x10000000
//ECAタスク実行開始
let
serverNoticePass
=
0x00000001
//ECA通知円到達
let
serverStartPass
=
0x00000002
//ECA開始円到達
let
serverFinishPass
=
0x00000004
//ECAタスク終了円到達
let
serverEnd
=
0x00000100
//ECAタスク完了(燃料切替実施済み)
let
serverIncomplete
=
0x00000200
//ECAタスク未完了 (燃料切替未実施で終了)
let
serverCancel
=
0x00000400
//ECAタスクキャンセル (タスク終了・タスク未完了前にキャンセル)
struct
RegisteredEca
{
struct
RegisteredEca
{
var
id
:
Int
=
0
var
id
:
Int
=
0
var
isEnable
:
Bool
=
false
//ECA有効
var
isEnable
:
Bool
=
false
//ECA有効
...
@@ -26,7 +36,7 @@ struct RegisteredEca {
...
@@ -26,7 +36,7 @@ struct RegisteredEca {
var
swNotice
:
Float
=
6
//ECA通知[NM]
var
swNotice
:
Float
=
6
//ECA通知[NM]
var
swStart
:
Float
=
5
//ECA開始[NM]
var
swStart
:
Float
=
5
//ECA開始[NM]
var
swFinish
:
Float
=
4
//ECA終了[NM]
var
swFinish
:
Float
=
4
//ECA終了[NM]
var
status
:
EcaState
=
EcaState
.
start
//ECA状態
var
status
:
EcaState
=
EcaState
.
register
//ECA状態
var
datetime
:
String
=
""
//時刻(UTC ISO8601準拠)
var
datetime
:
String
=
""
//時刻(UTC ISO8601準拠)
var
color
:
String
=
""
//ライン色(ARGB)
var
color
:
String
=
""
//ライン色(ARGB)
var
width
:
Int
=
1
//ライン幅
var
width
:
Int
=
1
//ライン幅
...
...
Seilassist/Sailassist/ECA/SetEcaArea.swift
View file @
9c00f333
...
@@ -6,26 +6,24 @@
...
@@ -6,26 +6,24 @@
//
//
import
Foundation
import
Foundation
import
SwiftUI
class
SetEcaArea
{
class
SetEcaArea
{
@ObservedObject
var
ecaData
=
SharingData
.
eca
var
sessionTaskList
=
SessionTaskList
()
var
sessionTaskList
=
SessionTaskList
()
func
start
(
eca
:
ReqTaskList
)
{
func
start
(
eca
:
ReqTaskList
)
{
print
(
debug
:
"called"
)
print
(
debug
:
"called"
)
//
sessionTaskList.RequestPostTaskList(eca, completion: responsePostTaskList)
sessionTaskList
.
RequestPostTaskList
(
eca
,
completion
:
responsePostTaskList
)
}
}
private
func
responsePostTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
private
func
responsePostTaskList
(
result
:
Result
<
Data
,
APIError
>
)
{
print
(
debug
:
"called"
)
print
(
debug
:
"called"
)
switch
result
{
switch
result
{
case
.
success
(
let
resultData
):
case
.
success
(
let
errorCode
):
let
serverSession
=
ServerSession
()
print
(
debug
:
"success:
\(
errorCode
)
"
)
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
ReqTaskList
.
self
)
if
let
res
=
resjson
{
//ECA保存
}
case
.
failure
(
let
errorCode
):
case
.
failure
(
let
errorCode
):
print
(
debug
:
errorCode
)
print
(
debug
:
"failure:
\(
errorCode
)
"
)
break
break
}
}
}
}
...
...
Seilassist/Sailassist/Http/HttpRequestType.swift
View file @
9c00f333
...
@@ -21,9 +21,10 @@ enum HttpRequestType : String {
...
@@ -21,9 +21,10 @@ enum HttpRequestType : String {
case
ShipMonitoringRoute
=
"https://ssv-canary-web.azurewebsites.net/api/sailassist/shipmonitoringroute/XXXXX"
case
ShipMonitoringRoute
=
"https://ssv-canary-web.azurewebsites.net/api/sailassist/shipmonitoringroute/XXXXX"
case
GetMessage
=
"https://ssv-canary-web.azurewebsites.net/api/chatdata/getmessages?shipId=XXXXX"
case
GetMessage
=
"https://ssv-canary-web.azurewebsites.net/api/chatdata/getmessages?shipId=XXXXX"
case
SignalR
=
"https://ssv-canary-web.azurewebsites.net/signalr/shore"
case
SignalR
=
"https://ssv-canary-web.azurewebsites.net/signalr/shore"
case
PushHistory
=
"https://ssv-canary-web.azurewebsites.net/api/sailassist/pushhistory/XXXXX"
case
UploadImage
=
"https://ssv-canary-web.azurewebsites.net/api/chatdata/uploadimage"
case
UploadImage
=
"https://ssv-canary-web.azurewebsites.net/api/chatdata/uploadimage"
case
ConnectionString
=
"Endpoint=sb://ssv-canary-notification.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=
rj2WniCJWWP2SG5gk4J7/2P/nIyChx8+JXKWCfTi8KA
="
case
ConnectionString
=
"Endpoint=sb://ssv-canary-notification.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=
zHzVMA757FciMum5jVG4NMl82YpYVzclUgCiKOVRKf8
="
case
HubName
=
"ssv-canary-notification"
case
HubName
=
"ssv-canary-
sailassist-
notification"
case
storage
=
"https://ssvcanarystorage.z1.web.core.windows.net/"
case
storage
=
"https://ssvcanarystorage.z1.web.core.windows.net/"
}
}
#elseif QC
#elseif QC
...
@@ -39,6 +40,7 @@ enum HttpRequestType : String {
...
@@ -39,6 +40,7 @@ enum HttpRequestType : String {
case
ShipMonitoringRoute
=
"https://ssv-qc-web.azurewebsites.net/api/sailassist/shipmonitoringroute/XXXXX"
case
ShipMonitoringRoute
=
"https://ssv-qc-web.azurewebsites.net/api/sailassist/shipmonitoringroute/XXXXX"
case
GetMessage
=
"https://ssv-qc-web.azurewebsites.net/api/chatdata/getmessages?shipId=XXXXX"
case
GetMessage
=
"https://ssv-qc-web.azurewebsites.net/api/chatdata/getmessages?shipId=XXXXX"
case
SignalR
=
"https://ssv-qc-web.azurewebsites.net/signalr/shore"
case
SignalR
=
"https://ssv-qc-web.azurewebsites.net/signalr/shore"
case
PushHistory
=
"https://ssv-qc-web.azurewebsites.net/api/sailassist/pushhistory/XXXXX"
case
UploadImage
=
"https://ssv-qc-web.azurewebsites.net/api/chatdata/uploadimage"
case
UploadImage
=
"https://ssv-qc-web.azurewebsites.net/api/chatdata/uploadimage"
case
ConnectionString
=
"Endpoint=sb://tacmiqchub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=mjGZyOensA5D/T6bMiDDwX6hwhoZNsDcK+GtBBBiUXk="
case
ConnectionString
=
"Endpoint=sb://tacmiqchub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=mjGZyOensA5D/T6bMiDDwX6hwhoZNsDcK+GtBBBiUXk="
case
HubName
=
"tacmiqchub"
case
HubName
=
"tacmiqchub"
...
@@ -58,6 +60,7 @@ enum HttpRequestType : String {
...
@@ -58,6 +60,7 @@ enum HttpRequestType : String {
case
ShipMonitoringRoute
=
"https://ssv.jmarinecloud.com/api/sailassist/shipmonitoringroute/XXXXX"
case
ShipMonitoringRoute
=
"https://ssv.jmarinecloud.com/api/sailassist/shipmonitoringroute/XXXXX"
case
GetMessage
=
"https://ssv.jmarinecloud.com/api/chatdata/getmessages?shipId=XXXXX"
case
GetMessage
=
"https://ssv.jmarinecloud.com/api/chatdata/getmessages?shipId=XXXXX"
case
SignalR
=
"https://ssv.jmarinecloud.com/signalr/shore"
case
SignalR
=
"https://ssv.jmarinecloud.com/signalr/shore"
case
PushHistory
=
"https://ssv.jmarinecloud.com/api/sailassist/pushhistory/XXXXX"
case
UploadImage
=
"https://ssv.jmarinecloud.com/api/chatdata/uploadimage"
case
UploadImage
=
"https://ssv.jmarinecloud.com/api/chatdata/uploadimage"
case
ConnectionString
=
"Endpoint=sb://tacmihub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=/IOJAYGLZmS2JvlsHT5aT+ETlPXqNt1+VGuMNDt4bzw="
case
ConnectionString
=
"Endpoint=sb://tacmihub.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=/IOJAYGLZmS2JvlsHT5aT+ETlPXqNt1+VGuMNDt4bzw="
case
HubName
=
"tacmihub"
case
HubName
=
"tacmihub"
...
...
Seilassist/Sailassist/Json/ReqTaskList.swift
View file @
9c00f333
...
@@ -8,7 +8,14 @@
...
@@ -8,7 +8,14 @@
import
Foundation
import
Foundation
struct
ReqTaskList
:
Codable
{
struct
ReqTaskList
:
Codable
{
var
areaId
:
Int
var
areaId
:
Int
=
0
var
taskName
:
String
var
taskName
:
String
=
""
// var status:
var
noticeRange
:
Float
=
0.0
var
startRange
:
Float
=
0.0
var
finishRange
:
Float
=
0.0
var
status
:
Int
=
0
init
(
Id
:
Int
)
{
self
.
areaId
=
Id
}
}
}
Seilassist/Sailassist/Json/ResPushHistory.swift
0 → 100644
View file @
9c00f333
//
// ResPushHistory.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/12/01.
//
import
Foundation
//status
let
statusUnknown
=
0
let
statusNormal
=
1
let
statusCaution
=
2
let
statusWarning
=
3
let
statusAlarm
=
4
let
statusEmergency
=
5
//type
let
typeRouteAlert
=
0
let
typeBamAlert
=
1
let
typeEmergency
=
2
let
typeChat
=
3
let
typeSailassistTask
=
4
struct
ResPushHistory
:
Codable
{
var
id
:
Int
?
var
status
:
Int
?
var
type
:
Int
?
var
time
:
String
?
var
shipId
:
Int
?
var
shipName
:
String
?
var
title
:
String
?
var
message
:
String
?
var
position
:
points
?
var
emergencyId
:
String
?
}
Seilassist/Sailassist/Location/LocationCalculation.swift
View file @
9c00f333
...
@@ -700,16 +700,16 @@ class LocationCalculation{
...
@@ -700,16 +700,16 @@ class LocationCalculation{
static
func
checkPolyline
(
static
func
checkPolyline
(
objPos
:
Array
<
CLLocationCoordinate2D
>
,
objPos
:
Array
<
CLLocationCoordinate2D
>
,
shipPos
:
CLLocationCoordinate2D
)
shipPos
:
CLLocationCoordinate2D
)
->
Double
->
Double
?
{
{
var
distance
=
1000000.0
var
distance
:
Double
?
let
rtn
=
crossLineDistance
(
objPos
:
objPos
,
shipPos
:
shipPos
)
let
rtn
=
crossLineDistance
(
objPos
:
objPos
,
shipPos
:
shipPos
)
//直線と直行していない
//直線と直行していない
if
(
!
rtn
.
retCode
)
{
if
(
!
rtn
.
retCode
)
{
let
rtn1
=
pointsDistance
(
objPos
:
objPos
,
shipPos
:
shipPos
)
let
rtn1
=
pointsDistance
(
objPos
:
objPos
,
shipPos
:
shipPos
)
if
(
rtn1
.
retCode
)
{
if
(
rtn1
.
retCode
)
{
distance
=
0.0
distance
=
nil
}
else
{
}
else
{
distance
=
rtn1
.
xte
distance
=
rtn1
.
xte
}
}
...
@@ -717,7 +717,9 @@ class LocationCalculation{
...
@@ -717,7 +717,9 @@ class LocationCalculation{
distance
=
rtn
.
xte
distance
=
rtn
.
xte
}
}
print
(
debug
:
"checkPolyline
\(
distance
)
"
)
if
let
dist
=
distance
{
print
(
debug
:
"checkPolyline
\(
dist
)
"
)
}
return
distance
return
distance
}
}
...
...
Seilassist/Sailassist/LocationViewModel.swift
View file @
9c00f333
...
@@ -39,34 +39,32 @@ class LocationViewModel: NSObject, ObservableObject, CLLocationManagerDelegate {
...
@@ -39,34 +39,32 @@ class LocationViewModel: NSObject, ObservableObject, CLLocationManagerDelegate {
func
locationManager
(
_
manager
:
CLLocationManager
,
didUpdateLocations
locations
:
[
CLLocation
])
{
func
locationManager
(
_
manager
:
CLLocationManager
,
didUpdateLocations
locations
:
[
CLLocation
])
{
if
let
newLocation
=
locations
.
last
{
if
let
newLocation
=
locations
.
last
{
// let isLocation = filterLocation(newLocation)
lastSeenLocation
=
locations
.
first
// if isLocation {
let
targetCoordinate
:
CLLocationCoordinate2D
=
lastSeenLocation
!.
coordinate
lastSeenLocation
=
locations
.
first
SharingData
.
my
.
gps
=
targetCoordinate
let
targetCoordinate
:
CLLocationCoordinate2D
=
lastSeenLocation
!.
coordinate
SharingData
.
my
.
setLocation
()
SharingData
.
my
.
gps
=
targetCoordinate
if
Preferences
.
LocationType
==
0
{
SharingData
.
my
.
location
=
SharingData
.
my
.
gps
ecaTask
.
checkEca
()
}
// }
}
}
func
filterLocation
(
_
location
:
CLLocation
)
->
Bool
{
let
intervalTime
=
-
location
.
timestamp
.
timeIntervalSinceNow
if
intervalTime
>
10
{
//位置情報を取得してから10秒以上
return
false
}
if
location
.
horizontalAccuracy
<
0
{
//水平方向の位置精度
return
false
}
if
location
.
horizontalAccuracy
>
100
{
//水平方向の誤差が100m
if
Preferences
.
LocationType
==
0
{
return
false
ecaTask
.
checkEca
()
}
}
}
return
true
}
}
// func filterLocation(_ location: CLLocation) -> Bool {
// let intervalTime = -location.timestamp.timeIntervalSinceNow
//
// if intervalTime > 10 { //位置情報を取得してから10秒以上
// return false
// }
//
// if location.horizontalAccuracy < 0 { //水平方向の位置精度
// return false
// }
//
// if location.horizontalAccuracy > 100 { //水平方向の誤差が100m
// return false
// }
//
// return true
// }
}
}
Seilassist/Sailassist/Login/LoginView.swift
View file @
9c00f333
...
@@ -128,8 +128,8 @@ struct LoginView: View {
...
@@ -128,8 +128,8 @@ struct LoginView: View {
}
}
func
LoginCheckQR
()
->
()
{
func
LoginCheckQR
()
->
()
{
loginViewParam
.
shipId
=
Preferences
.
Ship
Id
loginViewParam
.
shipId
=
Preferences
.
Id
loginViewParam
.
password
=
Preferences
.
Ship
Password
loginViewParam
.
password
=
Preferences
.
Password
viewMode
=
.
InputUserName
viewMode
=
.
InputUserName
}
}
...
@@ -139,9 +139,9 @@ struct LoginView: View {
...
@@ -139,9 +139,9 @@ struct LoginView: View {
let
interval
=
Date
.
now
.
timeIntervalSince
(
lastDate
)
let
interval
=
Date
.
now
.
timeIntervalSince
(
lastDate
)
if
interval
<
2592000
{
if
interval
<
2592000
{
if
Preferences
.
ShipId
!=
""
&&
Preferences
.
Ship
Password
!=
""
&&
Preferences
.
UserName
!=
""
{
if
Preferences
.
Id
!=
""
&&
Preferences
.
Password
!=
""
&&
Preferences
.
UserName
!=
""
{
isProgressView
=
true
isProgressView
=
true
let
login
=
ReqLogin
(
Id
:
Preferences
.
ShipId
,
Password
:
Preferences
.
Ship
Password
)
let
login
=
ReqLogin
(
Id
:
Preferences
.
Id
,
Password
:
Preferences
.
Password
)
sessionLogin
.
RequestLogin
(
login
,
completion
:
responseLogin
)
sessionLogin
.
RequestLogin
(
login
,
completion
:
responseLogin
)
}
}
}
}
...
@@ -171,10 +171,11 @@ struct LoginView: View {
...
@@ -171,10 +171,11 @@ struct LoginView: View {
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
ResLogin
.
self
)
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
ResLogin
.
self
)
if
let
res
=
resjson
{
if
let
res
=
resjson
{
SharingData
.
my
.
id
=
res
.
id
SharingData
.
my
.
id
=
res
.
id
SharingData
.
my
.
shipId
=
res
.
shipId
SharingData
.
my
.
shipName
=
res
.
shipName
SharingData
.
my
.
shipName
=
res
.
shipName
SharingData
.
my
.
imo
=
res
.
imo
SharingData
.
my
.
imo
=
res
.
imo
SharingData
.
my
.
mmsi
=
res
.
mmsi
SharingData
.
my
.
mmsi
=
res
.
mmsi
Preferences
.
shipId
=
res
.
shipId
}
}
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
...
@@ -193,6 +194,9 @@ struct LoginView: View {
...
@@ -193,6 +194,9 @@ struct LoginView: View {
let
ecaList
=
GetEcaList
()
let
ecaList
=
GetEcaList
()
ecaList
.
start
()
ecaList
.
start
()
let
pushHistory
=
GetPushHistory
()
pushHistory
.
start
()
}
}
timer
?
.
fire
()
timer
?
.
fire
()
...
...
Seilassist/Sailassist/Login/View/InputUserNameView.swift
View file @
9c00f333
...
@@ -89,14 +89,18 @@ struct InputUserNameView: View {
...
@@ -89,14 +89,18 @@ struct InputUserNameView: View {
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
ResLogin
.
self
)
let
resjson
=
serverSession
.
fromJSON
(
resultData
:
resultData
,
resltType
:
ResLogin
.
self
)
if
let
res
=
resjson
{
if
let
res
=
resjson
{
SharingData
.
my
.
id
=
res
.
id
SharingData
.
my
.
id
=
res
.
id
SharingData
.
my
.
shipId
=
res
.
shipId
SharingData
.
my
.
shipName
=
res
.
shipName
SharingData
.
my
.
shipName
=
res
.
shipName
SharingData
.
my
.
imo
=
res
.
imo
SharingData
.
my
.
imo
=
res
.
imo
SharingData
.
my
.
mmsi
=
res
.
mmsi
SharingData
.
my
.
mmsi
=
res
.
mmsi
Preferences
.
shipId
=
res
.
shipId
let
notification
=
notificationTags
()
notification
.
addTags
()
}
}
Preferences
.
Ship
Id
=
param
.
shipId
Preferences
.
Id
=
param
.
shipId
Preferences
.
Ship
Password
=
param
.
password
Preferences
.
Password
=
param
.
password
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
timer
=
Timer
.
scheduledTimer
(
withTimeInterval
:
60.0
,
repeats
:
true
)
{
_
in
timer
=
Timer
.
scheduledTimer
(
withTimeInterval
:
60.0
,
repeats
:
true
)
{
_
in
...
@@ -110,8 +114,8 @@ struct InputUserNameView: View {
...
@@ -110,8 +114,8 @@ struct InputUserNameView: View {
let
route
=
MonitoringRoute
()
let
route
=
MonitoringRoute
()
route
.
start
()
route
.
start
()
let
ecaList
=
GetEcaList
()
//
let ecaList = GetEcaList()
ecaList
.
start
()
//
ecaList.start()
}
}
timer
?
.
fire
()
timer
?
.
fire
()
...
...
Seilassist/Sailassist/Login/ViewModel/ScannerViewModel.swift
View file @
9c00f333
...
@@ -21,14 +21,14 @@ class ScannerViewModel: ObservableObject {
...
@@ -21,14 +21,14 @@ class ScannerViewModel: ObservableObject {
let
jsonData
=
self
.
lastQrCode
.
data
(
using
:
.
utf8
)
!
let
jsonData
=
self
.
lastQrCode
.
data
(
using
:
.
utf8
)
!
let
resjson
:
QrLogin
=
try
decoder
.
decode
(
QrLogin
.
self
,
from
:
jsonData
)
let
resjson
:
QrLogin
=
try
decoder
.
decode
(
QrLogin
.
self
,
from
:
jsonData
)
Preferences
.
Ship
Id
=
resjson
.
id
Preferences
.
Id
=
resjson
.
id
Preferences
.
Ship
Password
=
resjson
.
pass
Preferences
.
Password
=
resjson
.
pass
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
Preferences
.
lastLoginDate_Int64
=
DateTextLib
.
Date2UnixTime
(
date
:
Date
())
}
catch
{
}
catch
{
print
(
debug
:
"decodeエラー"
)
print
(
debug
:
"decodeエラー"
)
Preferences
.
Ship
Id
=
""
Preferences
.
Id
=
""
Preferences
.
Ship
Password
=
""
Preferences
.
Password
=
""
}
}
isShowing
=
false
isShowing
=
false
...
...
Seilassist/Sailassist/Map/Task/View/EcaListView.swift
View file @
9c00f333
...
@@ -24,7 +24,7 @@ struct EcaListView: View {
...
@@ -24,7 +24,7 @@ struct EcaListView: View {
Button
(
action
:
{
Button
(
action
:
{
var
newData
=
eca
var
newData
=
eca
newData
.
isEnable
.
toggle
()
newData
.
isEnable
.
toggle
()
ecaData
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
)
ecaData
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Insert
)
},
label
:
{
},
label
:
{
Image
(
"icon_plus"
)
Image
(
"icon_plus"
)
.
resizable
()
.
resizable
()
...
...
Seilassist/Sailassist/Map/Task/View/EcaSettingView.swift
View file @
9c00f333
...
@@ -34,10 +34,8 @@ struct EcaSettingView: View {
...
@@ -34,10 +34,8 @@ struct EcaSettingView: View {
Divider
()
Divider
()
.
frame
(
height
:
1
)
.
frame
(
height
:
1
)
.
background
(
ColorSet
.
LineColor04
.
color
)
.
background
(
ColorSet
.
LineColor04
.
color
)
Button
(
action
:
{
Button
(
action
:
{
SharingData
.
eca
.
editEcaArea
(
key
:
edittingEca
.
name
,
value
:
edittingEca
)
SharingData
.
eca
.
editEcaArea
(
key
:
edittingEca
.
name
,
value
:
edittingEca
,
type
:
EcaOperation
.
Change
)
isShowSettingEca
=
false
isShowSettingEca
=
false
},
label
:
{
},
label
:
{
Text
(
"Register"
)
Text
(
"Register"
)
...
...
Seilassist/Sailassist/Map/Task/View/TaskSwitchingMenuView.swift
View file @
9c00f333
...
@@ -35,7 +35,7 @@ struct TaskSwitchingMenuView: View {
...
@@ -35,7 +35,7 @@ struct TaskSwitchingMenuView: View {
if
isEcaAlert
==
false
{
if
isEcaAlert
==
false
{
var
newData
=
eca
var
newData
=
eca
newData
.
isRunning
=
true
newData
.
isRunning
=
true
ecaData
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
)
SharingData
.
eca
.
editEcaArea
(
key
:
eca
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Running
)
}
}
}
label
:
{
}
label
:
{
HStack
{
HStack
{
...
@@ -89,7 +89,9 @@ struct TaskSwitchingMenuView: View {
...
@@ -89,7 +89,9 @@ struct TaskSwitchingMenuView: View {
if
let
ecaArea
=
edittingEcaArea
{
if
let
ecaArea
=
edittingEcaArea
{
var
newData
=
ecaArea
var
newData
=
ecaArea
newData
.
isEnable
=
false
newData
.
isEnable
=
false
ecaData
.
editEcaArea
(
key
:
ecaArea
.
name
,
value
:
newData
)
newData
.
status
=
EcaState
.
register
ecaData
.
editEcaArea
(
key
:
ecaArea
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Delete
)
deleteEcaArea
.
start
(
ecaId
:
ecaArea
.
id
)
deleteEcaArea
.
start
(
ecaId
:
ecaArea
.
id
)
}
}
edittingEcaArea
=
nil
edittingEcaArea
=
nil
...
@@ -103,8 +105,7 @@ struct TaskSwitchingMenuView: View {
...
@@ -103,8 +105,7 @@ struct TaskSwitchingMenuView: View {
var
newData
=
ecaArea
var
newData
=
ecaArea
newData
.
isRunning
=
false
newData
.
isRunning
=
false
newData
.
status
=
EcaState
.
cancel
newData
.
status
=
EcaState
.
cancel
ecaData
.
editEcaArea
(
key
:
ecaArea
.
name
,
value
:
newData
)
ecaData
.
editEcaArea
(
key
:
ecaArea
.
name
,
value
:
newData
,
type
:
EcaOperation
.
Cancel
)
//サーバーにECAキャンセルを通知
}
}
edittingEcaArea
=
nil
edittingEcaArea
=
nil
}))
}))
...
...
Seilassist/Sailassist/Menu/View/MenuGpsSelectView.swift
View file @
9c00f333
...
@@ -49,6 +49,7 @@ struct MenuGpsSelectView: View {
...
@@ -49,6 +49,7 @@ struct MenuGpsSelectView: View {
}
else
{
}
else
{
Preferences
.
LocationType
=
1
Preferences
.
LocationType
=
1
}
}
SharingData
.
my
.
setLocation
()
}
label
:{
}
label
:{
HStack
{
HStack
{
Text
(
content
.
title
)
Text
(
content
.
title
)
...
...
Seilassist/Sailassist/Preferences/Preferences.swift
View file @
9c00f333
...
@@ -36,10 +36,11 @@ class Preferences{
...
@@ -36,10 +36,11 @@ class Preferences{
}
}
}
}
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.
ShipId.rawValue)
static
var
Ship
Id
:
String
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.
Id.rawValue)
static
var
Id
:
String
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.
ShipPassword.rawValue)
static
var
Ship
Password
:
String
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.
Password.rawValue)
static
var
Password
:
String
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.UserName.rawValue)
static
var
UserName
:
String
@AppStorage(wrappedValue:"", PreferencesKey.TypeString.UserName.rawValue)
static
var
UserName
:
String
@AppStorage(wrappedValue:0, PreferencesKey.TypeInt.shipId.rawValue)
static
var
shipId
:
Int
@AppStorage(wrappedValue:0, PreferencesKey.TypeInt.LocationType.rawValue)
static
var
LocationType
:
Int
@AppStorage(wrappedValue:0, PreferencesKey.TypeInt.LocationType.rawValue)
static
var
LocationType
:
Int
// func getPreferences(key)
// func getPreferences(key)
...
...
Seilassist/Sailassist/Preferences/PreferencesKey.swift
View file @
9c00f333
...
@@ -12,18 +12,18 @@ class PreferencesKey{
...
@@ -12,18 +12,18 @@ class PreferencesKey{
///String型
///String型
enum
TypeString
:
String
{
enum
TypeString
:
String
{
case
Ship
Id
case
Id
case
Ship
Password
case
Password
case
UserName
case
UserName
}
}
///Int型
///Int型
enum
TypeInt
:
String
{
enum
TypeInt
:
String
{
case
shipId
case
LocationType
case
LocationType
case
AppStartUsingDate
case
AppStartUsingDate
case
LastLoginDate
case
LastLoginDate
case
TermsAgreeDate
case
TermsAgreeDate
}
}
enum
TypeURL
:
String
{
enum
TypeURL
:
String
{
...
...
Seilassist/Sailassist/SailassistApp.swift
View file @
9c00f333
...
@@ -9,7 +9,6 @@ import SwiftUI
...
@@ -9,7 +9,6 @@ import SwiftUI
import
UserNotifications
import
UserNotifications
import
WindowsAzureMessaging
import
WindowsAzureMessaging
@main
@main
struct
SailassistApp
:
App
{
struct
SailassistApp
:
App
{
@UIApplicationDelegateAdaptor(AppDelegate.self)
private
var
appDelegate
@UIApplicationDelegateAdaptor(AppDelegate.self)
private
var
appDelegate
...
@@ -43,7 +42,21 @@ struct SailassistApp: App {
...
@@ -43,7 +42,21 @@ struct SailassistApp: App {
}
}
}
}
class
AppDelegate
:
NSObject
,
UIApplicationDelegate
{
class
notificationTags
:
NSObject
{
func
addTags
()
{
if
Preferences
.
shipId
!=
0
{
let
shipId
=
String
(
Preferences
.
shipId
)
let
testTag
=
"aaa"
let
routeTag
=
"route-"
+
shipId
let
bamTag
=
"bam-"
+
shipId
let
taskAlertTag
=
"taskalert-"
+
shipId
let
sailassistTag
=
"sailassist-"
+
shipId
MSNotificationHub
.
addTags
([
testTag
,
routeTag
,
bamTag
,
taskAlertTag
,
sailassistTag
])
}
}
}
class
AppDelegate
:
NSObject
,
UIApplicationDelegate
,
MSNotificationHubDelegate
,
MSInstallationLifecycleDelegate
{
func
application
(
_
application
:
UIApplication
,
didFinishLaunchingWithOptions
launchOptions
:
[
UIApplication
.
LaunchOptionsKey
:
Any
]?
=
nil
)
->
Bool
{
func
application
(
_
application
:
UIApplication
,
didFinishLaunchingWithOptions
launchOptions
:
[
UIApplication
.
LaunchOptionsKey
:
Any
]?
=
nil
)
->
Bool
{
print
(
debug
:
"called"
)
print
(
debug
:
"called"
)
...
@@ -53,14 +66,18 @@ class AppDelegate: NSObject, UIApplicationDelegate{
...
@@ -53,14 +66,18 @@ class AppDelegate: NSObject, UIApplicationDelegate{
return
return
}
}
if
granted
{
if
granted
{
// MSNotificationHub.setLifecycleDelegate(self)
UNUserNotificationCenter
.
current
()
.
delegate
=
self
UNUserNotificationCenter
.
current
()
.
delegate
=
self
// MSNotificationHub.setDelegate(self)
}
}
}
}
application
.
registerForRemoteNotifications
()
application
.
registerForRemoteNotifications
()
MSNotificationHub
.
start
(
connectionString
:
HttpRequestType
.
ConnectionString
.
rawValue
,
hubName
:
HttpRequestType
.
HubName
.
rawValue
)
MSNotificationHub
.
start
(
connectionString
:
HttpRequestType
.
ConnectionString
.
rawValue
,
hubName
:
HttpRequestType
.
HubName
.
rawValue
)
MSNotificationHub
.
addTags
([
String
(
SharingData
.
my
.
shipId
)])
let
notification
=
notificationTags
()
notification
.
addTags
()
return
true
return
true
}
}
...
@@ -70,7 +87,29 @@ class AppDelegate: NSObject, UIApplicationDelegate{
...
@@ -70,7 +87,29 @@ class AppDelegate: NSObject, UIApplicationDelegate{
config
.
delegateClass
=
SceneDelegate
.
self
config
.
delegateClass
=
SceneDelegate
.
self
return
config
return
config
}
}
// func addTags() {
// if Preferences.shipId == 0 {
// let shipId = String(Preferences.shipId)
// let testTag = "aaa"
// let routeTag = "route-" + shipId
// let bamTag = "bam-" + shipId
// let taskAlertTag = "taskalert-" + shipId
// let sailassistTag = "sailassist-" + shipId
// MSNotificationHub.addTags([testTag, routeTag, bamTag, taskAlertTag, sailassistTag])
// }
// }
func
application
(
_
application
:
UIApplication
,
didReceiveRemoteNotification
userInfo
:
[
AnyHashable
:
Any
],
fetchCompletionHandler
completionHandler
:
@escaping
(
UIBackgroundFetchResult
)
->
Void
)
{
print
(
debug
:
"called"
)
// Forward to MSNotificationHub
MSNotificationHub
.
didReceiveRemoteNotification
(
userInfo
)
// Complete handling the notification
completionHandler
(
.
noData
)
}
func
notificationHub
(
_
notificationHub
:
MSNotificationHub
!
,
didReceivePushNotification
notification
:
MSNotificationHubMessage
!
)
{
func
notificationHub
(
_
notificationHub
:
MSNotificationHub
!
,
didReceivePushNotification
notification
:
MSNotificationHubMessage
!
)
{
let
title
=
notification
.
title
??
""
let
title
=
notification
.
title
??
""
...
...
Seilassist/Sailassist/ServerSession/ServerSession.swift
View file @
9c00f333
...
@@ -29,6 +29,7 @@ class ServerSession{
...
@@ -29,6 +29,7 @@ class ServerSession{
return
resjson
return
resjson
}
catch
{
}
catch
{
let
jsonstr
=
String
(
data
:
resultData
,
encoding
:
.
utf8
)
!
let
jsonstr
=
String
(
data
:
resultData
,
encoding
:
.
utf8
)
!
print
(
debug
:
"
\(
jsonstr
)
"
)
return
nil
return
nil
}
}
}
}
...
...
Seilassist/Sailassist/ServerSession/SessionEcaArea.swift
View file @
9c00f333
...
@@ -27,7 +27,7 @@ class SessionEcaArea : ObservableObject {
...
@@ -27,7 +27,7 @@ class SessionEcaArea : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
EcaArea
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
EcaArea
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
...
Seilassist/Sailassist/ServerSession/SessionGetMessage.swift
View file @
9c00f333
...
@@ -27,7 +27,7 @@ class SessionGetMessage : ObservableObject {
...
@@ -27,7 +27,7 @@ class SessionGetMessage : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
GetMessage
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
GetMessage
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
...
Seilassist/Sailassist/ServerSession/SessionMonitoringRoute.swift
View file @
9c00f333
...
@@ -28,7 +28,7 @@ class SessionMonitoringRoute : ObservableObject {
...
@@ -28,7 +28,7 @@ class SessionMonitoringRoute : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
ShipMonitoringRoute
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
ShipMonitoringRoute
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
...
Seilassist/Sailassist/ServerSession/SessionPushHistory.swift
0 → 100644
View file @
9c00f333
//
// SessionPushHistory.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/12/02.
//
import
Foundation
import
SwiftUI
class
SessionPushHistory
:
ObservableObject
{
@Published
var
status
=
false
// シングルトン宣言
static
let
OnlyOne
=
SessionPushHistory
()
private
var
serverSession
=
ServerSession
()
private
var
Calling
:
Bool
=
false
// 通信中
/**
* メッセージ
*/
func
RequestPushHistory
(
_
completion
:
@escaping
((
Result
<
Data
,
APIError
>
))
->
Void
)
{
print
(
debug
:
"calld"
)
if
Calling
{
return
}
Calling
=
true
// リクエストURLの組み立て
let
id
=
Preferences
.
shipId
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
PushHistory
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
guard
let
req_url
=
URL
(
string
:
url_string
)
else
{
Calling
=
false
return
}
serverSession
.
getJson
(
req_url
,
completion
:
completion
)
}
}
}
Seilassist/Sailassist/ServerSession/SessionShipStatus.swift
View file @
9c00f333
...
@@ -27,7 +27,7 @@ class SessionShipStatus : ObservableObject {
...
@@ -27,7 +27,7 @@ class SessionShipStatus : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
ShipStatus
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
ShipStatus
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
...
Seilassist/Sailassist/ServerSession/SessionTaskList.swift
View file @
9c00f333
...
@@ -27,7 +27,7 @@ class SessionTaskList : ObservableObject {
...
@@ -27,7 +27,7 @@ class SessionTaskList : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
@@ -51,7 +51,7 @@ class SessionTaskList : ObservableObject {
...
@@ -51,7 +51,7 @@ class SessionTaskList : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
url_string
=
url_string
.
replacingOccurrences
(
of
:
"XXXXX"
,
with
:
String
(
id
))
...
@@ -81,7 +81,7 @@ class SessionTaskList : ObservableObject {
...
@@ -81,7 +81,7 @@ class SessionTaskList : ObservableObject {
Calling
=
true
Calling
=
true
// リクエストURLの組み立て
// リクエストURLの組み立て
let
id
=
SharingData
.
my
.
shipId
let
id
=
Preferences
.
shipId
if
id
!=
0
{
if
id
!=
0
{
let
strId
=
String
(
id
)
+
"/"
+
String
(
ecaId
)
let
strId
=
String
(
id
)
+
"/"
+
String
(
ecaId
)
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
var
url_string
:
String
=
HttpRequestType
.
TaskList
.
rawValue
...
...
Seilassist/Sailassist/SharingData/SharingData.swift
View file @
9c00f333
...
@@ -7,6 +7,18 @@
...
@@ -7,6 +7,18 @@
import
Foundation
import
Foundation
import
CoreLocation
import
CoreLocation
enum
EcaOperation
{
case
Insert
case
Delete
case
Running
case
Start
case
Notice
case
Finish
case
Incomplete
case
Change
case
Cancel
}
class
SharingData
{
class
SharingData
{
static
var
my
=
My
()
static
var
my
=
My
()
...
@@ -20,13 +32,16 @@ class SharingData{
...
@@ -20,13 +32,16 @@ class SharingData{
@Published
var
dataTime
:
String
=
""
//2023-11-02T05:25:49.4362123Z
@Published
var
dataTime
:
String
=
""
//2023-11-02T05:25:49.4362123Z
@Published
var
id
:
Int
=
0
@Published
var
id
:
Int
=
0
@Published
var
shipId
:
Int
=
0
@Published
var
shipName
:
String
=
""
@Published
var
shipName
:
String
=
""
@Published
var
imo
:
Int
=
0
@Published
var
imo
:
Int
=
0
@Published
var
mmsi
:
Int
=
0
@Published
var
mmsi
:
Int
=
0
func
setLocation
(
_
location
:
CLLocationCoordinate2D
?){
func
setLocation
(){
self
.
location
=
location
if
Preferences
.
LocationType
==
0
{
self
.
location
=
self
.
gps
}
else
{
self
.
location
=
self
.
server
}
}
}
func
reset
()
{
func
reset
()
{
...
@@ -91,10 +106,7 @@ class SharingData{
...
@@ -91,10 +106,7 @@ class SharingData{
id
:
""
)
id
:
""
)
]
]
),
),
]
]
}
}
/**
/**
...
@@ -106,10 +118,133 @@ class SharingData{
...
@@ -106,10 +118,133 @@ class SharingData{
@Published
var
foucusEca
:
String
?
=
nil
@Published
var
foucusEca
:
String
?
=
nil
@Published
var
isShowEcaAlert
:
Bool
=
false
@Published
var
isShowEcaAlert
:
Bool
=
false
func
editEcaArea
(
key
:
String
,
value
:
RegisteredEca
)
{
func
setEcaArea
(
key
:
String
,
value
:
RegisteredEca
)
{
ecaArea
.
updateValue
(
value
,
forKey
:
key
)
ecaArea
.
updateValue
(
value
,
forKey
:
key
)
}
}
func
editEcaArea
(
key
:
String
,
value
:
RegisteredEca
,
type
:
EcaOperation
)
{
let
setEcaArea
=
SetEcaArea
()
var
task
=
ReqTaskList
(
Id
:
value
.
id
)
switch
type
{
case
EcaOperation
.
Running
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
task
.
status
=
serverRunning
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Insert
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
task
.
status
=
serverRegister
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Delete
:
let
deleteEcaArea
=
DeleteEcaArea
()
deleteEcaArea
.
start
(
ecaId
:
value
.
id
)
case
EcaOperation
.
Start
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
if
value
.
isEnable
&&
value
.
isRunning
{
task
.
status
=
setEcaStatus
(
eca
:
value
)
}
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Notice
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
if
value
.
isEnable
&&
value
.
isRunning
{
task
.
status
=
setEcaStatus
(
eca
:
value
)
}
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Finish
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
if
value
.
isEnable
&&
value
.
isRunning
{
task
.
status
=
setEcaStatus
(
eca
:
value
)
}
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Incomplete
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
if
value
.
isEnable
&&
value
.
isRunning
{
task
.
status
=
setEcaStatus
(
eca
:
value
)
}
setEcaArea
.
start
(
eca
:
task
)
case
EcaOperation
.
Cancel
:
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
.
Change
:
task
.
areaId
=
value
.
id
task
.
taskName
=
value
.
name
task
.
noticeRange
=
value
.
swNotice
task
.
startRange
=
value
.
swStart
task
.
finishRange
=
value
.
swFinish
if
value
.
isEnable
&&
value
.
isRunning
{
task
.
status
=
setEcaStatus
(
eca
:
value
)
}
setEcaArea
.
start
(
eca
:
task
)
}
ecaArea
.
updateValue
(
value
,
forKey
:
key
)
}
private
func
setEcaStatus
(
eca
:
RegisteredEca
)
->
Int
{
var
state
=
serverRegister
switch
eca
.
status
{
case
EcaState
.
running
:
state
=
serverRunning
case
EcaState
.
noticePass
:
state
=
serverNoticePass
+
serverRunning
case
EcaState
.
startPass
:
state
=
serverStartPass
+
serverRunning
case
EcaState
.
finishPass
:
state
=
serverFinishPass
+
serverRunning
case
EcaState
.
end
:
state
=
serverEnd
+
serverRunning
case
EcaState
.
incomplete
:
state
=
serverIncomplete
case
EcaState
.
cancel
:
state
=
serverCancel
default
:
state
=
serverRegister
}
return
state
}
}
static
var
pushHistory
=
PushHistory
()
class
PushHistory
:
ObservableObject
{
@Published
var
pushHistoryData
:
Dictionary
<
Int
,
ResPushHistory
>
=
[:]
func
setPushHistory
(
key
:
Int
,
value
:
ResPushHistory
)
{
pushHistoryData
.
updateValue
(
value
,
forKey
:
key
)
}
}
static
var
noticeInformation
=
NoticeInformation
()
class
NoticeInformation
:
ObservableObject
{
}
}
}
}
Seilassist/Sailassist/SignalR/SignalRService.swift
View file @
9c00f333
...
@@ -53,7 +53,7 @@ public class SignalRService {
...
@@ -53,7 +53,7 @@ public class SignalRService {
//呼び出す
//呼び出す
func
chatMessage
(
_
message
:
String
)
{
func
chatMessage
(
_
message
:
String
)
{
var
request
=
ReqMessage
(
shipId
:
SharingData
.
my
.
shipId
,
messageId
:
"aaaa"
)
var
request
=
ReqMessage
(
shipId
:
Preferences
.
shipId
,
messageId
:
"aaaa"
)
request
.
type
=
0
//0:テキスト, 1:スタンプ
request
.
type
=
0
//0:テキスト, 1:スタンプ
// request.time = DateTextLib.Date2ISO8601Text(date: Date())
// request.time = DateTextLib.Date2ISO8601Text(date: Date())
request
.
location
=
2
//1:Shore , 2:Ship
request
.
location
=
2
//1:Shore , 2:Ship
...
@@ -72,7 +72,7 @@ public class SignalRService {
...
@@ -72,7 +72,7 @@ public class SignalRService {
}
}
func
ackMessage
(
_
message
:
String
)
{
func
ackMessage
(
_
message
:
String
)
{
var
request
=
ReqAckMessage
(
shipId
:
SharingData
.
my
.
shipId
,
messageId
:
"aaaa"
)
var
request
=
ReqAckMessage
(
shipId
:
Preferences
.
shipId
,
messageId
:
"aaaa"
)
//request.time = DateTextLib.Date2ISO8601Text(date: Date())
//request.time = DateTextLib.Date2ISO8601Text(date: Date())
request
.
location
=
2
//1:Shore , 2:Ship
request
.
location
=
2
//1:Shore , 2:Ship
// request.fromeId = SharingData.my.shipName //ユーザーID
// request.fromeId = SharingData.my.shipName //ユーザーID
...
@@ -86,7 +86,7 @@ public class SignalRService {
...
@@ -86,7 +86,7 @@ public class SignalRService {
}
}
func
chatMode
(
_
message
:
String
)
{
func
chatMode
(
_
message
:
String
)
{
var
request
=
ReqChatModeMessage
(
shipId
:
SharingData
.
my
.
shipId
)
var
request
=
ReqChatModeMessage
(
shipId
:
Preferences
.
shipId
)
// request.time = DateTextLib.Date2ISO8601Text(date: Date())
// request.time = DateTextLib.Date2ISO8601Text(date: Date())
request
.
location
=
2
//1:Shore , 2:Ship
request
.
location
=
2
//1:Shore , 2:Ship
// request.fromeId = SharingData.my.shipName //ユーザーID
// request.fromeId = SharingData.my.shipName //ユーザーID
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment