From 03fceaab5abdbd2166d9dcadd2b74a3b42a73086 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Thu, 15 Aug 2019 09:54:19 -0400 Subject: [PATCH] Fixed merge conflicts. --- .../JSONCreator/MasterViewController.swift | 299 ++++++++---------- 1 file changed, 132 insertions(+), 167 deletions(-) diff --git a/JSONCreator_iOS/JSONCreator/MasterViewController.swift b/JSONCreator_iOS/JSONCreator/MasterViewController.swift index 0ff4070..110b2bd 100644 --- a/JSONCreator_iOS/JSONCreator/MasterViewController.swift +++ b/JSONCreator_iOS/JSONCreator/MasterViewController.swift @@ -23,7 +23,7 @@ class MasterViewController: UIViewController, UITableViewDelegate, UITableViewDa //-------------------------------------------------- let folderPath = Bundle.main.resourcePath! + "/JSON" - + var sectionsMap: [AnyHashable: Any] = [:] //-------------------------------------------------- // MARK: - Life Cycle @@ -32,171 +32,144 @@ class MasterViewController: UIViewController, UITableViewDelegate, UITableViewDa override func viewDidLoad() { super.viewDidLoad() - var sectionsMap: [AnyHashable: Any] = [:] - - func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - - // setup the data - sectionsMap = [:] - let sections = try! FileManager.default.contentsOfDirectory(atPath: folderPath) - for section in sections { - let paths = try! FileManager.default.subpathsOfDirectory(atPath: "\(folderPath)/\(section)") - var array: [String] = [] - for path in paths { - if path.hasSuffix(".json") { - array.append(path) - } - } - sectionsMap[section] = array - } - - tableView.delegate = self - tableView.dataSource = self - tableView.estimatedRowHeight = 80 - tableView.rowHeight = UITableView.automaticDimension - - ipTextField.text = "127.0.0.1:8181" - } - - func getData(for indexPath: IndexPath) -> String? { - let sectionName = self.tableView(tableView, titleForHeaderInSection: indexPath.section) - let array = sectionsMap[sectionName!]! as! Array - let subPath = (array[indexPath.row] as! String) - let path = "\(folderPath)/\(sectionName!)/\(subPath)" - return try! String.init(contentsOfFile: path) - } - - //-------------------------------------------------- - // MARK: - Table View - //-------------------------------------------------- - - - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - return try? FileManager.default.contentsOfDirectory(atPath: folderPath)[section] - } - - func numberOfSections(in tableView: UITableView) -> Int { - return try! FileManager.default.contentsOfDirectory(atPath: folderPath).count - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - - return try! FileManager.default.contentsOfDirectory(atPath: folderPath + "/" + FileManager.default.contentsOfDirectory(atPath: folderPath)[section]).count - } - func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { - return (((sectionsMap as NSDictionary).allKeys[section]) as! String) - } - - func numberOfSections(in tableView: UITableView) -> Int { - return sectionsMap.count - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - let sectionName = self.tableView(tableView, titleForHeaderInSection: section) - let array = sectionsMap.arrayForKey(sectionName!) - return array.count - - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - - let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) - - let name = try? FileManager.default.contentsOfDirectory(atPath: folderPath + "/" + FileManager.default.contentsOfDirectory(atPath: folderPath)[indexPath.section])[indexPath.row] - cell.textLabel?.text = name - - if cell.interactions.first == nil { - let dragInteraction = UIDragInteraction(delegate: self) - cell.addInteraction(dragInteraction) - } - - return cell - } - - func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - - let button = UIButton(frame: .zero) - button.setTitle("RequestView", for: .normal) - button.backgroundColor = .red - button.tag = section // why not... ``\__(~_~)__/`` - button.addTarget(self, action: #selector(requestJSON), for: .touchUpInside) - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - - let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) - - let sectionName = self.tableView(tableView, titleForHeaderInSection: indexPath.section) - let array = sectionsMap[sectionName!]! as! Array - cell.textLabel?.text = (array[indexPath.row] as! String) - - return button - } - - func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { - // Return false if you do not want the specified item to be editable. - return true - } - - //-------------------------------------------------- - // MARK: - Methods - //-------------------------------------------------- - - @objc func requestJSON() { - - guard let ip = ipTextField.text else { return } - - let requestParameters = MVMCoreRequestParameters(actionMap: [:]) - let errorLocation = (MVMCoreLoadHandler.sharedGlobal()?.errorLocation(forRequest: MVMCoreSessionTimeHandler.sharedSession(), pageType: "stackTest", modules: ""))! - - requestParameters?.alternateBaseURL = URL(string: "http://\(ip)/v1/molecularResponse") - - MVMCoreDispatchUtility.performBlock(inBackground: { - MVMCoreLoadHandler.sharedGlobal()?.sendRequest(requestParameters!, locationForError: errorLocation, requestFinished: { json, error in - - guard error == nil else { return } - - do { - let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) - let convertedString = String(data: data, encoding: .utf8) - - MVMCoreDispatchUtility.performSyncBlock(onMainThread: { - ((self.splitViewController?.viewControllers[1] as? UINavigationController)?.topViewController as? DetailViewController)?.textView.text = convertedString - }) - } catch let myJSONError { - print(myJSONError) - } - }) - }) - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - - UIPasteboard.general.string = getData(for: indexPath) - - let label = UILabel(frame: .zero) - label.clipsToBounds = true - label.backgroundColor = .gray - label.text = " Copied " - label.font = UIFont.systemFont(ofSize: 40) - label.translatesAutoresizingMaskIntoConstraints = false - label.layer.cornerRadius = 5 - view.superview!.addSubview(label) - label.centerXAnchor.constraint(equalTo: view.superview!.centerXAnchor).isActive = true - label.centerYAnchor.constraint(equalTo: view.superview!.centerYAnchor).isActive = true - - UIView.animate(withDuration: 2, animations: { - label.alpha = 0 - }) { completed in - label.removeFromSuperview() + // setup the data + sectionsMap = [:] + let sections = try! FileManager.default.contentsOfDirectory(atPath: folderPath) + for section in sections { + let paths = try! FileManager.default.subpathsOfDirectory(atPath: "\(folderPath)/\(section)") + var array: [String] = [] + for path in paths { + if path.hasSuffix(".json") { + array.append(path) } } + sectionsMap[section] = array } + tableView.delegate = self + tableView.dataSource = self + tableView.estimatedRowHeight = 80 + tableView.rowHeight = UITableView.automaticDimension + + ipTextField.text = "127.0.0.1:8181" + } + + func getData(for indexPath: IndexPath) -> String? { + + let sectionName = self.tableView(tableView, titleForHeaderInSection: indexPath.section) + let array = sectionsMap[sectionName!]! as! Array + let subPath = (array[indexPath.row] as! String) + let path = "\(folderPath)/\(sectionName!)/\(subPath)" + + return try! String.init(contentsOfFile: path) + } + + //-------------------------------------------------- + // MARK: - Table View + //-------------------------------------------------- + + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + return (((sectionsMap as NSDictionary).allKeys[section]) as! String) + } + + func numberOfSections(in tableView: UITableView) -> Int { + return sectionsMap.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + let sectionName = self.tableView(tableView, titleForHeaderInSection: section) + let array = sectionsMap.arrayForKey(sectionName!) + return array.count + + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) + + let sectionName = self.tableView(tableView, titleForHeaderInSection: indexPath.section) + let array = sectionsMap[sectionName!]! as! Array + cell.textLabel?.text = (array[indexPath.row] as! String) + + if cell.interactions.first == nil { + let dragInteraction = UIDragInteraction(delegate: self) + cell.addInteraction(dragInteraction) + } + return cell + } + + func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + + + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + + let button = UIButton(frame: .zero) + button.setTitle("RequestView", for: .normal) + button.backgroundColor = .red + button.tag = section // why not... ``\__(~_~)__/`` + button.addTarget(self, action: #selector(requestJSON), for: .touchUpInside) + + return button + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + + UIPasteboard.general.string = getData(for: indexPath) + + let label = UILabel(frame: .zero) + label.clipsToBounds = true + label.backgroundColor = .gray + label.text = " Copied " + label.font = UIFont.systemFont(ofSize: 40) + label.translatesAutoresizingMaskIntoConstraints = false + label.layer.cornerRadius = 5 + view.superview!.addSubview(label) + label.centerXAnchor.constraint(equalTo: view.superview!.centerXAnchor).isActive = true + label.centerYAnchor.constraint(equalTo: view.superview!.centerYAnchor).isActive = true + + UIView.animate(withDuration: 2, animations: { + label.alpha = 0 + }) { completed in + label.removeFromSuperview() + } + } + + //-------------------------------------------------- + // MARK: - Methods + //-------------------------------------------------- + + @objc func requestJSON() { + + guard let ip = ipTextField.text else { return } + + let requestParameters = MVMCoreRequestParameters(actionMap: [:]) + let errorLocation = (MVMCoreLoadHandler.sharedGlobal()?.errorLocation(forRequest: MVMCoreSessionTimeHandler.sharedSession(), pageType: "stackTest", modules: ""))! + + requestParameters?.alternateBaseURL = URL(string: "http://\(ip)/v1/molecularResponse") + + MVMCoreDispatchUtility.performBlock(inBackground: { + MVMCoreLoadHandler.sharedGlobal()?.sendRequest(requestParameters!, locationForError: errorLocation, requestFinished: { json, error in + + guard error == nil else { return } + + do { + let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) + let convertedString = String(data: data, encoding: .utf8) + + MVMCoreDispatchUtility.performSyncBlock(onMainThread: { + ((self.splitViewController?.viewControllers[1] as? UINavigationController)?.topViewController as? DetailViewController)?.textView.text = convertedString + }) + } catch let myJSONError { + print(myJSONError) + } + }) + }) } } + // MARK:- Drag Interaction Delegate extension MasterViewController: UIDragInteractionDelegate { @@ -204,17 +177,9 @@ extension MasterViewController: UIDragInteractionDelegate { let location = session.location(in: tableView) let indexPath = tableView.indexPathForRow(at: location) - - let sectionName = try! FileManager.default.contentsOfDirectory(atPath: folderPath)[indexPath!.section] - let path = try! folderPath + "/" + sectionName + "/" + FileManager.default.contentsOfDirectory(atPath: folderPath + "/" + sectionName)[indexPath!.row] - let content = try! String(contentsOfFile: path) - let provider = NSItemProvider(object: content as NSString) - let content = getData(for: indexPath!) let provider = NSItemProvider(object: content! as NSString) - let item = UIDragItem(itemProvider: provider) - return [item] } }