Commit fa23994a authored by sugita mamoru's avatar sugita mamoru

Merge commit '3f39eeba' into develop

parents 40585846 3f39eeba
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
02CE4DC82ADF97E8002E79BC /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DC72ADF97E8002E79BC /* View+Extensions.swift */; }; 02CE4DC82ADF97E8002E79BC /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DC72ADF97E8002E79BC /* View+Extensions.swift */; };
02CE4DCC2ADFA03F002E79BC /* SelectedTabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DCB2ADFA03F002E79BC /* SelectedTabModel.swift */; }; 02CE4DCC2ADFA03F002E79BC /* SelectedTabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DCB2ADFA03F002E79BC /* SelectedTabModel.swift */; };
02CE4DDA2ADFBA72002E79BC /* MapRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DD92ADFBA72002E79BC /* MapRepresentable.swift */; }; 02CE4DDA2ADFBA72002E79BC /* MapRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CE4DD92ADFBA72002E79BC /* MapRepresentable.swift */; };
D52D213A2AEBAC0500324D58 /* HttpRequestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52D21392AEBAC0500324D58 /* HttpRequestType.swift */; };
D52D213F2AEBB7D700324D58 /* RegisteredEca.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52D213E2AEBB7D700324D58 /* RegisteredEca.swift */; };
D52D21412AEDE18F00324D58 /* EcaCoordinatesTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D52D21402AEDE18F00324D58 /* EcaCoordinatesTable.swift */; };
D5AE351A2AEBA66A00059889 /* ReqLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AE35182AEBA66A00059889 /* ReqLogin.swift */; };
D5AE351B2AEBA66A00059889 /* ResLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AE35192AEBA66A00059889 /* ResLogin.swift */; };
D5AE351D2AEBA6FC00059889 /* SessionLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AE351C2AEBA6FC00059889 /* SessionLogin.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
...@@ -142,6 +148,12 @@ ...@@ -142,6 +148,12 @@
02CE4DCB2ADFA03F002E79BC /* SelectedTabModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectedTabModel.swift; sourceTree = "<group>"; }; 02CE4DCB2ADFA03F002E79BC /* SelectedTabModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectedTabModel.swift; sourceTree = "<group>"; };
02CE4DCD2ADFB9FF002E79BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 02CE4DCD2ADFB9FF002E79BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
02CE4DD92ADFBA72002E79BC /* MapRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRepresentable.swift; sourceTree = "<group>"; }; 02CE4DD92ADFBA72002E79BC /* MapRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRepresentable.swift; sourceTree = "<group>"; };
D52D21392AEBAC0500324D58 /* HttpRequestType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = HttpRequestType.swift; path = Sailassist/Http/HttpRequestType.swift; sourceTree = SOURCE_ROOT; };
D52D213E2AEBB7D700324D58 /* RegisteredEca.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = RegisteredEca.swift; path = Sailassist/ECA/RegisteredEca.swift; sourceTree = SOURCE_ROOT; };
D52D21402AEDE18F00324D58 /* EcaCoordinatesTable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = EcaCoordinatesTable.swift; path = Sailassist/ECA/EcaCoordinatesTable.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; };
D5AE351C2AEBA6FC00059889 /* SessionLogin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SessionLogin.swift; path = Sailassist/ServerSession/SessionLogin.swift; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
...@@ -198,6 +210,9 @@ ...@@ -198,6 +210,9 @@
020B98122AD8C3140029DE4C /* SailAssist */ = { 020B98122AD8C3140029DE4C /* SailAssist */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D52D213B2AEBB78E00324D58 /* ECA */,
D52D21382AEBABE700324D58 /* Http */,
D5AE35172AEBA64800059889 /* Json */,
022789122AE602D800A87787 /* ServerSession */, 022789122AE602D800A87787 /* ServerSession */,
0227890A2AE22DFB00A87787 /* SharingData */, 0227890A2AE22DFB00A87787 /* SharingData */,
02CE4DCD2ADFB9FF002E79BC /* Info.plist */, 02CE4DCD2ADFB9FF002E79BC /* Info.plist */,
...@@ -386,6 +401,7 @@ ...@@ -386,6 +401,7 @@
022789122AE602D800A87787 /* ServerSession */ = { 022789122AE602D800A87787 /* ServerSession */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D5AE351C2AEBA6FC00059889 /* SessionLogin.swift */,
02CD06922AE88970005F8D8F /* ServerSession.swift */, 02CD06922AE88970005F8D8F /* ServerSession.swift */,
02CD06942AE895F5005F8D8F /* APIError.swift */, 02CD06942AE895F5005F8D8F /* APIError.swift */,
); );
...@@ -428,6 +444,32 @@ ...@@ -428,6 +444,32 @@
path = Fremeworks; path = Fremeworks;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
D52D21382AEBABE700324D58 /* Http */ = {
isa = PBXGroup;
children = (
D52D21392AEBAC0500324D58 /* HttpRequestType.swift */,
);
path = Http;
sourceTree = "<group>";
};
D52D213B2AEBB78E00324D58 /* ECA */ = {
isa = PBXGroup;
children = (
D52D213E2AEBB7D700324D58 /* RegisteredEca.swift */,
D52D21402AEDE18F00324D58 /* EcaCoordinatesTable.swift */,
);
path = ECA;
sourceTree = "<group>";
};
D5AE35172AEBA64800059889 /* Json */ = {
isa = PBXGroup;
children = (
D5AE35182AEBA66A00059889 /* ReqLogin.swift */,
D5AE35192AEBA66A00059889 /* ResLogin.swift */,
);
path = Json;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
...@@ -559,14 +601,18 @@ ...@@ -559,14 +601,18 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D52D21412AEDE18F00324D58 /* EcaCoordinatesTable.swift in Sources */,
02CD06912AE6536B005F8D8F /* LayerEnum.swift in Sources */, 02CD06912AE6536B005F8D8F /* LayerEnum.swift in Sources */,
020B98532AD919180029DE4C /* LoginTypeSelectView.swift in Sources */, 020B98532AD919180029DE4C /* LoginTypeSelectView.swift in Sources */,
D52D213F2AEBB7D700324D58 /* RegisteredEca.swift in Sources */,
0227890E2AE245C300A87787 /* ECA.swift in Sources */, 0227890E2AE245C300A87787 /* ECA.swift in Sources */,
02CD06952AE895F5005F8D8F /* APIError.swift in Sources */, 02CD06952AE895F5005F8D8F /* APIError.swift in Sources */,
02CE4DC82ADF97E8002E79BC /* View+Extensions.swift in Sources */, 02CE4DC82ADF97E8002E79BC /* View+Extensions.swift in Sources */,
020B98412AD8C3810029DE4C /* LoginView.swift in Sources */, 020B98412AD8C3810029DE4C /* LoginView.swift in Sources */,
D5AE351D2AEBA6FC00059889 /* SessionLogin.swift in Sources */,
020B98552AD924930029DE4C /* QrCodeScannerView.swift in Sources */, 020B98552AD924930029DE4C /* QrCodeScannerView.swift in Sources */,
02CE4D7F2ADE42A9002E79BC /* MenuContentView.swift in Sources */, 02CE4D7F2ADE42A9002E79BC /* MenuContentView.swift in Sources */,
D5AE351B2AEBA66A00059889 /* ResLogin.swift in Sources */,
02CE4D832ADE672B002E79BC /* MapTaskView.swift in Sources */, 02CE4D832ADE672B002E79BC /* MapTaskView.swift in Sources */,
02CE4DCC2ADFA03F002E79BC /* SelectedTabModel.swift in Sources */, 02CE4DCC2ADFA03F002E79BC /* SelectedTabModel.swift in Sources */,
020B98162AD8C3150029DE4C /* ContentView.swift in Sources */, 020B98162AD8C3150029DE4C /* ContentView.swift in Sources */,
...@@ -582,7 +628,9 @@ ...@@ -582,7 +628,9 @@
02CD06932AE88970005F8D8F /* ServerSession.swift in Sources */, 02CD06932AE88970005F8D8F /* ServerSession.swift in Sources */,
020B98592AD92A4C0029DE4C /* MainTabView.swift in Sources */, 020B98592AD92A4C0029DE4C /* MainTabView.swift in Sources */,
020B984F2AD9182D0029DE4C /* InputUserNameView.swift in Sources */, 020B984F2AD9182D0029DE4C /* InputUserNameView.swift in Sources */,
D5AE351A2AEBA66A00059889 /* ReqLogin.swift in Sources */,
020B98512AD9189A0029DE4C /* InputIdPassWordView.swift in Sources */, 020B98512AD9189A0029DE4C /* InputIdPassWordView.swift in Sources */,
D52D213A2AEBAC0500324D58 /* HttpRequestType.swift in Sources */,
020B986E2ADD3E8D0029DE4C /* DateTextLib.swift in Sources */, 020B986E2ADD3E8D0029DE4C /* DateTextLib.swift in Sources */,
020B98672ADD15050029DE4C /* MenuView.swift in Sources */, 020B98672ADD15050029DE4C /* MenuView.swift in Sources */,
020B98572AD924F50029DE4C /* CameraPreview.swift in Sources */, 020B98572AD924F50029DE4C /* CameraPreview.swift in Sources */,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
//
// RegisteredEca.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/10/27.
//
import Foundation
import CoreLocation
class RegisteredEca {
var id: UInt32 = 0
var isEnable: Bool = false //ECA有効
var isRunning: Bool = false //ECA実行中
var name: String = "" //ECA名称
var swNotice: UInt32 = 6 //ECA通知[NM]
var swStart: UInt32 = 5 //ECA開始[NM]
var swFinish: UInt32 = 4 //ECA終了[NM]
var datetime: String = "" //時刻(UTC ISO8601準拠)
var color: String = "" //ライン色(ARGB)
var width: UInt32 = 1 //ライン幅
var points: [CLLocationCoordinate2D] = []
init?( ecaName: String ) {
self.name = ecaName
}
}
//
// HttpRequestType.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/10/27.
//
import Foundation
#if DEBUG
//MARK: デバッグサーバー用
enum HttpRequestType : String {
case RegisterLogin = "https://ssv-canary-web.azurewebsites.net/applogin"
}
#else
//MARK: 運用サーバー用
enum HttpRequestType : String {
case RegisterLogin = "https://ssv-canary-web.azurewebsites.net/applogin"
}
#endif
//
// ReqLogin.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/10/26.
//
import Foundation
struct ReqLogin : Codable {
var Id: String
var Password: String
init(Id: String, Password: String) {
self.Id = Id
self.Password = Password
}
}
//
// ResLogin.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/10/26.
//
import Foundation
struct ResLogin : Codable {
var Id: Int = 0
var Name: String = ""
var CanUseCmap: Bool = false
var CanCheckActiveRouteAlert: Bool = false
var CanCheckBamAlert: Bool = false
}
...@@ -11,7 +11,7 @@ import Combine ...@@ -11,7 +11,7 @@ import Combine
struct InputIdPassWordView: View { struct InputIdPassWordView: View {
@Binding var viewMode : LoginViewMode @Binding var viewMode : LoginViewMode
@Binding var param : LoginViewParam @Binding var param : LoginViewParam
// @EnvironmentObject var loginViewParam = LoginViewParam()
let itemHPadding: Double = 16 let itemHPadding: Double = 16
let dialogBottomPadding: Double = 32 let dialogBottomPadding: Double = 32
let textFieldHeight: Double = 49 let textFieldHeight: Double = 49
...@@ -20,7 +20,6 @@ struct InputIdPassWordView: View { ...@@ -20,7 +20,6 @@ struct InputIdPassWordView: View {
var body: some View { var body: some View {
VStack{ VStack{
VStack { VStack {
HStack{ HStack{
Image("account") Image("account")
.frame(width: 22, height: 22) .frame(width: 22, height: 22)
...@@ -38,6 +37,7 @@ struct InputIdPassWordView: View { ...@@ -38,6 +37,7 @@ struct InputIdPassWordView: View {
.padding(.trailing) .padding(.trailing)
.foregroundColor(.white) .foregroundColor(.white)
.background(.lineColor01) .background(.lineColor01)
.autocapitalization(.none)
.modifier(TextFieldModifier(text: $param.shipId, inputType: .UserId)) .modifier(TextFieldModifier(text: $param.shipId, inputType: .UserId))
} }
...@@ -68,13 +68,15 @@ struct InputIdPassWordView: View { ...@@ -68,13 +68,15 @@ struct InputIdPassWordView: View {
Divider() Divider()
.frame(height: 1) .frame(height: 1)
.background(Color(.white)) .background(Color(.white))
} }
Spacer() Spacer()
.frame(height: 40) .frame(height: 40)
Button(action: { Button(action: {
let sessionLogin = SessionLogin.OnlyOne
let login = ReqLogin(Id: param.shipId, Password: param.password)
sessionLogin.RequestLogin(login)
viewMode = .InputUserName viewMode = .InputUserName
}, label: { }, label: {
Text("Sign In") Text("Sign In")
......
...@@ -62,3 +62,16 @@ class PassThroughWindow: UIWindow{ ...@@ -62,3 +62,16 @@ class PassThroughWindow: UIWindow{
return rootViewController?.view == view ? nil : view return rootViewController?.view == view ? nil : view
} }
} }
// MARK: コメント出力を消す
func print(debug: Any = "", function: String = #function, file: String = #file, line: Int = #line) {
#if DEBUG
var filename: NSString = file as NSString
filename = filename.lastPathComponent as NSString
// Swift.print("File: \(filename), Line: \(line), Func: \(function) \n\(debug)")
let outstr = String( format: "APPDebug File: %@, Line: %d, Func: %@\n\(debug)", filename, line, function )
// Swift.print( outstr ) NSLog がある時は、両方に出るのでいらない
NSLog( outstr ) // デバッグコンソールにも出力
#endif
}
...@@ -58,6 +58,12 @@ class ServerSession{ ...@@ -58,6 +58,12 @@ class ServerSession{
if inresponse.statusCode != 200 { if inresponse.statusCode != 200 {
throw APIError.serverError throw APIError.serverError
} }
//Cookieを保存
if let fields = inresponse.allHeaderFields as? [String: String], let url = inresponse.url {
for cookie in HTTPCookie.cookies(withResponseHeaderFields: fields, for: url) {
HTTPCookieStorage.shared.setCookie(cookie)
}
}
DispatchQueue.main.async { DispatchQueue.main.async {
completion(.success(indata)) completion(.success(indata))
} }
...@@ -71,4 +77,16 @@ class ServerSession{ ...@@ -71,4 +77,16 @@ class ServerSession{
} }
}).resume() }).resume()
} }
// HTTPCookieStorageに特定のCookieが保存されているかを調べる
func isCookieSet(name: String, url: URL) -> Bool {
if let cookies = HTTPCookieStorage.shared.cookies(for: url) {
for cookie in cookies {
if (cookie.name == name) {
return true
}
}
}
return false
}
} }
//
// SessionLogin.swift
// Sailassist
//
// Created by 三浦薫巳 on 2023/10/26.
//
import WebKit
class SessionLogin : NSObject {
// シングルトン宣言
static let OnlyOne = SessionLogin()
private var serverSession = ServerSession()
override init() {
super.init()
}
private var Calling : Bool = false // 通信中
/**
* ログイン
* - Parameters:
* - login: ログイン情報
*/
func RequestLogin(_ login : ReqLogin) {
print(debug: "calld")
if Calling {
return
}
Calling = true
// リクエストURLの組み立て
let url_string : String = HttpRequestType.RegisterLogin.rawValue
guard let req_url = URL(string : url_string) else {
Calling = false
return
}
if let postdata = serverSession.toJSON(login) {
serverSession.postJson(req_url, postdata, completion: serverResponse)
}
else {
Calling = false
return
}
}
func serverResponse(result: Result<Data, APIError>) {
print(debug: "calld")
switch result {
case .success(let resultData):
let jsonstr = String(data: resultData, encoding: .utf8)!
if jsonstr == "Completed.\n\n" {
Calling = false
} else {
Calling = false
}
case .failure(let errorCode):
print(errorCode)
break
}
}
}
...@@ -4,10 +4,27 @@ ...@@ -4,10 +4,27 @@
// //
// Created by Mamoru Sugita on 2023/10/20. // Created by Mamoru Sugita on 2023/10/20.
// //
import Foundation
import CoreLocation
class SharingData{ class SharingData{
class My{
static var location: CLLocationCoordinate2D? = nil
static var speedKnot: Double = 0.0
static var bearing: Double = 0.0 // 自船進行方向
static var compass: Double? = nil // 端末の方位
static func reset() {
location = nil
speedKnot = 0.0
bearing = 0.0
}
}
/**
* Eca
*/
class Eca {
static var area: Dictionary<String, RegisteredEca> = [:]
}
} }
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