67 lines
2.8 KiB
Swift
67 lines
2.8 KiB
Swift
//
|
|
// MoleculeStackTemplate.swift
|
|
// MVMCoreUI
|
|
//
|
|
// Created by Scott Pfeil on 2/11/19.
|
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
public class MoleculeStackTemplate: ThreeLayerViewController {
|
|
|
|
public override func spaceBetweenTopAndMiddle() -> CGFloat? {
|
|
return 0
|
|
}
|
|
|
|
public override func viewForTop() -> UIView? {
|
|
guard let moleculeJSON = loadObject?.pageJSON?.optionalDictionaryForKey("header"), let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(forJSON: moleculeJSON, delegateObject: delegateObject() as? MVMCoreUIDelegateObject, constrainIfNeeded: true) else {
|
|
return nil
|
|
}
|
|
return molecule
|
|
}
|
|
|
|
public override func viewForMiddle() -> UIView? {
|
|
guard let moleculeJSON = loadObject?.pageJSON?.optionalDictionaryForKey("moleculeStack") else {
|
|
return nil
|
|
}
|
|
let stack = MoleculeStackView(frame: .zero)
|
|
stack.useStackSpacingBeforeFirstItem = true
|
|
stack.setWithJSON(moleculeJSON, delegateObject: delegateObject() as? MVMCoreUIDelegateObject, additionalData: nil)
|
|
return stack
|
|
}
|
|
|
|
override public func viewForBottom() -> UIView? {
|
|
guard let moleculeJSON = loadObject?.pageJSON?.optionalDictionaryForKey("footer"), let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(forJSON: moleculeJSON, delegateObject: delegateObject() as? MVMCoreUIDelegateObject, constrainIfNeeded: true) else {
|
|
return nil
|
|
}
|
|
return molecule
|
|
}
|
|
|
|
// MARK: - cache handling
|
|
public override func pageTypesToListenFor() -> [Any]? {
|
|
guard let pageType = self.pageType else {
|
|
return super.pageTypesToListenFor()
|
|
}
|
|
return [pageType]
|
|
}
|
|
|
|
public override func modulesToListenFor() -> [Any]? {
|
|
return loadObject?.requestParameters?.modules
|
|
}
|
|
|
|
open override func requiredModules(fromPageJSON page: [AnyHashable : Any]?) -> [Any]? {
|
|
return modulesNeeded() as? [Any]
|
|
}
|
|
|
|
/// Gets the modules needed.
|
|
func modulesNeeded() -> NSMutableArray? {
|
|
let modules: NSMutableArray = []
|
|
let delegate = delegateObject() as? MVMCoreUIDelegateObject
|
|
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("header"), delegateObject: delegate, moduleList: modules, errorList: nil)
|
|
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("footer"), delegateObject: delegate, moduleList: modules, errorList: nil)
|
|
MVMCoreUIMoleculeMappingObject.addRequiredModules(forJSON: loadObject?.pageJSON?.optionalDictionaryForKey("moleculeStack"), delegateObject: delegate, moduleList: modules, errorList: nil)
|
|
return modules.count > 0 ? modules : nil
|
|
}
|
|
}
|