Including logic to pull from custom molecular server.

This commit is contained in:
Kevin G Christiano 2019-08-13 12:43:42 -04:00
parent 1884ade36a
commit ac38e271bc
5 changed files with 56 additions and 61 deletions

View File

@ -21,7 +21,6 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
0AE3D04E2303009C00B844C7 /* QueryServerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE3D04D2303009C00B844C7 /* QueryServerCell.swift */; };
D2B1E3F322F4A68F0065F95C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3F222F4A68F0065F95C /* AppDelegate.swift */; };
D2B1E3F522F4A68F0065F95C /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3F422F4A68F0065F95C /* MasterViewController.swift */; };
D2B1E3F722F4A68F0065F95C /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3F622F4A68F0065F95C /* DetailViewController.swift */; };
@ -54,7 +53,6 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0AE3D04D2303009C00B844C7 /* QueryServerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryServerCell.swift; sourceTree = "<group>"; };
D2B1E3EF22F4A68F0065F95C /* JSONCreator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JSONCreator.app; sourceTree = BUILT_PRODUCTS_DIR; };
D2B1E3F222F4A68F0065F95C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
D2B1E3F422F4A68F0065F95C /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = "<group>"; };
@ -111,7 +109,6 @@
D2B1E3FB22F4A6930065F95C /* Assets.xcassets */,
D2B1E3FD22F4A6930065F95C /* LaunchScreen.storyboard */,
D2B1E40022F4A6930065F95C /* Info.plist */,
0AE3D04D2303009C00B844C7 /* QueryServerCell.swift */,
);
path = JSONCreator;
sourceTree = "<group>";
@ -226,7 +223,6 @@
buildActionMask = 2147483647;
files = (
D2B1E3F722F4A68F0065F95C /* DetailViewController.swift in Sources */,
0AE3D04E2303009C00B844C7 /* QueryServerCell.swift in Sources */,
D2B1E3F522F4A68F0065F95C /* MasterViewController.swift in Sources */,
D2B1E3F322F4A68F0065F95C /* AppDelegate.swift in Sources */,
);

View File

@ -34,10 +34,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
// Override point for customization after application launch.
let splitViewController = window!.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count - 1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
splitViewController.delegate = self
splitViewController.preferredDisplayMode = .allVisible
return true
}
@ -66,9 +67,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
// MARK: - Split view
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto primaryViewController:UIViewController) -> Bool {
guard let secondaryAsNavController = secondaryViewController as? UINavigationController else { return false }
guard let _ = secondaryAsNavController.topViewController as? DetailViewController else { return false }
guard let secondaryAsNavController = secondaryViewController as? UINavigationController,
let _ = secondaryAsNavController.topViewController as? DetailViewController
else { return false }
return false
}
}

View File

@ -11,9 +11,16 @@ import MVMCoreUI
class DetailViewController: UIViewController {
//--------------------------------------------------
// MARK: - Properties
//--------------------------------------------------
let textView = UITextView(frame: .zero)
//--------------------------------------------------
// MARK: - Lifecycle
//--------------------------------------------------
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
@ -37,6 +44,10 @@ class DetailViewController: UIViewController {
navigationItem.setRightBarButtonItems([shareButton, buildButton], animated: true)
}
//--------------------------------------------------
// MARK: - Methods
//--------------------------------------------------
func showError(_ error: NSError) {
let alert = UIAlertController(title: "Error", message: "\(error)", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil))
@ -77,6 +88,7 @@ class DetailViewController: UIViewController {
}
}
// MARK:- TextView Delegate
extension DetailViewController: UITextViewDelegate {
func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
guard textView.text.count > 0 else {

View File

@ -11,9 +11,16 @@ import MVMCore
class MasterViewController: UITableViewController {
//--------------------------------------------------
// MARK: - Properties
//--------------------------------------------------
let folderPath = Bundle.main.resourcePath! + "/JSON"
//--------------------------------------------------
// MARK: - Life Cycle
//--------------------------------------------------
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
@ -22,7 +29,9 @@ class MasterViewController: UITableViewController {
tableView.rowHeight = UITableView.automaticDimension
}
//--------------------------------------------------
// MARK: - Table View
//--------------------------------------------------
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return try? FileManager.default.contentsOfDirectory(atPath: folderPath)[section]
@ -34,33 +43,33 @@ class MasterViewController: UITableViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return try! FileManager.default.contentsOfDirectory(atPath: folderPath + "/" + FileManager.default.contentsOfDirectory(atPath: folderPath)[section]).count + 1
}
return try! FileManager.default.contentsOfDirectory(atPath: folderPath + "/" + FileManager.default.contentsOfDirectory(atPath: folderPath)[section]).count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? QueryServerCell else { return UITableViewCell() }
cell.requestServer = requestJSON
return cell
} else {
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]
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
}
}
override 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
}
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
@ -68,6 +77,10 @@ class MasterViewController: UITableViewController {
return true
}
//--------------------------------------------------
// MARK: - Methods
//--------------------------------------------------
@objc func requestJSON() {
let requestParameters = MVMCoreRequestParameters(actionMap: [:])
@ -75,29 +88,34 @@ class MasterViewController: UITableViewController {
pageType: "test",
modules: ""))!
requestParameters?.alternateBaseURL = URL(string: "http://127.0.0.1/v1/molecularResponse")
MVMCoreDispatchUtility.performBlock(inBackground: {
MVMCoreLoadHandler.sharedGlobal()?.sendRequest(requestParameters!, locationForError: errorLocation, requestFinished: { json, error in
if error != nil {
// BAD
} else {
// GOOD
// GOOD
}
})
})
}
}
// MARK:- Drag Interaction Delegate
extension MasterViewController: UIDragInteractionDelegate {
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
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.init(contentsOfFile: path)
let content = try! String(contentsOfFile: path)
let provider = NSItemProvider(object: content as NSString)
let item = UIDragItem(itemProvider: provider)
return [item]
}
}

View File

@ -1,35 +0,0 @@
//
// QueryServerCell.swift
// JSONCreator
//
// Created by Kevin Christiano on 8/13/19.
// Copyright © 2019 Verizon Wireless. All rights reserved.
//
import UIKit
class QueryServerCell: UITableViewCell {
var requestServer: (()->())?
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let button = UIButton(frame: .zero)
button.setTitle("RequestView", for: .normal)
button.backgroundColor = .yellow
button.addTarget(self, action: #selector(requestJSON), for: .touchUpInside)
contentView.addSubview(button)
NSLayoutConstraint.pinView(toSuperview: button, useMargins: true)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func requestJSON() {
requestServer?()
}
}