struct Stage { let I: String let II: String let III: String let IV: String static func stages(_ type: StageType) -> Stage { switch(type) { case .General: return Stage(I: "Genesis", II: "Custom Built", III: "Product (+rental)", IV: "Commodity (+utility)") case .Ubiquity: return Stage(I: "Rare", II: "Slowly Increasing Consumption", III: "Rapidly Increasing Consumption", IV: "Widespread and stabilising") case .Certainty: return Stage(I: "Poorly Understood", II: "Rapid Increase In Learning", III: "Rapid Increase in Use / fit for purpose", IV: "Commonly understood (in terms of use)") case .PublicationTypes: return Stage(I: "Normally describing the wonder of the thing", II: "Build / construct / awareness and learning", III: "Maintenance / operations / installation / feature", IV: "Focused on use") case .Market: return Stage(I: "Undefined Market", II: "Forming Market", III: "Growing Market", IV: "Mature Market") case .KnowledgeManagement: return Stage(I: "Uncertain", II: "Learning on use", III: "Learning on operation", IV: "Known / accepted") case .MarketPerception: return Stage(I: "Chaotic (non-linear)", II: "Domain of experts", III: "Increasing expectation of use", IV: "Ordered (appearance of being trivial) / trivial") case .UserPerception: return Stage(I: "Different / confusing / exciting / surprising", II: "Leading edge / emerging", III: "Increasingly common / disappointed if not used", IV: "Standard / expected") case .PerceptionInIndustry: return Stage(I: "Competitive advantage / unpredictable / unknown", II: "Competitive advantage / ROI / case examples", III: "Advantage through implementation / features", IV: "Cost of doing business") case .FocusOfValue: return Stage(I: "High future worth", II: "Seeking profit / ROI", III: "High profitability", IV: "High volume / reducing margin") case .Understanding: return Stage(I: "Poorly Understood / unpredictable", II: "Increasing understanding / development of measures", III: "Increasing education / constant refinement of needs / measures", IV: "Believed to be well defined / stable / measurable") case .Comparison: return Stage(I: "Constantly changing / a differential / unstable", II: "Learning from others / testing the water / some evidential support", III: "Feature difference", IV: "Essential / operational advantage") case .Failure: return Stage(I: "High / tolerated / assumed", II: "Moderate / unsurprising but disappointed", III: "Not tolerated, focus on constant improvement", IV: "Operational efficiency and surprised by failure") case .MarketAction: return Stage(I: "Gambling / driven by gut", II: "Exploring a \"found\" value", III: "Market analysis / listening to customers", IV: "Metric driven / build what is needed") case .Efficiency: return Stage(I: "Reducing the cost of change (experimentation)", II: "Reducing cost of waste (Learning)", III: "Reducing cost of waste (Learning)", IV: "Reducing cost of deviation (Volume)") case .DecisionDrivers: return Stage(I: "Heritage / culture", II: "Analyses & synthesis", III: "Analyses & synthesis", IV: "Previous Experience") case .Behavior: return Stage(I: "Needs to be pushed", II: "Shown in simple situations", III: "Shown in moderately complex situations ", IV: "Always shown") } } static func title(_ type: StageType) -> String { switch(type) { case .General: return "General" case .Ubiquity: return "Ubiquity" case .Certainty: return "Certainty" case .PublicationTypes: return "Publication Types" case .Market: return "Market" case .KnowledgeManagement: return "Knowledge Management" case .MarketPerception: return "Market Perception" case .UserPerception: return "User Perception" case .PerceptionInIndustry: return "Perception In Industry" case .FocusOfValue: return "Focus Of Value" case .Understanding: return "Understanding" case .Comparison: return "Comparison" case .Failure: return "Failure" case .MarketAction: return "Market Action" case .Efficiency: return "Efficiency" case .DecisionDrivers: return "Decision Drivers" case .Behavior: return "Behavior" } } } enum StageType: String, CaseIterable, Identifiable { case General case Ubiquity case Certainty case PublicationTypes case Market case KnowledgeManagement case MarketPerception case UserPerception case PerceptionInIndustry case FocusOfValue case Understanding case Comparison case Failure case MarketAction case Efficiency case DecisionDrivers case Behavior var id: String { self.rawValue } }