]> git.r.bdr.sh - rbdr/map/blame - Map/Data/Stage.swift
Add search
[rbdr/map] / Map / Data / Stage.swift
CommitLineData
98f09799
RBR
1/*
2 Copyright (C) 2024 Rubén Beltrán del Río
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see https://map.tranquil.systems.
16 */
5e8ff485
RBR
17struct Stage {
18 let i: String
19 let ii: String
20 let iii: String
21 let iv: String
22
23 static func stages(_ type: StageType) -> Stage {
24 switch type {
25 case .general:
26 return Stage(
77d0155b 27 i: "Genesis", ii: "Custom", iii: "Product (+rental)", iv: "Commodity (+utility)")
5e8ff485
RBR
28 case .practice:
29 return Stage(
30 i: "Novel", ii: "Emerging", iii: "Good", iv: "Best")
31 case .data:
32 return Stage(
33 i: "Unmodelled", ii: "Divergent", iii: "Convergent", iv: "Modelled")
34 case .knowledge:
35 return Stage(
36 i: "Concept", ii: "Hypothesis", iii: "Theory", iv: "Accepted")
37 case .ubiquity:
38 return Stage(
77d0155b
RBR
39 i: "Rare", ii: "Slowly Increasing", iii: "Rapidly Increasing",
40 iv: "Widespread in the applicable market / ecosystem")
5e8ff485
RBR
41 case .certainty:
42 return Stage(
77d0155b
RBR
43 i: "Poorly Understood / exploring the unknown",
44 ii: "Rapid Increase In Learning / discovery becomes refining",
45 iii: "Rapid increase in use / increasing fit for purpose",
46 iv: "Commonly understood (in terms of use)")
5e8ff485
RBR
47 case .publicationTypes:
48 return Stage(
77d0155b
RBR
49 i:
50 "Describe the wonder of the thing / the discovery of some marvel / a new land / an unknown frontier",
51 ii:
52 "Focused on build / construct / awareness and learning / many models of explanation / no accepted forms / a wild west",
53 iii:
54 "Maintenance / operations / installation / comparison between competing forms / feature analysis",
55 iv: "Focused on use / increasingly an accepted, almost invisible component")
5e8ff485
RBR
56 case .market:
57 return Stage(
77d0155b
RBR
58 i: "Undefined Market",
59 ii: "Forming Market / an array of competing forms and models of understanding",
60 iii: "Growing Market / consolidation to a few competing but more accepted forms",
61 iv: "Mature Market / stabilised to an accepted form")
5e8ff485
RBR
62 case .knowledgeManagement:
63 return Stage(
77d0155b
RBR
64 i: "Uncertain", ii: "Learning on use / focused on testing prediction",
65 iii: "Learning on operation / using prediction / verification", iv: "Known / accepted")
5e8ff485
RBR
66 case .marketPerception:
67 return Stage(
77d0155b
RBR
68 i: "Chaotic (non-linear) / domain of the \"crazy\"", ii: "Domain of \"experts\"",
69 iii: "Increasing expectation of use / domain of \"professionals\"",
70 iv: "Ordered (appearance of being linear) / trivial / formula to be applied")
5e8ff485
RBR
71 case .userPerception:
72 return Stage(
77d0155b
RBR
73 i: "Different / confusing / exciting / surprising / dangerous",
74 ii: "Leading edge / emerging / unceirtanty over results",
75 iii: "Increasingly common / disappointed if not used or available / feeling left behind",
76 iv: "Standard / expected / feeling of shock if not used")
5e8ff485
RBR
77 case .perceptionInIndustry:
78 return Stage(
77d0155b
RBR
79 i: "Future source of competitive advantage / unpredictable / unknown",
80 ii: "Seen as a scompetitive advantage / a differential / ROI / case examples",
81 iii: "Advantage through implementation / features / this model is better than that",
82 iv: "Cost of doing business / accepted / specific defined models")
5e8ff485
RBR
83 case .focusOfValue:
84 return Stage(
77d0155b
RBR
85 i: "High future worth but immediate investment",
86 ii: "Seeking ways to profit and a ROI / seeking confirmation of value",
87 iii:
88 "High profitability per unit / a valuable model / a feeling of understanding / focus on exploitation",
89 iv:
90 "High volume / reducing margin / important but invisible / an essential component of something more complex"
91 )
5e8ff485
RBR
92 case .understanding:
93 return Stage(
94 i: "Poorly Understood / unpredictable",
95 ii: "Increasing understanding / development of measures",
96 iii: "Increasing education / constant refinement of needs / measures",
97 iv: "Believed to be well defined / stable / measurable")
98 case .comparison:
99 return Stage(
100 i: "Constantly changing / a differential / unstable",
101 ii: "Learning from others / testing the water / some evidential support",
77d0155b
RBR
102 iii: "Competing models / feature difference / evidential support",
103 iv: "Essential / any advantage is operational / accepted norm")
5e8ff485
RBR
104 case .failure:
105 return Stage(
77d0155b
RBR
106 i: "High / tolerated / assumed to be wrong",
107 ii: "Moderate / unsurprising if wrong but disappointed",
108 iii:
109 "Not tolerated / focus on constant improvement / assumed to be in the right direction / resistance to changing the model",
110 iv: "Surprised by failure / focus on operational efficiency")
5e8ff485
RBR
111 case .marketAction:
112 return Stage(
113 i: "Gambling / driven by gut", ii: "Exploring a \"found\" value",
114 iii: "Market analysis / listening to customers", iv: "Metric driven / build what is needed")
115 case .efficiency:
116 return Stage(
117 i: "Reducing the cost of change (experimentation)", ii: "Reducing cost of waste (Learning)",
118 iii: "Reducing cost of waste (Learning)", iv: "Reducing cost of deviation (Volume)")
119 case .decisionDrivers:
120 return Stage(
121 i: "Heritage / culture", ii: "Analyses & synthesis", iii: "Analyses & synthesis",
122 iv: "Previous Experience")
123 case .behavior:
124 return Stage(
125 i: "Uncertain when to use", ii: "Learning when to use", iii: "Learning through use",
126 iv: "Known / common usage")
127 }
128 }
129
130 static func title(_ type: StageType) -> String {
131 switch type {
132 case .general:
133 return "Activities"
134 case .practice:
135 return "Practice"
136 case .data:
137 return "Data"
138 case .knowledge:
139 return "Knowledge"
140 case .ubiquity:
141 return "Ubiquity"
142 case .certainty:
143 return "Certainty"
144 case .publicationTypes:
145 return "Publication Types"
146 case .market:
147 return "Market"
148 case .knowledgeManagement:
149 return "Knowledge Management"
150 case .marketPerception:
151 return "Market Perception"
152 case .userPerception:
153 return "User Perception"
154 case .perceptionInIndustry:
155 return "Perception In Industry"
156 case .focusOfValue:
157 return "Focus Of Value"
158 case .understanding:
159 return "Understanding"
160 case .comparison:
161 return "Comparison"
162 case .failure:
163 return "Failure"
164 case .marketAction:
165 return "Market Action"
166 case .efficiency:
167 return "Efficiency"
168 case .decisionDrivers:
169 return "Decision Drivers"
170 case .behavior:
171 return "Behavior"
172 }
173 }
174}
175
176enum StageType: String, CaseIterable, Identifiable {
177 case general
178 case practice
179 case data
180 case knowledge
77d0155b 181
5e8ff485
RBR
182 case ubiquity
183 case certainty
184 case publicationTypes
77d0155b 185
5e8ff485
RBR
186 case market
187 case knowledgeManagement
188 case marketPerception
189 case userPerception
190 case perceptionInIndustry
191 case focusOfValue
192 case understanding
193 case comparison
194 case failure
195 case marketAction
196 case efficiency
197 case decisionDrivers
77d0155b 198
5e8ff485
RBR
199 case behavior
200
201 var id: String { self.rawValue }
77d0155b
RBR
202
203 static let types: [StageType] = [.general, .practice, .data, .knowledge]
204 static let characteristics: [StageType] = [.ubiquity, .certainty, .publicationTypes]
205 static let properties: [StageType] = [
206 .market, .knowledgeManagement, .marketPerception, .userPerception,
207 .perceptionInIndustry, .focusOfValue, .understanding, .comparison, .failure,
208 .marketAction, .efficiency, .decisionDrivers,
209 ]
210 static let custom: [StageType] = [.behavior]
5e8ff485 211}