diff --git a/src/components/fields/Field_List.vue b/src/components/fields/Field_List.vue
index 9a37191..9c46064 100644
--- a/src/components/fields/Field_List.vue
+++ b/src/components/fields/Field_List.vue
@@ -39,7 +39,10 @@
v-for="(singleInput,index) in localInput"
:key="index"
>
-
+
+
-
-
-
-
-
-
+
-
+ >
+
+
+
+ {{scope.opt}}
+
+
-
+
+
+ {{ scope.opt.title }}
+
+
+
+ Add this category to the field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.opt}}
+
+
+
+
+
+ {{ scope.opt.title }}
+
+
+
+ Add this category to the field.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+ Remove
+
+
+
@@ -135,7 +300,7 @@
color="primary"
:outline="isDarkMode"
label="Add new"
- @click="addNewInput" />
+ @click="addNewInput()" />
@@ -200,13 +365,34 @@ export default class Field_List extends FieldBase {
get hasExtraInput () {
// @ts-ignore
this.localExtraInput = this.inputDataBluePrint?.predefinedListExtras?.extraSelectValueList
+ this.filteredLocalExtraInput = extend(true, [], this.localExtraInput)
+
return this.inputDataBluePrint?.predefinedListExtras?.extraSelectValueList
}
+ /**
+ * Determine if the input is reversed
+ */
+ get isReversed () {
+ // @ts-ignore
+ return (this.inputDataBluePrint?.predefinedListExtras?.reverse)
+ }
+
/**
* List of extra input values
*/
- localExtraInput:string[] = []
+ localExtraInput:string[] | {
+ title: string,
+ values: string[]
+ } [] = []
+
+ /**
+ * List of extra input values - filtered
+ */
+ filteredLocalExtraInput:string[] | {
+ title: string,
+ values: string[]
+ } [] = []
/**
* Label for the extra input
@@ -216,6 +402,59 @@ export default class Field_List extends FieldBase {
return (this.inputDataBluePrint?.predefinedListExtras?.affix) || ""
}
+ filterFn (val:string, update: (e: () => void) => void) {
+ if (val === "") {
+ update(() => {
+ this.filteredLocalExtraInput = this.localExtraInput
+ })
+ return
+ }
+
+ update(() => {
+ const needle = val.toLowerCase()
+
+ const returnList: string[] | {
+ title: string,
+ values: string[]
+ } [] = []
+
+ const localListCopy: [] = extend(true, [], this.localExtraInput)
+
+ localListCopy.forEach((value:string | {
+ title: string,
+ values: string[]
+ }) => {
+ // For strings
+ if (typeof value === "string" && value.toLowerCase().includes(needle)) {
+ // @ts-ignore
+ returnList.push(value)
+ }
+
+ // For lists
+ if (typeof value !== "string") {
+ // If title matches
+ if (value.title.toLowerCase().includes(needle)) {
+ // @ts-ignore
+ returnList.push(value)
+ }
+ // Try matching child values
+ else {
+ const localFilteredSubvalues = value.values.filter(subValue => {
+ return subValue.toLowerCase().includes(needle)
+ })
+ if (localFilteredSubvalues.length > 0) {
+ value.values = localFilteredSubvalues
+ // @ts-ignore
+ returnList.push(value)
+ }
+ }
+ }
+ })
+
+ this.filteredLocalExtraInput = returnList
+ })
+ }
+
/**
* Remove an existing row from the input list
*/
@@ -227,13 +466,15 @@ export default class Field_List extends FieldBase {
/**
* Adds new row to the input list
*/
- async addNewInput () {
+ async addNewInput (affixValue = "") {
this.localInput.push({
value: "",
- affix: ""
+ affix: affixValue
})
- const targetRefStringNamer = `.listField_input${this.localInput.length - 1}_${this.inputDataBluePrint.id}`
+ const targetRefStringNamer = (!this.isReversed)
+ ? `.listField_input${this.localInput.length - 1}_${this.inputDataBluePrint.id}`
+ : `.listField_prefix${this.localInput.length - 1}_${this.inputDataBluePrint.id}`
await this.$nextTick()
@@ -288,6 +529,23 @@ export default class Field_List extends FieldBase {
return returnValue
}
+
+ async assignOptionGroupValues (categoryTitle: string, callerIndex: number) {
+ const targetCategory:{
+ title: string,
+ values: string[]
+ } = this.localExtraInput
+ // @ts-ignore
+ .find((e: {title: string}) => e.title === categoryTitle)
+
+ for (const value of targetCategory.values) {
+ await this.addNewInput(value)
+ }
+
+ if (this.localInput[callerIndex].value === "" && this.localInput[callerIndex].affix === "") {
+ this.removeFromList(callerIndex)
+ }
+ }
}
@@ -310,4 +568,8 @@ export default class Field_List extends FieldBase {
}
}
+.list_specialItem {
+ display: flex;
+ align-items: center;
+}
diff --git a/src/components/fields/Field_MultiRelationship.vue b/src/components/fields/Field_MultiRelationship.vue
index 7ab0f32..3862ca9 100644
--- a/src/components/fields/Field_MultiRelationship.vue
+++ b/src/components/fields/Field_MultiRelationship.vue
@@ -418,6 +418,7 @@
label="Note"
v-model="singleNote.value"
dense
+ autogrow
@keydown="processInput()"
:outlined="!isDarkMode"
:filled="isDarkMode"
diff --git a/src/components/fields/Field_SingleRelationship.vue b/src/components/fields/Field_SingleRelationship.vue
index 878ff03..999a2da 100644
--- a/src/components/fields/Field_SingleRelationship.vue
+++ b/src/components/fields/Field_SingleRelationship.vue
@@ -369,6 +369,7 @@
label="Note"
v-model="inputNote.value"
dense
+ autogrow
@keydown="processInput"
:outlined="!isDarkMode"
:filled="isDarkMode"
diff --git a/src/css/app.scss b/src/css/app.scss
index 636f2b8..9c5000b 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -435,6 +435,7 @@ body .q-tooltip {
color: $dark;
font-size: 13px;
font-weight: 600;
+ z-index: 999999999 !important;
}
.q-markdown {
diff --git a/src/interfaces/I_Blueprint.ts b/src/interfaces/I_Blueprint.ts
index 8ee05c9..9ad3274 100644
--- a/src/interfaces/I_Blueprint.ts
+++ b/src/interfaces/I_Blueprint.ts
@@ -23,8 +23,12 @@ export interface I_ExtraFields {
"tags"
predefinedListExtras?: {
+ reverse?: boolean
affix?: string
- extraSelectValueList?: string[]
+ extraSelectValueList?: (string | {
+ title: string,
+ values: string[]
+ }) []
}
predefinedSelectValues?: string[]
relationshipSettings?: {
diff --git a/src/scripts/databaseManager/blueprints/characters.ts b/src/scripts/databaseManager/blueprints/characters.ts
index 45ba5fb..676afc2 100644
--- a/src/scripts/databaseManager/blueprints/characters.ts
+++ b/src/scripts/databaseManager/blueprints/characters.ts
@@ -194,6 +194,425 @@ export const charactersBlueprint: I_Blueprint = {
icon: "mdi-weight",
sizing: 3
},
+ {
+ id: "statsList",
+ name: "Stats/Attributes",
+ type: "list",
+ icon: "mdi-sword-cross",
+ sizing: 12,
+ predefinedListExtras: {
+ reverse: true,
+ affix: "Stat/Attribute",
+ extraSelectValueList: [
+ {
+ title: "Dungeons & Dragons (5th edition)",
+ values: [
+ "Strength",
+ "Dexterity",
+ "Constitution",
+ "Intelligence",
+ "Wisdom",
+ "Charisma"
+ ]
+ },
+ {
+ title: "Dungeons & Dragons - Expanded (5th edition)",
+ values: [
+ "Hit points",
+ "Maximum hit points",
+ "Temporary points",
+ "Armor class",
+ "Innitiative",
+ "Piety",
+ "Renown",
+ "Proficiency bonus"
+ ]
+ },
+ {
+ title: "Dungeons & Dragons - Travel speeds (5th edition)",
+ values: [
+ "Movement speed",
+ "Fly speed",
+ "Swim speed",
+ "Climb speed"
+ ]
+ },
+ {
+ title: "Dungeons & Dragons - Saving throws (5th edition)",
+ values: [
+ "Strength (saving)",
+ "Dexterity (saving)",
+ "Constitution (saving)",
+ "Intelligence (saving)",
+ "Wisdom (saving)",
+ "Charisma (saving)"
+ ]
+ },
+ {
+ title: "Mass Effect (D20, 5e)",
+ values: [
+ "Strenght",
+ "Dexterity",
+ "Constitution",
+ "Intelligence ",
+ "Wisdom",
+ "Charisma",
+ "Defense (total)",
+ "Defense (size) ",
+ "Defense (cover) ",
+ "Shield/Shields ",
+ "Plating",
+ "Reduction ",
+ "Size",
+ "Age ",
+ "Level/Class Level ",
+ "Paragon ",
+ "Renegade ",
+ "Power",
+ "Biotics",
+ "Biotic Points ",
+ "Tech Points ",
+ "Attack (bab/base Attack) ",
+ "Rank ",
+ "Ranks ",
+ "Modifier",
+ "Mod ",
+ "Ability Modifier",
+ "Misc Modifier ",
+ "Bonus ",
+ "Total Bonus",
+ "Attack",
+ "Attack Bonus ",
+ "Action ",
+ "Range",
+ "Ammunition",
+ "Damage ",
+ "Critical ",
+ "Recoil",
+ "Armor ",
+ "Armor Special Qualities ",
+ "Head ",
+ "Shoulders",
+ "Arms",
+ "Chest ",
+ "Legs ",
+ "Others ",
+ "Cost",
+ "Thermal Clips ",
+ "Heat",
+ "Medi-Gel",
+ "Grenades",
+ "Repair Kits",
+ "Dc",
+ "Maintenance ",
+ "Cooldown",
+ "Activation",
+ "Load/Carry Capaccity (light) ",
+ "Load/Carry Capaccity (medium) ",
+ "Load/Carry Capaccity (heavy) ",
+ "Amount ",
+ "Credits"
+ ]
+ },
+ {
+ title: "Vampire: Masquerade (5th edition, World of Darkness)",
+ values: [
+ "Strength",
+ "Dexterity",
+ "Stamina",
+ "Charisma",
+ "Manipulation",
+ "Composure",
+ "Intelligence",
+ "Wits",
+ "Resolve",
+ "Health",
+ "Willpower",
+ "Humanity"
+ ]
+ },
+ {
+ title: "Paranoia (Red Clearance)",
+ values: [
+ "Violence",
+ "Brains",
+ "Chutzpah",
+ "Mechanics",
+ "Athletics",
+ "Guns",
+ "Melee",
+ "Throw",
+ "Science",
+ "Psychology",
+ "Bureaucracy",
+ "Alpha Complex",
+ "Bluff",
+ "Charm",
+ "Intimdate",
+ "Stealth",
+ "Operate",
+ "Engineer",
+ "Program",
+ "Demolitions"
+ ]
+ },
+ {
+ title: "Shadowrun (6th edition)",
+ values: [
+ "Body",
+ "Agility",
+ "Reaction",
+ "Willpower",
+ "Intuition",
+ "Edge",
+ "Essence",
+ "Magic/Resonance",
+ "Initiative (matrix)",
+ "Initiative (astral)",
+ "Composure",
+ "Judge",
+ "Intentions",
+ "Memory",
+ "Lift/Carry",
+ "Movement",
+ "Dam",
+ "Damage",
+ "Acc",
+ "Accuracy",
+ "Ap",
+ "Action",
+ "Points",
+ "Rc",
+ "Ammo",
+ "Rating",
+ "Rtg",
+ "Nuyen",
+ "Funds",
+ "Currency"
+ ]
+ },
+ {
+ title: "Fading Suns",
+ values: [
+ "Body",
+ "Strength",
+ "Dexterity",
+ "Endurance",
+ "Mind",
+ "Wits",
+ "Perception",
+ "Tech",
+ "Spirit",
+ "Vitality",
+ "Wyrd",
+ "Charm",
+ "Dodge",
+ "Fight",
+ "Impress",
+ "Melee",
+ "Observe",
+ "Shoot",
+ "Sneak",
+ "Vigor"
+ ]
+ },
+ {
+ title: "Cyberpunk (RED)",
+ values: [
+ "Intelligence",
+ "Willpower",
+ "Cool",
+ "Empathy",
+ "Technique",
+ "Reflexes",
+ "Luck",
+ "Body",
+ "Dexterity",
+ "Movement"
+ ]
+ },
+ {
+ title: "Mutant: Year Zero",
+ values: [
+ "Strength",
+ "Agility",
+ "Wits",
+ "Empathy",
+ "Damage",
+ "Fatigue",
+ "Confusion",
+ "Doubt"
+ ]
+ },
+ {
+ title: "GURPS (3rd & 4th edition)",
+ values: [
+ "Strength",
+ "Agility",
+ "Wits",
+ "Empathy",
+ "Damage",
+ "Fatigue",
+ "Confusion",
+ "Doubt"
+ ]
+ },
+ {
+ title: "7th Sea (2nd edition)",
+ values: [
+ "Brawn",
+ "Finesse",
+ "Resolve",
+ "Wits",
+ "Panache"
+ ]
+ },
+ {
+ title: "7th Sea - Villain (2nd edition)",
+ values: [
+ "Strength",
+ "Influence"
+ ]
+ },
+ {
+ title: "Apocalypse World (2nd edition, Powered by the Apocalypse)",
+ values: [
+ "Cool",
+ "Hard",
+ "Hot",
+ "Sharp",
+ "Weird",
+ "HX"
+ ]
+ },
+ {
+ title: "Dresden Files RPG",
+ values: [
+ "Alertness",
+ "Athletics",
+ "Burglary",
+ "Contacts",
+ "Conviction",
+ "Craftsmanship",
+ "Deceit",
+ "Discipline",
+ "Driving",
+ "Empathy",
+ "Endurance",
+ "Fists",
+ "Guns",
+ "Intimidation",
+ "Investigation",
+ "Lore",
+ "Might",
+ "Performance",
+ "Presence",
+ "Rapport",
+ "Resources",
+ "Scholarship",
+ "Stealth",
+ "Survival",
+ "Weapons"
+ ]
+ },
+ {
+ title: "Traveller (2nd edition)",
+ values: [
+ "Strength",
+ "Dexterity",
+ "Endurace",
+ "Intelligence",
+ "Education",
+ "Social",
+ "Standing"
+ ]
+ },
+ {
+ title: "Cypher System",
+ values: [
+ "Intellect",
+ "Might",
+ "Speed"
+ ]
+ },
+ {
+ title: "Blades in the Dark",
+ values: [
+ "Attune",
+ "Command",
+ "Consort",
+ "Finesse",
+ "Hunt",
+ "Prowl",
+ "Skirmish",
+ "Study",
+ "Survey",
+ "Sway",
+ "Tinker",
+ "Wreck",
+ "Insight",
+ "Prowess",
+ "Tesolve"
+ ]
+ },
+ "Absorption",
+ "Alertness",
+ "Attack",
+ "Avoidance",
+ "Awareness",
+ "Block",
+ "Brawn",
+ "Cautiousness",
+ "Chance",
+ "Damage",
+ "Defense",
+ "Deftness",
+ "Dodge",
+ "Ego",
+ "Endurance",
+ "Energy",
+ "Evasion",
+ "Fate",
+ "Fatigue",
+ "Finesse",
+ "Fortitude",
+ "Honor",
+ "Hit Points (HP)",
+ "Immunity",
+ "Level",
+ "Magic",
+ "Mana",
+ "Mana Points (MP)",
+ "Might",
+ "Mind",
+ "Morale",
+ "Parry",
+ "Personality",
+ "Precision",
+ "Presence",
+ "Psyche",
+ "Quickness",
+ "Rank",
+ "Rate",
+ "Recovery",
+ "Reduction",
+ "Reflexes",
+ "Resistence",
+ "Sanity",
+ "Sense",
+ "Soul",
+ "Speed",
+ "Spellpower",
+ "Spirit",
+ "Stamina",
+ "Swiftness",
+ "Tier",
+ "Vitality",
+ "Willpower",
+ "Wits"
+ ]
+ }
+ },
{
id: "strength",
name: "Strength",
@@ -538,6 +957,7 @@ export const charactersBlueprint: I_Blueprint = {
"Erratic",
"Escapist",
"Esthetic",
+ "Evil",
"Excitable",
"Exciting",
"Expedient",
diff --git a/suggestionList.md b/suggestionList.md
index 02d950b..526ad9f 100644
--- a/suggestionList.md
+++ b/suggestionList.md
@@ -1,5 +1,9 @@
## THE GM BATCH
+- Add more stat systems
+- Add stats to items (and anywhere else they might be needed)
+- Add automatic-stats fixer to the repair tool from older versions
+
- Add hover/on-demand document preview to relationships
- Export for MD/PDF/ODT/DOCX
@@ -8,18 +12,13 @@
## THE GM BATCH END
-- Add reverse list field option (dropdown first, value in bracket)
-- Rework stats (via reverse list)
-- Add option for project graph to filter out categories or show them separately
- Add HTML webcolor cheatsheet in floating window (look for JSON of them somewhere?)
- Word count for editor fields
- Try to get field titles to show in full-screen edit of text editor fields
- List of last saved documents on project overview
-- Consider adding some kind of "Follower name" to different group types
-- Consider reworking the save document mechanic (save doesnt close, open/exit edit mode instead)
- Add color support (text and background) to view and edit mode of document display
-- Add a toggle option for it (default off)
+ - Add a toggle option for it (default off)
- Mass tag rename/deletion (done via document saving!)
- Context menu for tags
@@ -27,22 +26,17 @@
- Add new document type under tag
- Delete tag (unsets for all docs)
- Rename tag (resaves all docs with new tag)
-
-- Add "Predecessors", "Successors", "Date of start", "Date of end" and "How long it lasted" fields to locations and all other groups
-
-- Add advanced search capabilities to the hierarchical tree
-
- "Save all" keybind and "Save all and exit" option on the exiting
-- Add "Open all search matches" button in the Quick-search that opens a new page with a list of items
-- Allow showing of document types under tags
+- Consider adding color support for text shadow of individual documents
- Add description tabs
+- Add option for project graph to filter out categories or show them separately
+
+- Add "Predecessors", "Successors", "Date of start", "Date of end" and "How long it lasted" fields to locations and all other groups
- Add category for materials/resources OR adapt Items category
- Add category for diseases/curses/etc
- Add category for classes/jobs
-- Add support for individual document order hiding inside the hierarchical tree for each document
-- Consider adding color support for text shadow of individual documents
-- Consider adding coloring to icons of documents separately
+- Add advanced search capabilities to the hierarchical tree
### Project settings