diff --git a/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate b/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate
index 5f4cdb2..b1c7222 100644
Binary files a/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate and b/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 80e6df7..52228e6 100644
--- a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -26,11 +26,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "OTRS-Watch/OTRS.swift"
- timestampString = "503499740.022029"
+ timestampString = "503572546.154236"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "68"
- endingLineNumber = "68"
+ startingLineNumber = "71"
+ endingLineNumber = "71"
landmarkName = "reload(que:)"
landmarkType = "7">
diff --git a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme
index 0cc0118..5f80d6f 100644
--- a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme
+++ b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme
@@ -81,6 +81,12 @@
ReferencedContainer = "container:OTRS-Watch.xcodeproj">
+
+
+
+
diff --git a/OTRS-Watch/Extension/ViewControllerExtension.swift b/OTRS-Watch/Extension/ViewControllerExtension.swift
index 9813097..b7885b7 100644
--- a/OTRS-Watch/Extension/ViewControllerExtension.swift
+++ b/OTRS-Watch/Extension/ViewControllerExtension.swift
@@ -52,4 +52,15 @@ extension ViewController: NSTableViewDataSource, NSTableViewDelegate {
return nil
}
+
+ func tableViewSelectionDidChange(_ notification: Notification) {
+ updateViewAfterSelectionDidChange()
+ }
+
+ private func updateViewAfterSelectionDidChange() {
+ let selectedRow = ticketTableView.selectedRow
+
+ print(selectedRow)
+ }
}
+
diff --git a/OTRS-Watch/OTRS.swift b/OTRS-Watch/OTRS.swift
index 594ca8d..c449f0a 100644
--- a/OTRS-Watch/OTRS.swift
+++ b/OTRS-Watch/OTRS.swift
@@ -18,7 +18,7 @@ class OTRS {
return Singleton.instance
}
- var baseURL : String = "";
+ var baseURL : String = ""; // example base url: http://saeotrs01.sae.intra/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/
var username : String = "";
var password : String = "";
@@ -62,17 +62,15 @@ class OTRS {
print(ticketIDs)
for ticketID in ticketIDs {
+ cnt += 1;
+ let isLast = (cnt == ticketIDs.count)
+
if let tID:Int = Int(ticketID) {
- self.fetch(ticket: tID, session: session)
- cnt = cnt+1;
+ self.fetch(ticket: tID, session: session, isLast: isLast)
+
}
}
}
-
- let nc = NotificationCenter.default
- nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.LIST.UPDATED),
- object: nil,
- userInfo: ["count":cnt])
}
} catch {
print("Error in JSONSerialization")
@@ -83,7 +81,7 @@ class OTRS {
task.resume()
}
- func fetch(ticket:Int, session:URLSession) {
+ func fetch(ticket:Int, session:URLSession, isLast:Bool) {
let url = URL(string: buildURLForGettingTicketInfo(ticketID: ticket))
let task = session.dataTask(with: url!, completionHandler: { // see: https://developer.apple.com/swift/blog/?id=37
@@ -98,12 +96,19 @@ class OTRS {
let ticket = try Ticket(source: ticketData)
//print(ticket)
+ self.ticketDictionary.append(ticket)
+
let nc = NotificationCenter.default
nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.IN),
object: nil,
userInfo: ["message":ticket.id, "ticket":ticket])
- self.ticketDictionary.append(ticket)
+ if isLast {
+ let nc = NotificationCenter.default
+ nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.LIST.UPDATED),
+ object: nil,
+ userInfo: ["count":self.ticketDictionary.count])
+ }
} catch SerializationError.missing(let marker) {
print("Error in JSONSerialization for ticket #\(ticket) at \"\(marker)\"")
@@ -128,7 +133,6 @@ class OTRS {
}
private func buildURLForGettingListByState(forState:String, queID:Int) -> String {
- // example base url: http://saeotrs01.sae.intra/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/
return self.baseURL.appending("Ticket?UserLogin=\(self.username)&Password=\(self.password)&QueueIDs=\(queID)&States=\(forState)")
}
diff --git a/OTRS-Watch/ViewController.swift b/OTRS-Watch/ViewController.swift
index 04d8071..08a3006 100644
--- a/OTRS-Watch/ViewController.swift
+++ b/OTRS-Watch/ViewController.swift
@@ -78,12 +78,13 @@ class ViewController: NSViewController {
let _:Ticket = userInfo["ticket"] as? Ticket else {
return
}
-
- self.ticketTableView.reloadData()
}
func catchTicketsUpdated(notification:Notification) -> Void {
-
+ DispatchQueue.main.async{
+ print("\(OTRS.sharedInstance.ticketDictionary.count) tickets to be shown")
+ self.ticketTableView.reloadData()
+ }
}
}