-
-
Notifications
You must be signed in to change notification settings - Fork 172
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The commit adds a new a UI component that's enabled in development mode. This component, initially, provides a button that wen clicked, logs all the script and category names to the console. It helps revising names used throughout the application. By having this component in a conditionally rendered component, it's excluded from the production builds.
- Loading branch information
1 parent
2862951
commit 2147eae
Showing
4 changed files
with
114 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
<template> | ||
<div class="dev-toolkit"> | ||
<div class="title"> | ||
Tools | ||
</div> | ||
<hr /> | ||
<button | ||
v-for="action in devActions" | ||
@click="action.handler" | ||
:key="action.name" | ||
type="button"> | ||
{{ action.name }} | ||
</button> | ||
</div> | ||
</template> | ||
|
||
<script lang="ts"> | ||
import { defineComponent } from 'vue'; | ||
import { dumpNames } from './DumpNames'; | ||
export default defineComponent({ | ||
setup() { | ||
const devActions: readonly DevAction[] = [ | ||
{ | ||
name: 'Log script/category names', | ||
handler: async () => { | ||
const names = await dumpNames(); | ||
console.log(names); | ||
}, | ||
}, | ||
]; | ||
return { | ||
devActions, | ||
}; | ||
}, | ||
}); | ||
interface DevAction { | ||
readonly name: string; | ||
readonly handler: () => void | Promise<void>; | ||
} | ||
</script> | ||
|
||
<style scoped lang="scss"> | ||
@use "@/presentation/assets/styles/main" as *; | ||
.dev-toolkit { | ||
position: fixed; | ||
top: 0; | ||
right: 0; | ||
background-color: rgba($color-on-surface, 0.5); | ||
color: $color-on-primary; | ||
padding: 10px; | ||
z-index: 10000; | ||
.title { | ||
font-weight: bold; | ||
text-align: center; | ||
} | ||
button { | ||
display: block; | ||
margin-bottom: 10px; | ||
padding: 5px 10px; | ||
background-color: $color-primary; | ||
color: $color-on-primary; | ||
border: none; | ||
cursor: pointer; | ||
} | ||
} | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import { IApplication } from '@/domain/IApplication'; | ||
import { ApplicationFactory } from '@/application/ApplicationFactory'; | ||
|
||
export async function dumpNames(): Promise<string> { | ||
const application = await ApplicationFactory.Current.getApp(); | ||
const names = collectNames(application); | ||
const output = names.join('\n'); | ||
return output; | ||
} | ||
|
||
function collectNames(application: IApplication): string[] { | ||
const { collections } = application; | ||
|
||
const allNames = [ | ||
...collections.flatMap((collection) => collection.getAllCategories().map((c) => c.name)), | ||
...collections.flatMap((collection) => collection.getAllScripts().map((c) => c.name)), | ||
]; | ||
|
||
const uniqueNames = [...new Set(allNames)]; | ||
|
||
return shuffle(uniqueNames); | ||
} | ||
|
||
/* | ||
Shuffle an array of strings, returning a new array with elements in random order. | ||
Uses the Fisher-Yates (or Durstenfeld) algorithm. | ||
*/ | ||
function shuffle(array: readonly string[]): string[] { | ||
const shuffledArray = [...array]; | ||
for (let i = array.length - 1; i > 0; i--) { | ||
const j = Math.floor(Math.random() * (i + 1)); | ||
[shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]]; | ||
} | ||
return shuffledArray; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,6 +22,7 @@ export default defineComponent({ | |
}; | ||
}, | ||
}); | ||
</script> | ||
|
||
<style scoped lang="scss"> | ||
|