Skip to content

Commit e77c930

Browse files
committed
improve trainCodeDetail
1 parent a79eb99 commit e77c930

File tree

4 files changed

+37
-45
lines changed

4 files changed

+37
-45
lines changed

12306ForMac/Model/QueryByTrainCodeParam.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import Foundation
1010

11-
struct QueryByTrainCodeParam {
11+
struct QueryTrainCodeParam {
1212
let train_no:String //6i000D232806"
1313
let from_station_telecode:String // "IOQ"
1414
let to_station_telecode:String //"FYS"

12306ForMac/Service/Service+QueryTicket.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ extension Service {
3333
}
3434
}
3535

36-
func queryTrainDetailFlowWith(_ params:QueryByTrainCodeParam,success:@escaping (TrainCodeDetails)->Void,failure:@escaping (NSError)->Void) {
36+
func queryTrainDetailFlowWith(_ params:QueryTrainCodeParam,success:@escaping (TrainCodeDetails)->Void,failure:@escaping (NSError)->Void) {
3737
self.queryByTrainNo(params).then{trainCodeDetails in
3838
success(trainCodeDetails)
3939
}.catch {error in
@@ -155,7 +155,7 @@ extension Service {
155155
}
156156

157157
//https://kyfw.12306.cn/otn/czxx/queryByTrainNo?train_no=6i000D232806&from_station_telecode=IOQ&to_station_telecode=FYS&depart_date=2016-06-12
158-
func queryByTrainNo(_ params: QueryByTrainCodeParam)->Promise<TrainCodeDetails>{
158+
func queryByTrainNo(_ params: QueryTrainCodeParam)->Promise<TrainCodeDetails>{
159159
return Promise{ fulfill, reject in
160160
let url = "https://kyfw.12306.cn/otn/czxx/queryByTrainNo?" + params.ToGetParams()
161161
let headers = ["refer": "https://kyfw.12306.cn/otn/leftTicket/init",

12306ForMac/TicketViewControllers/TicketQueryViewController.swift

+7-18
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,6 @@ class TicketQueryViewController: BaseViewController {
210210
return popover
211211
}()
212212

213-
214-
215213
func passengerSelected(_ passenger:PassengerDTO) -> Bool{
216214
for controller in passengerViewControllerList where controller.passenger == passenger{
217215
return true
@@ -225,7 +223,6 @@ class TicketQueryViewController: BaseViewController {
225223
}
226224
}
227225

228-
229226
// MARK: - TicketTableView
230227
@IBOutlet weak var leftTicketTable: NSTableView!
231228

@@ -250,14 +247,6 @@ class TicketQueryViewController: BaseViewController {
250247
lazy var trainFilterWindowController:TrainFilterWindowController = TrainFilterWindowController()
251248
lazy var submitWindowController:SubmitWindowController = SubmitWindowController()
252249

253-
lazy var trainCodeDetailViewController:TrainCodeDetailViewController = TrainCodeDetailViewController()
254-
lazy var trainCodeDetailPopover: NSPopover = {
255-
let popover = NSPopover()
256-
popover.behavior = .semitransient
257-
popover.contentViewController = self.trainCodeDetailViewController
258-
return popover
259-
}()
260-
261250
func ticketOrderedBy(_ tickets:[QueryLeftNewDTO], orderedBy:TicketOrder, ascending:Bool) -> [QueryLeftNewDTO] {
262251
let sortedTickets:[QueryLeftNewDTO] = tickets.sorted{
263252
var isOriginAscending = true
@@ -709,14 +698,14 @@ class TicketQueryViewController: BaseViewController {
709698
}
710699

711700
func clickShowTrainDetail(_ sender:NSButton) {
712-
let positioningView = sender
713-
let positioningRect = NSZeroRect
714-
let preferredEdge = NSRectEdge.maxX
715-
trainCodeDetailPopover.show(relativeTo: positioningRect, of: positioningView, preferredEdge: preferredEdge)
701+
let selectedRow = leftTicketTable.row(for: sender)
702+
let ticket = filterQueryResult[selectedRow]
703+
let trainCodeDetailViewController = TrainCodeDetailViewController(trainDetailParams: QueryTrainCodeParam(ticket), trainPriceParams: QueryTrainPriceParam(ticket))
716704

717-
for queryTicket in ticketQueryResult where queryTicket.TrainCode == sender.title {
718-
self.trainCodeDetailViewController.ticket = queryTicket
719-
}
705+
let trainCodeDetailpopover = NSPopover()
706+
trainCodeDetailpopover.behavior = .semitransient
707+
trainCodeDetailpopover.contentViewController = trainCodeDetailViewController
708+
trainCodeDetailpopover.show(relativeTo: NSZeroRect, of: sender, preferredEdge: NSRectEdge.maxX)
720709
}
721710

722711
// MARK: - Menu Action

12306ForMac/TicketViewControllers/TrainCodeDetailViewController.swift

+27-24
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,21 @@ import Cocoa
1010

1111
class TrainCodeDetailViewController: NSViewController {
1212
@IBOutlet weak var priceLbl: NSTextField!
13+
@IBOutlet weak var trainCodeDetailTable: NSTableView!
14+
15+
private let _trainDetailParam: QueryTrainCodeParam
16+
private let _trainPriceParam: QueryTrainPriceParam
1317
var trainCodeDetails: TrainCodeDetails?
14-
var ticket:QueryLeftNewDTO? {
15-
didSet {
16-
17-
let queryByTrainCodeParam = QueryByTrainCodeParam(ticket!)
18-
if self.trainCodeDetails != nil {
19-
self.trainCodeDetails!.trainNos!.removeAll()
20-
self.trainCodeDetailTable.reloadData()
21-
}
22-
let successHandler = { (trainDetails:TrainCodeDetails)->() in
23-
self.trainCodeDetails = trainDetails
24-
self.trainCodeDetailTable.reloadData()
25-
}
26-
let failureHandler = {(error:NSError)->() in }
27-
Service.sharedInstance.queryTrainDetailFlowWith(queryByTrainCodeParam, success: successHandler, failure: failureHandler)
28-
29-
let queryTrainPriceParam = QueryTrainPriceParam(ticket!)
30-
let priceSuccessHandler = { (trainPrice:TrainPrice)->() in
31-
self.priceLbl.stringValue = trainPrice.trainPriceStr
32-
33-
}
34-
Service.sharedInstance.queryTrainPriceFlowWith(queryTrainPriceParam, success: priceSuccessHandler, failure: failureHandler)
35-
}
18+
19+
init(trainDetailParams:QueryTrainCodeParam,trainPriceParams:QueryTrainPriceParam) {
20+
_trainDetailParam = trainDetailParams
21+
_trainPriceParam = trainPriceParams
22+
super.init(nibName: nil, bundle: nil)!
3623
}
3724

38-
@IBOutlet weak var trainCodeDetailTable: NSTableView!
25+
required init?(coder: NSCoder) {
26+
fatalError("init(coder:) has not been implemented")
27+
}
3928

4029
override func viewDidLoad() {
4130
super.viewDidLoad()
@@ -45,10 +34,24 @@ class TrainCodeDetailViewController: NSViewController {
4534
col.headerCell = TrainCodeDetailHeaderCell(textCell: col.headerCell.stringValue)
4635
col.headerCell.alignment = .center
4736
}
37+
38+
let successHandler = { (trainDetails:TrainCodeDetails)->() in
39+
self.trainCodeDetails = trainDetails
40+
self.trainCodeDetailTable.reloadData()
41+
}
42+
let failureHandler = {(error:NSError)->() in }
43+
Service.sharedInstance.queryTrainDetailFlowWith(_trainDetailParam, success: successHandler, failure: failureHandler)
44+
45+
let priceSuccessHandler = { (trainPrice:TrainPrice)->() in
46+
self.priceLbl.stringValue = trainPrice.trainPriceStr
47+
48+
}
49+
Service.sharedInstance.queryTrainPriceFlowWith(_trainPriceParam, success: priceSuccessHandler, failure: failureHandler)
4850
}
51+
4952
}
5053

51-
// MARK: - NSTableViewDataSource
54+
// MARK: - NSTableViewDataSource
5255
extension TrainCodeDetailViewController: NSTableViewDataSource{
5356
func numberOfRows(in tableView: NSTableView) -> Int {
5457
if trainCodeDetails == nil {

0 commit comments

Comments
 (0)