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