|
81 | 81 | let allScenariosExceptCompare: string[];
|
82 | 82 | let decreaseScenarioOk: boolean;
|
83 | 83 | let increaseScenarioOk: boolean;
|
84 |
| - let allCompareScenariosExceptMain: Array<string | null>; |
| 84 | + let allCompareScenariosExceptMain: Array<string | null> = [null]; |
85 | 85 | let decreaseCompareScenarioOk: boolean;
|
86 | 86 | let increaseCompareScenarioOk: boolean;
|
87 | 87 |
|
|
128 | 128 | ? null
|
129 | 129 | : $allScenarios.get($compareScenarioName);
|
130 | 130 |
|
131 |
| - descriptionLines = scenario.metadata.description.replace(/\r/g, "").split(/\n+/), |
132 |
| - compareDescriptionLines = |
133 |
| - $compareScenarioName === null |
134 |
| - ? null |
135 |
| - : compareScenario.metadata.description |
136 |
| - .replace(/\r/g, "") |
137 |
| - .split(/\n+/); |
| 131 | + (descriptionLines = scenario.metadata.description |
| 132 | + .replace(/\r/g, "") |
| 133 | + .split(/\n+/)), |
| 134 | + (compareDescriptionLines = |
| 135 | + $compareScenarioName === null |
| 136 | + ? null |
| 137 | + : compareScenario.metadata.description |
| 138 | + .replace(/\r/g, "") |
| 139 | + .split(/\n+/)); |
138 | 140 |
|
139 | 141 | allScenariosExceptCompare = allScenarioNames.filter(
|
140 | 142 | (s) => s !== $compareScenarioName
|
@@ -223,75 +225,84 @@ modelled development strategies on any of the four indicators.
|
223 | 225 | {/if}
|
224 | 226 |
|
225 | 227 | <h3>Compare against</h3>
|
226 |
| -<div class="controls-grid"> |
227 |
| - <button |
228 |
| - class="controls" |
229 |
| - on:click={decreaseCompareScenario} |
230 |
| - disabled={!decreaseCompareScenarioOk} |
231 |
| - > |
232 |
| - <img |
233 |
| - class="control-arrows" |
234 |
| - src={decreaseCompareScenarioOk ? leftIcon : leftIconDisabled} |
235 |
| - alt="Decrease compare scenario" |
236 |
| - /> |
237 |
| - </button> |
238 |
| - <select |
239 |
| - id="compare" |
240 |
| - bind:value={$compareScenarioName} |
241 |
| - on:change={changeScenario} |
242 |
| - > |
243 |
| - <option value={null}>None</option> |
244 |
| - {#each [...$allScenarios.entries()] as [name, compareScenario]} |
245 |
| - {#if name !== $scenarioName} |
246 |
| - <option value={name}>{compareScenario.metadata.long}</option> |
247 |
| - {/if} |
248 |
| - {/each} |
249 |
| - </select> |
250 |
| - <button |
251 |
| - class="controls" |
252 |
| - on:click={increaseCompareScenario} |
253 |
| - disabled={!increaseCompareScenarioOk} |
254 |
| - > |
255 |
| - <img |
256 |
| - class="control-arrows" |
257 |
| - src={increaseCompareScenarioOk ? rightIcon : rightIconDisabled} |
258 |
| - alt="Increase compare scenario" |
259 |
| - /> |
260 |
| - </button> |
261 |
| - {#if $compareScenarioName !== null} |
| 228 | +{#if allCompareScenariosExceptMain.length === 1 && $compareScenarioName === null} |
| 229 | + <p class="no-bottom-margin"> |
| 230 | + There are currently no other scenarios to compare against. You can |
| 231 | + create a new scenario, or import a previously defined scenario, using |
| 232 | + the tabs above. |
| 233 | + </p> |
| 234 | +{:else} |
| 235 | + <div class="controls-grid"> |
262 | 236 | <button
|
263 |
| - class="toggle-description" |
264 |
| - on:click={toggleCompareDescriptionVisible} |
265 |
| - transition:slide|local={{ duration: 300 }} |
| 237 | + class="controls" |
| 238 | + on:click={decreaseCompareScenario} |
| 239 | + disabled={!decreaseCompareScenarioOk} |
266 | 240 | >
|
267 |
| - <span class="instruction" |
268 |
| - >{compareDescriptionVisible |
269 |
| - ? "hide description" |
270 |
| - : "show description"}</span |
271 |
| - > |
272 |
| - <span class="small-icon" |
273 |
| - >{compareDescriptionVisible ? "∧" : "∨"}</span |
274 |
| - > |
| 241 | + <img |
| 242 | + class="control-arrows" |
| 243 | + src={decreaseCompareScenarioOk ? leftIcon : leftIconDisabled} |
| 244 | + alt="Decrease compare scenario" |
| 245 | + /> |
275 | 246 | </button>
|
276 |
| - {/if} |
277 |
| -</div> |
278 |
| - |
279 |
| -{#if compareDescriptionVisible && $compareScenarioName !== null} |
280 |
| - <div id="compare-scenario-description-container" transition:slide|local> |
281 |
| - {#key $compareScenarioName} |
282 |
| - <div |
283 |
| - id="compare-scenario-description" |
284 |
| - in:customFlyInCmp|local |
285 |
| - out:customFlyOutCmp|local |
286 |
| - on:outrostart={setMaxHeightToZero} |
| 247 | + <select |
| 248 | + id="compare" |
| 249 | + bind:value={$compareScenarioName} |
| 250 | + on:change={changeScenario} |
| 251 | + > |
| 252 | + <option value={null}>None</option> |
| 253 | + {#each [...$allScenarios.entries()] as [name, compareScenario]} |
| 254 | + {#if name !== $scenarioName} |
| 255 | + <option value={name}>{compareScenario.metadata.long}</option |
| 256 | + > |
| 257 | + {/if} |
| 258 | + {/each} |
| 259 | + </select> |
| 260 | + <button |
| 261 | + class="controls" |
| 262 | + on:click={increaseCompareScenario} |
| 263 | + disabled={!increaseCompareScenarioOk} |
| 264 | + > |
| 265 | + <img |
| 266 | + class="control-arrows" |
| 267 | + src={increaseCompareScenarioOk ? rightIcon : rightIconDisabled} |
| 268 | + alt="Increase compare scenario" |
| 269 | + /> |
| 270 | + </button> |
| 271 | + {#if $compareScenarioName !== null} |
| 272 | + <button |
| 273 | + class="toggle-description" |
| 274 | + on:click={toggleCompareDescriptionVisible} |
| 275 | + transition:slide|local={{ duration: 300 }} |
287 | 276 | >
|
288 |
| - <p>{compareDescriptionLines[0]}</p> |
289 |
| - {#each compareDescriptionLines.slice(1) as para} |
290 |
| - <p>{para}</p> |
291 |
| - {/each} |
292 |
| - </div> |
293 |
| - {/key} |
| 277 | + <span class="instruction" |
| 278 | + >{compareDescriptionVisible |
| 279 | + ? "hide description" |
| 280 | + : "show description"}</span |
| 281 | + > |
| 282 | + <span class="small-icon" |
| 283 | + >{compareDescriptionVisible ? "∧" : "∨"}</span |
| 284 | + > |
| 285 | + </button> |
| 286 | + {/if} |
294 | 287 | </div>
|
| 288 | + |
| 289 | + {#if compareDescriptionVisible && $compareScenarioName !== null} |
| 290 | + <div id="compare-scenario-description-container" transition:slide|local> |
| 291 | + {#key $compareScenarioName} |
| 292 | + <div |
| 293 | + id="compare-scenario-description" |
| 294 | + in:customFlyInCmp|local |
| 295 | + out:customFlyOutCmp|local |
| 296 | + on:outrostart={setMaxHeightToZero} |
| 297 | + > |
| 298 | + <p>{compareDescriptionLines[0]}</p> |
| 299 | + {#each compareDescriptionLines.slice(1) as para} |
| 300 | + <p>{para}</p> |
| 301 | + {/each} |
| 302 | + </div> |
| 303 | + {/key} |
| 304 | + </div> |
| 305 | + {/if} |
295 | 306 | {/if}
|
296 | 307 |
|
297 | 308 | <style>
|
@@ -383,7 +394,8 @@ modelled development strategies on any of the four indicators.
|
383 | 394 | margin-top: 0 !important;
|
384 | 395 | }
|
385 | 396 | div#scenario-description > :last-child,
|
386 |
| - div#compare-scenario-description > :last-child { |
| 397 | + div#compare-scenario-description > :last-child, |
| 398 | + .no-bottom-margin { |
387 | 399 | margin-bottom: 0 !important;
|
388 | 400 | }
|
389 | 401 | </style>
|
0 commit comments