intelligent-system-design-language 0.3.21 → 0.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/langium-language-designer.md +38 -38
- package/.claude/agents/typescript-vscode-expert.md +29 -29
- package/.claude/agents/ui-ux-designer.md +36 -36
- package/.claude/settings.local.json +33 -33
- package/.idea/inspectionProfiles/Project_Default.xml +6 -6
- package/.idea/isdl.iml +13 -13
- package/.idea/modules.xml +8 -8
- package/.idea/vcs.xml +6 -6
- package/.idea/watcherTasks.xml +3 -3
- package/.vscodeignore +18 -18
- package/LICENSE +673 -673
- package/README.md +86 -86
- package/bin/cli.js +4 -4
- package/bin/lsp.js +8 -8
- package/out/_backgrounds.scss +91 -91
- package/out/_handlebars.scss +497 -497
- package/out/_isdlStyles.scss +1444 -1381
- package/out/_vuetifyOverrides.scss +425 -425
- package/out/_vuetifyStyles.scss +31957 -31957
- package/out/cli/components/_backgrounds.scss +91 -91
- package/out/cli/components/_handlebars.scss +497 -497
- package/out/cli/components/_isdlStyles.scss +1444 -1381
- package/out/cli/components/_vuetifyOverrides.scss +425 -425
- package/out/cli/components/_vuetifyStyles.scss +31957 -31957
- package/out/cli/components/active-effect-sheet-generator.js +453 -453
- package/out/cli/components/chat-card-generator.js +654 -651
- package/out/cli/components/chat-card-generator.js.map +1 -1
- package/out/cli/components/css-generator.js +4 -4
- package/out/cli/components/damage-roll-generator.js +160 -160
- package/out/cli/components/datamodel-generator.js +264 -257
- package/out/cli/components/datamodel-generator.js.map +1 -1
- package/out/cli/components/derived-data-generator.js +923 -923
- package/out/cli/components/hotbar-drop-hook-generator.js +82 -82
- package/out/cli/components/init-hook-generator.js +495 -495
- package/out/cli/components/language-generator.js +1 -1
- package/out/cli/components/language-generator.js.map +1 -1
- package/out/cli/components/measured-template-preview.js +221 -221
- package/out/cli/components/method-generator.js +979 -887
- package/out/cli/components/method-generator.js.map +1 -1
- package/out/cli/components/ready-hook-generator.js +404 -404
- package/out/cli/components/token-generator.js +116 -116
- package/out/cli/components/vue/base-components/vue-attribute.js +138 -138
- package/out/cli/components/vue/base-components/vue-boolean.js +64 -64
- package/out/cli/components/vue/base-components/vue-calculator.js +93 -93
- package/out/cli/components/vue/base-components/vue-damage-application.js +356 -356
- package/out/cli/components/vue/base-components/vue-damage-bonuses.js +165 -165
- package/out/cli/components/vue/base-components/vue-damage-resistances.js +196 -196
- package/out/cli/components/vue/base-components/vue-damage-track.js +121 -121
- package/out/cli/components/vue/base-components/vue-date-time.js +42 -42
- package/out/cli/components/vue/base-components/vue-dice.js +98 -98
- package/out/cli/components/vue/base-components/vue-die.js +73 -73
- package/out/cli/components/vue/base-components/vue-document-choice.js +149 -149
- package/out/cli/components/vue/base-components/vue-document-choices.js +179 -179
- package/out/cli/components/vue/base-components/vue-document-link.js +60 -60
- package/out/cli/components/vue/base-components/vue-extended-choice.js +88 -88
- package/out/cli/components/vue/base-components/vue-inventory.js +519 -519
- package/out/cli/components/vue/base-components/vue-macro-choice.js +138 -138
- package/out/cli/components/vue/base-components/vue-measured-template.js +530 -530
- package/out/cli/components/vue/base-components/vue-money.js +483 -483
- package/out/cli/components/vue/base-components/vue-number.js +174 -174
- package/out/cli/components/vue/base-components/vue-paperdoll.js +43 -43
- package/out/cli/components/vue/base-components/vue-parent-property-reference.js +76 -76
- package/out/cli/components/vue/base-components/vue-prosemirror.js +18 -18
- package/out/cli/components/vue/base-components/vue-resource.js +136 -136
- package/out/cli/components/vue/base-components/vue-roll-visualizer.js +286 -109
- package/out/cli/components/vue/base-components/vue-roll-visualizer.js.map +1 -1
- package/out/cli/components/vue/base-components/vue-self-property-reference.js +62 -62
- package/out/cli/components/vue/base-components/vue-string-choice.js +98 -98
- package/out/cli/components/vue/base-components/vue-string-choices.js +203 -203
- package/out/cli/components/vue/base-components/vue-string.js +60 -60
- package/out/cli/components/vue/base-components/vue-text-field.js +53 -53
- package/out/cli/components/vue/base-components/vue-tracker.js +431 -431
- package/out/cli/components/vue/vue-action-component-generator.js +64 -64
- package/out/cli/components/vue/vue-active-effect-sheet-generator.js +856 -856
- package/out/cli/components/vue/vue-datatable-sheet-class-generator.js +292 -292
- package/out/cli/components/vue/vue-datatable2-component-generator.js +824 -824
- package/out/cli/components/vue/vue-document-creation-app.js +121 -121
- package/out/cli/components/vue/vue-document-creation-sheet.js +94 -94
- package/out/cli/components/vue/vue-generator.js +40 -40
- package/out/cli/components/vue/vue-mixin.js +296 -296
- package/out/cli/components/vue/vue-pinned-datatable-component-generator.js +260 -260
- package/out/cli/components/vue/vue-prompt-generator.js +91 -76
- package/out/cli/components/vue/vue-prompt-generator.js.map +1 -1
- package/out/cli/components/vue/vue-prompt-sheet-class-generator.js +317 -317
- package/out/cli/components/vue/vue-sheet-application-generator.js +1177 -1167
- package/out/cli/components/vue/vue-sheet-application-generator.js.map +1 -1
- package/out/cli/components/vue/vue-sheet-class-generator.js +510 -510
- package/out/cli/generator.js +438 -433
- package/out/cli/generator.js.map +1 -1
- package/out/extension/github/githubAuthProvider.js +71 -29
- package/out/extension/github/githubAuthProvider.js.map +1 -1
- package/out/extension/github/githubGistManager.js +4 -3
- package/out/extension/github/githubGistManager.js.map +1 -1
- package/out/extension/github/githubManager.js +40 -38
- package/out/extension/github/githubManager.js.map +1 -1
- package/out/extension/github/githubQuickActions.js +120 -120
- package/out/extension/github/system-workflow.yml +47 -47
- package/out/extension/main.cjs +909 -532
- package/out/extension/main.cjs.map +3 -3
- package/out/extension/package.json +419 -419
- package/out/language/generated/ast.js +51 -2
- package/out/language/generated/ast.js.map +1 -1
- package/out/language/generated/grammar.js +14240 -13991
- package/out/language/generated/grammar.js.map +1 -1
- package/out/language/intelligent-system-design-language-validator.js +32 -2
- package/out/language/intelligent-system-design-language-validator.js.map +1 -1
- package/out/language/isdl-scope-provider.js +14 -1
- package/out/language/isdl-scope-provider.js.map +1 -1
- package/out/language/main.cjs +913 -569
- package/out/language/main.cjs.map +3 -3
- package/out/package.json +419 -419
- package/out/progressbar.min.js +6 -6
- package/out/styles.scss +762 -747
- package/out/test/validating/diagnostics.test.js +40 -0
- package/out/test/validating/diagnostics.test.js.map +1 -1
- package/package.json +419 -419
|
@@ -49,38 +49,38 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
49
49
|
}
|
|
50
50
|
return Array.from(damageTypes).sort();
|
|
51
51
|
}
|
|
52
|
-
const fileNode = expandToNode `
|
|
53
|
-
${generateVueComponentScript(entry, id, destination)}
|
|
54
|
-
${generateVueComponentTemplate(id)}
|
|
52
|
+
const fileNode = expandToNode `
|
|
53
|
+
${generateVueComponentScript(entry, id, destination)}
|
|
54
|
+
${generateVueComponentTemplate(id)}
|
|
55
55
|
`.appendNewLineIfNotEmpty();
|
|
56
56
|
fs.writeFileSync(generatedFilePath, toString(fileNode));
|
|
57
57
|
function generateVueComponentScript(entry, id, destination) {
|
|
58
|
-
return expandToNode `
|
|
59
|
-
<script setup>
|
|
60
|
-
import { ref, inject, onMounted, computed } from 'vue';
|
|
61
|
-
|
|
62
|
-
const document = inject('rawDocument');
|
|
63
|
-
const props = defineProps(['context']);
|
|
64
|
-
console.log("Vue AE context", props.context);
|
|
65
|
-
|
|
66
|
-
// Colors
|
|
67
|
-
const primaryColor = ref('#1565c0');
|
|
68
|
-
const secondaryColor = ref('#4db6ac');
|
|
69
|
-
const tertiaryColor = ref('#ffb74d');
|
|
70
|
-
|
|
71
|
-
const drawer = ref(false);
|
|
72
|
-
const page = ref('details');
|
|
73
|
-
const tab = ref('description');
|
|
74
|
-
|
|
75
|
-
// Available fields for each document type
|
|
76
|
-
const availableFields = ref({});
|
|
77
|
-
const selectedFields = ref({});
|
|
78
|
-
|
|
79
|
-
// Create field name mapping for each document
|
|
80
|
-
const createFieldMapping = () => {
|
|
81
|
-
const mapping = {};
|
|
82
|
-
const damageTypes = [${collectDamageTypes(entry).map(type => `'${type}'`).join(', ')}];
|
|
83
|
-
|
|
58
|
+
return expandToNode `
|
|
59
|
+
<script setup>
|
|
60
|
+
import { ref, inject, onMounted, computed } from 'vue';
|
|
61
|
+
|
|
62
|
+
const document = inject('rawDocument');
|
|
63
|
+
const props = defineProps(['context']);
|
|
64
|
+
console.log("Vue AE context", props.context);
|
|
65
|
+
|
|
66
|
+
// Colors
|
|
67
|
+
const primaryColor = ref('#1565c0');
|
|
68
|
+
const secondaryColor = ref('#4db6ac');
|
|
69
|
+
const tertiaryColor = ref('#ffb74d');
|
|
70
|
+
|
|
71
|
+
const drawer = ref(false);
|
|
72
|
+
const page = ref('details');
|
|
73
|
+
const tab = ref('description');
|
|
74
|
+
|
|
75
|
+
// Available fields for each document type
|
|
76
|
+
const availableFields = ref({});
|
|
77
|
+
const selectedFields = ref({});
|
|
78
|
+
|
|
79
|
+
// Create field name mapping for each document
|
|
80
|
+
const createFieldMapping = () => {
|
|
81
|
+
const mapping = {};
|
|
82
|
+
const damageTypes = [${collectDamageTypes(entry).map(type => `'${type}'`).join(', ')}];
|
|
83
|
+
|
|
84
84
|
${joinToNode(documents, document => {
|
|
85
85
|
const fields = getAllOfType(document.body, isProperty, false).filter(property => !isInitiativeProperty(property) &&
|
|
86
86
|
!isStatusProperty(property) &&
|
|
@@ -89,10 +89,10 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
89
89
|
!isDocumentFields(property) &&
|
|
90
90
|
!isHtmlExp(property) &&
|
|
91
91
|
property.modifier !== "locked");
|
|
92
|
-
return expandToNode `
|
|
93
|
-
mapping['${document.name}'] = {
|
|
94
|
-
${joinToNode(fields, field => `'${field.name.toLowerCase()}': '${field.name}'`, { separator: ',\n ' })}${fields.length > 0 ? ',' : ''}
|
|
95
|
-
// Auto-generated damage type fields
|
|
92
|
+
return expandToNode `
|
|
93
|
+
mapping['${document.name}'] = {
|
|
94
|
+
${joinToNode(fields, field => `'${field.name.toLowerCase()}': '${field.name}'`, { separator: ',\n ' })}${fields.length > 0 ? ',' : ''}
|
|
95
|
+
// Auto-generated damage type fields
|
|
96
96
|
${collectDamageTypes(entry).map((damageType) => {
|
|
97
97
|
const safeTypeName = damageType.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
98
98
|
return [
|
|
@@ -100,221 +100,221 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
100
100
|
`'${safeTypeName}damageresistanceflat': '${damageType} Damage Resistance (Flat)'`,
|
|
101
101
|
`'${safeTypeName}damageresistancepercent': '${damageType} Damage Resistance (%)'`
|
|
102
102
|
].join(',\n ');
|
|
103
|
-
}).join(',\n ')}
|
|
104
|
-
};
|
|
103
|
+
}).join(',\n ')}
|
|
104
|
+
};
|
|
105
105
|
`;
|
|
106
|
-
}, { appendNewLineIfNotEmpty: true })}
|
|
107
|
-
return mapping;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// Helper method to get change value from the changes array
|
|
111
|
-
const getChangeValue = (key) => {
|
|
112
|
-
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
113
|
-
return change?.value || '';
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
// Helper method to get numeric change value from the changes array
|
|
117
|
-
const getChangeNumberValue = (key) => {
|
|
118
|
-
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
119
|
-
if (!change?.value) return 0;
|
|
120
|
-
const num = Number(change.value);
|
|
121
|
-
return isNaN(num) ? 0 : num;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
// Helper method to get change type from the changes array
|
|
125
|
-
const getChangeMode = (key) => {
|
|
126
|
-
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
127
|
-
return change?.type || 'add';
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
// Initialize selectedFields from existing changes
|
|
131
|
-
const initializeSelectedFields = () => {
|
|
132
|
-
if (!props.context?.document?.changes) return;
|
|
133
|
-
|
|
134
|
-
const fieldMapping = createFieldMapping();
|
|
135
|
-
|
|
136
|
-
console.log(fieldMapping, props.context.document.changes);
|
|
137
|
-
for (const change of props.context.document.changes) {
|
|
138
|
-
// Parse the key to extract document name and field name
|
|
139
|
-
// Format: "hero.system.availableskilllevels" or "hero.system.resourcefield.value"
|
|
140
|
-
const parts = change.key.split('.');
|
|
141
|
-
if (parts.length >= 3) {
|
|
142
|
-
const documentName = parts[0];
|
|
143
|
-
const fieldNameLower = parts[2];
|
|
144
|
-
|
|
145
|
-
// Convert document name to proper case (e.g., "hero" -> "Hero")
|
|
146
|
-
const docName = documentName.charAt(0).toUpperCase() + documentName.slice(1);
|
|
147
|
-
|
|
148
|
-
// Look up the proper field name from our mapping
|
|
149
|
-
const properFieldName = fieldMapping[docName]?.[fieldNameLower];
|
|
150
|
-
console.log(properFieldName);
|
|
151
|
-
|
|
152
|
-
if (properFieldName) {
|
|
153
|
-
if (!selectedFields.value[docName]) {
|
|
154
|
-
selectedFields.value[docName] = [];
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (!selectedFields.value[docName].includes(properFieldName)) {
|
|
158
|
-
selectedFields.value[docName].push(properFieldName);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
// Generate a summary of current changes
|
|
166
|
-
const changesSummary = computed(() => {
|
|
167
|
-
if (!props.context?.document?.changes || props.context.document.changes.length === 0) {
|
|
168
|
-
return 'No changes configured';
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const changes = props.context.document.changes.filter(change => {
|
|
172
|
-
// Skip zero values for numbers
|
|
173
|
-
const numValue = Number(change.value);
|
|
174
|
-
return !((!isNaN(numValue) && numValue === 0) || change.value === '' || change.value === null);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
if (changes.length === 0) {
|
|
178
|
-
return 'No changes configured';
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// Group changes by document type
|
|
182
|
-
const groupedChanges = {};
|
|
183
|
-
changes.forEach(change => {
|
|
184
|
-
const parts = change.key.split('.');
|
|
185
|
-
if (parts.length >= 3) {
|
|
186
|
-
const documentName = parts[0].charAt(0).toUpperCase() + parts[0].slice(1); // Capitalize
|
|
187
|
-
const fieldPath = parts.slice(2).join('.');
|
|
188
|
-
|
|
189
|
-
if (!groupedChanges[documentName]) {
|
|
190
|
-
groupedChanges[documentName] = [];
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
console.log(change.key, fieldPath, parts);
|
|
194
|
-
|
|
195
|
-
// Convert field names to human readable
|
|
196
|
-
let step1 = fieldPath.replaceAll('.', ' ');
|
|
197
|
-
let step2 = step1.replace(/([a-z])([A-Z])/g, '$1 $2');
|
|
198
|
-
let step3 = step2.replace(/\b\w/g, l => l.toUpperCase());
|
|
199
|
-
//console.log("Debug steps:", fieldPath, "->", step1, "->", step2, "->", step3);
|
|
200
|
-
|
|
201
|
-
const humanFieldName = step3;
|
|
202
|
-
|
|
203
|
-
// Format the mode symbol
|
|
204
|
-
const modeSymbol = change.type === 'multiply' ? ' × ' :
|
|
205
|
-
change.type === 'add' ? ' + ' :
|
|
206
|
-
change.type === 'downgrade' ? ' ↓ ' :
|
|
207
|
-
change.type === 'upgrade' ? ' ↑ ' :
|
|
208
|
-
change.type === 'custom' ? ' (Once) + ' : ' ';
|
|
209
|
-
|
|
210
|
-
//console.log("Human Field Name:", humanFieldName, "Mode Symbol:", modeSymbol);
|
|
211
|
-
groupedChanges[documentName].push(humanFieldName + modeSymbol + change.value);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
// Format as "Document: change1, change2"
|
|
216
|
-
const documentSummaries = Object.entries(groupedChanges).map(([docName, changes]) => {
|
|
217
|
-
return docName + ': ' + changes.join(', ');
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
return documentSummaries.join(' | ');
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
// Initialize on component mount
|
|
224
|
-
onMounted(() => {
|
|
225
|
-
initializeSelectedFields();
|
|
226
|
-
});
|
|
227
|
-
</script>
|
|
106
|
+
}, { appendNewLineIfNotEmpty: true })}
|
|
107
|
+
return mapping;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// Helper method to get change value from the changes array
|
|
111
|
+
const getChangeValue = (key) => {
|
|
112
|
+
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
113
|
+
return change?.value || '';
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
// Helper method to get numeric change value from the changes array
|
|
117
|
+
const getChangeNumberValue = (key) => {
|
|
118
|
+
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
119
|
+
if (!change?.value) return 0;
|
|
120
|
+
const num = Number(change.value);
|
|
121
|
+
return isNaN(num) ? 0 : num;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// Helper method to get change type from the changes array
|
|
125
|
+
const getChangeMode = (key) => {
|
|
126
|
+
const change = props.context?.document?.changes?.find(x => x.key === key);
|
|
127
|
+
return change?.type || 'add';
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// Initialize selectedFields from existing changes
|
|
131
|
+
const initializeSelectedFields = () => {
|
|
132
|
+
if (!props.context?.document?.changes) return;
|
|
133
|
+
|
|
134
|
+
const fieldMapping = createFieldMapping();
|
|
135
|
+
|
|
136
|
+
console.log(fieldMapping, props.context.document.changes);
|
|
137
|
+
for (const change of props.context.document.changes) {
|
|
138
|
+
// Parse the key to extract document name and field name
|
|
139
|
+
// Format: "hero.system.availableskilllevels" or "hero.system.resourcefield.value"
|
|
140
|
+
const parts = change.key.split('.');
|
|
141
|
+
if (parts.length >= 3) {
|
|
142
|
+
const documentName = parts[0];
|
|
143
|
+
const fieldNameLower = parts[2];
|
|
144
|
+
|
|
145
|
+
// Convert document name to proper case (e.g., "hero" -> "Hero")
|
|
146
|
+
const docName = documentName.charAt(0).toUpperCase() + documentName.slice(1);
|
|
147
|
+
|
|
148
|
+
// Look up the proper field name from our mapping
|
|
149
|
+
const properFieldName = fieldMapping[docName]?.[fieldNameLower];
|
|
150
|
+
console.log(properFieldName);
|
|
151
|
+
|
|
152
|
+
if (properFieldName) {
|
|
153
|
+
if (!selectedFields.value[docName]) {
|
|
154
|
+
selectedFields.value[docName] = [];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (!selectedFields.value[docName].includes(properFieldName)) {
|
|
158
|
+
selectedFields.value[docName].push(properFieldName);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// Generate a summary of current changes
|
|
166
|
+
const changesSummary = computed(() => {
|
|
167
|
+
if (!props.context?.document?.changes || props.context.document.changes.length === 0) {
|
|
168
|
+
return 'No changes configured';
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const changes = props.context.document.changes.filter(change => {
|
|
172
|
+
// Skip zero values for numbers
|
|
173
|
+
const numValue = Number(change.value);
|
|
174
|
+
return !((!isNaN(numValue) && numValue === 0) || change.value === '' || change.value === null);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
if (changes.length === 0) {
|
|
178
|
+
return 'No changes configured';
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Group changes by document type
|
|
182
|
+
const groupedChanges = {};
|
|
183
|
+
changes.forEach(change => {
|
|
184
|
+
const parts = change.key.split('.');
|
|
185
|
+
if (parts.length >= 3) {
|
|
186
|
+
const documentName = parts[0].charAt(0).toUpperCase() + parts[0].slice(1); // Capitalize
|
|
187
|
+
const fieldPath = parts.slice(2).join('.');
|
|
188
|
+
|
|
189
|
+
if (!groupedChanges[documentName]) {
|
|
190
|
+
groupedChanges[documentName] = [];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
console.log(change.key, fieldPath, parts);
|
|
194
|
+
|
|
195
|
+
// Convert field names to human readable
|
|
196
|
+
let step1 = fieldPath.replaceAll('.', ' ');
|
|
197
|
+
let step2 = step1.replace(/([a-z])([A-Z])/g, '$1 $2');
|
|
198
|
+
let step3 = step2.replace(/\b\w/g, l => l.toUpperCase());
|
|
199
|
+
//console.log("Debug steps:", fieldPath, "->", step1, "->", step2, "->", step3);
|
|
200
|
+
|
|
201
|
+
const humanFieldName = step3;
|
|
202
|
+
|
|
203
|
+
// Format the mode symbol
|
|
204
|
+
const modeSymbol = change.type === 'multiply' ? ' × ' :
|
|
205
|
+
change.type === 'add' ? ' + ' :
|
|
206
|
+
change.type === 'downgrade' ? ' ↓ ' :
|
|
207
|
+
change.type === 'upgrade' ? ' ↑ ' :
|
|
208
|
+
change.type === 'custom' ? ' (Once) + ' : ' ';
|
|
209
|
+
|
|
210
|
+
//console.log("Human Field Name:", humanFieldName, "Mode Symbol:", modeSymbol);
|
|
211
|
+
groupedChanges[documentName].push(humanFieldName + modeSymbol + change.value);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Format as "Document: change1, change2"
|
|
216
|
+
const documentSummaries = Object.entries(groupedChanges).map(([docName, changes]) => {
|
|
217
|
+
return docName + ': ' + changes.join(', ');
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
return documentSummaries.join(' | ');
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Initialize on component mount
|
|
224
|
+
onMounted(() => {
|
|
225
|
+
initializeSelectedFields();
|
|
226
|
+
});
|
|
227
|
+
</script>
|
|
228
228
|
`;
|
|
229
229
|
}
|
|
230
230
|
function generateVueComponentTemplate(id) {
|
|
231
|
-
return expandToNode `
|
|
232
|
-
<template>
|
|
233
|
-
<v-app>
|
|
234
|
-
<!-- App Bar -->
|
|
235
|
-
<v-app-bar :color="primaryColor" density="comfortable">
|
|
236
|
-
<v-app-bar-nav-icon @click="drawer = !drawer"></v-app-bar-nav-icon>
|
|
237
|
-
<v-text-field name="name" v-model="context.document.name" variant="outlined" class="document-name" density="compact"></v-text-field>
|
|
238
|
-
</v-app-bar>
|
|
239
|
-
|
|
240
|
-
<!-- Navigation Drawer -->
|
|
241
|
-
<v-navigation-drawer v-model="drawer" temporary style="background-color: #dddddd">
|
|
242
|
-
<v-img :src="context.document.img" style="background-color: lightgray" data-edit='img' data-action='onEditImage'>
|
|
243
|
-
<template #error>
|
|
244
|
-
<v-img src="/systems/${id}/img/missing-character.png" data-edit='img' data-action='onEditImage'></v-img>
|
|
245
|
-
</template>
|
|
246
|
-
</v-img>
|
|
247
|
-
<v-tabs v-model="page" direction="vertical">
|
|
248
|
-
<v-tab value="details" prepend-icon="fa-solid fa-book">Details</v-tab>
|
|
249
|
-
<!-- <v-tab value="duration" prepend-icon="fa-solid fa-clock">Duration</v-tab>-->
|
|
250
|
-
${joinToNode(documents, generateNavListItem, { appendNewLineIfNotEmpty: true })}
|
|
251
|
-
</v-tabs>
|
|
252
|
-
</v-navigation-drawer>
|
|
253
|
-
|
|
254
|
-
<!-- Main Content -->
|
|
255
|
-
<v-main class="d-flex">
|
|
256
|
-
<v-container class="topography" fluid>
|
|
257
|
-
<v-tabs-window v-model="page">
|
|
258
|
-
<v-tabs-window-item value="details" data-tab="details">
|
|
259
|
-
<v-col cols="12" style="padding: 0">
|
|
260
|
-
<v-switch
|
|
261
|
-
:model-value="!context.document.disabled"
|
|
262
|
-
@update:model-value="context.document.disabled = !$event"
|
|
263
|
-
name="enabled"
|
|
264
|
-
:color="primaryColor"
|
|
265
|
-
label="Enabled">
|
|
266
|
-
</v-switch>
|
|
267
|
-
<v-switch
|
|
268
|
-
v-if="context.isItemEffect"
|
|
269
|
-
:model-value="context.document.transfer"
|
|
270
|
-
name="transfer"
|
|
271
|
-
:color="secondaryColor"
|
|
272
|
-
label="Active on parent Actor">
|
|
273
|
-
</v-switch>
|
|
274
|
-
<v-text-field
|
|
275
|
-
v-if="context.originLink"
|
|
276
|
-
:model-value="context.originLink"
|
|
277
|
-
label="Origin"
|
|
278
|
-
:disabled="true"
|
|
279
|
-
>
|
|
280
|
-
</v-text-field>
|
|
281
|
-
<v-card class="mt-3 mb-3" variant="outlined">
|
|
282
|
-
<v-card-title class="text-body-2">
|
|
283
|
-
<v-icon icon="fa-solid fa-magic" class="mr-2"></v-icon>
|
|
284
|
-
Current Changes
|
|
285
|
-
</v-card-title>
|
|
286
|
-
<v-card-text class="pt-2">
|
|
287
|
-
<div class="text-body-2 text-medium-emphasis">
|
|
288
|
-
{{ changesSummary }}
|
|
289
|
-
</div>
|
|
290
|
-
</v-card-text>
|
|
291
|
-
</v-card>
|
|
292
|
-
<i-prosemirror
|
|
293
|
-
label="Description"
|
|
294
|
-
icon="fa-solid fa-file-lines"
|
|
295
|
-
:field="context.editors['description']"
|
|
296
|
-
class="mt-2"
|
|
297
|
-
>
|
|
298
|
-
</i-prosemirror>
|
|
299
|
-
</v-col>
|
|
300
|
-
</v-tabs-window-item>
|
|
301
|
-
<v-tabs-window-item value="duration" data-tab="duration">
|
|
302
|
-
<v-col cols="12" style="padding: 0">
|
|
303
|
-
<v-label>Duration Settings</v-label>
|
|
304
|
-
<!-- Add duration content here -->
|
|
305
|
-
</v-col>
|
|
306
|
-
</v-tabs-window-item>
|
|
307
|
-
${joinToNode(documents, generateDocumentPage, { appendNewLineIfNotEmpty: true })}
|
|
308
|
-
</v-tabs-window>
|
|
309
|
-
</v-container>
|
|
310
|
-
</v-main>
|
|
311
|
-
</v-app>
|
|
312
|
-
</template>
|
|
231
|
+
return expandToNode `
|
|
232
|
+
<template>
|
|
233
|
+
<v-app>
|
|
234
|
+
<!-- App Bar -->
|
|
235
|
+
<v-app-bar :color="primaryColor" density="comfortable">
|
|
236
|
+
<v-app-bar-nav-icon @click="drawer = !drawer"></v-app-bar-nav-icon>
|
|
237
|
+
<v-text-field name="name" v-model="context.document.name" variant="outlined" class="document-name" density="compact"></v-text-field>
|
|
238
|
+
</v-app-bar>
|
|
239
|
+
|
|
240
|
+
<!-- Navigation Drawer -->
|
|
241
|
+
<v-navigation-drawer v-model="drawer" temporary style="background-color: #dddddd">
|
|
242
|
+
<v-img :src="context.document.img" style="background-color: lightgray" data-edit='img' data-action='onEditImage'>
|
|
243
|
+
<template #error>
|
|
244
|
+
<v-img src="/systems/${id}/img/missing-character.png" data-edit='img' data-action='onEditImage'></v-img>
|
|
245
|
+
</template>
|
|
246
|
+
</v-img>
|
|
247
|
+
<v-tabs v-model="page" direction="vertical">
|
|
248
|
+
<v-tab value="details" prepend-icon="fa-solid fa-book">Details</v-tab>
|
|
249
|
+
<!-- <v-tab value="duration" prepend-icon="fa-solid fa-clock">Duration</v-tab>-->
|
|
250
|
+
${joinToNode(documents, generateNavListItem, { appendNewLineIfNotEmpty: true })}
|
|
251
|
+
</v-tabs>
|
|
252
|
+
</v-navigation-drawer>
|
|
253
|
+
|
|
254
|
+
<!-- Main Content -->
|
|
255
|
+
<v-main class="d-flex">
|
|
256
|
+
<v-container class="topography" fluid>
|
|
257
|
+
<v-tabs-window v-model="page">
|
|
258
|
+
<v-tabs-window-item value="details" data-tab="details">
|
|
259
|
+
<v-col cols="12" style="padding: 0">
|
|
260
|
+
<v-switch
|
|
261
|
+
:model-value="!context.document.disabled"
|
|
262
|
+
@update:model-value="context.document.disabled = !$event"
|
|
263
|
+
name="enabled"
|
|
264
|
+
:color="primaryColor"
|
|
265
|
+
label="Enabled">
|
|
266
|
+
</v-switch>
|
|
267
|
+
<v-switch
|
|
268
|
+
v-if="context.isItemEffect"
|
|
269
|
+
:model-value="context.document.transfer"
|
|
270
|
+
name="transfer"
|
|
271
|
+
:color="secondaryColor"
|
|
272
|
+
label="Active on parent Actor">
|
|
273
|
+
</v-switch>
|
|
274
|
+
<v-text-field
|
|
275
|
+
v-if="context.originLink"
|
|
276
|
+
:model-value="context.originLink"
|
|
277
|
+
label="Origin"
|
|
278
|
+
:disabled="true"
|
|
279
|
+
>
|
|
280
|
+
</v-text-field>
|
|
281
|
+
<v-card class="mt-3 mb-3" variant="outlined">
|
|
282
|
+
<v-card-title class="text-body-2">
|
|
283
|
+
<v-icon icon="fa-solid fa-magic" class="mr-2"></v-icon>
|
|
284
|
+
Current Changes
|
|
285
|
+
</v-card-title>
|
|
286
|
+
<v-card-text class="pt-2">
|
|
287
|
+
<div class="text-body-2 text-medium-emphasis">
|
|
288
|
+
{{ changesSummary }}
|
|
289
|
+
</div>
|
|
290
|
+
</v-card-text>
|
|
291
|
+
</v-card>
|
|
292
|
+
<i-prosemirror
|
|
293
|
+
label="Description"
|
|
294
|
+
icon="fa-solid fa-file-lines"
|
|
295
|
+
:field="context.editors['description']"
|
|
296
|
+
class="mt-2"
|
|
297
|
+
>
|
|
298
|
+
</i-prosemirror>
|
|
299
|
+
</v-col>
|
|
300
|
+
</v-tabs-window-item>
|
|
301
|
+
<v-tabs-window-item value="duration" data-tab="duration">
|
|
302
|
+
<v-col cols="12" style="padding: 0">
|
|
303
|
+
<v-label>Duration Settings</v-label>
|
|
304
|
+
<!-- Add duration content here -->
|
|
305
|
+
</v-col>
|
|
306
|
+
</v-tabs-window-item>
|
|
307
|
+
${joinToNode(documents, generateDocumentPage, { appendNewLineIfNotEmpty: true })}
|
|
308
|
+
</v-tabs-window>
|
|
309
|
+
</v-container>
|
|
310
|
+
</v-main>
|
|
311
|
+
</v-app>
|
|
312
|
+
</template>
|
|
313
313
|
`;
|
|
314
314
|
}
|
|
315
315
|
function generateNavListItem(document) {
|
|
316
|
-
return expandToNode `
|
|
317
|
-
<v-tab value="${document.name}" prepend-icon="fa-solid fa-pen-to-square">${document.name} Changes</v-tab>
|
|
316
|
+
return expandToNode `
|
|
317
|
+
<v-tab value="${document.name}" prepend-icon="fa-solid fa-pen-to-square">${document.name} Changes</v-tab>
|
|
318
318
|
`;
|
|
319
319
|
}
|
|
320
320
|
function generateDocumentPage(document) {
|
|
@@ -333,44 +333,44 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
333
333
|
`{title: '${damageType} Damage Resistance (%)', value: '${damageType} Damage Resistance (%)'}`
|
|
334
334
|
];
|
|
335
335
|
}).flat().join(', ');
|
|
336
|
-
return expandToNode `
|
|
337
|
-
<v-tabs-window-item value="${document.name}" data-tab="${document.name}">
|
|
338
|
-
<v-col cols="12" style="padding: 0">
|
|
339
|
-
<v-card class="mb-4">
|
|
340
|
-
<v-card-title>Available Fields</v-card-title>
|
|
341
|
-
<v-card-text>
|
|
342
|
-
<v-autocomplete
|
|
343
|
-
label="Add Field to Change"
|
|
344
|
-
:items="[${joinToNode(fields, (property) => `{title: '${property.name}', value: '${property.name}'}`, { separator: ', ' })}${fields.length > 0 && damageTypeFields ? ', ' : ''}${damageTypeFields}]"
|
|
345
|
-
item-title="title"
|
|
346
|
-
item-value="value"
|
|
347
|
-
v-model="selectedFields['${document.name}']"
|
|
348
|
-
:color="primaryColor"
|
|
349
|
-
variant="outlined"
|
|
350
|
-
density="compact"
|
|
351
|
-
multiple
|
|
352
|
-
chips
|
|
353
|
-
closable-chips>
|
|
354
|
-
<template #chip="{ props, item }">
|
|
355
|
-
<v-chip v-bind="props" :text="item.title" closable></v-chip>
|
|
356
|
-
</template>
|
|
357
|
-
</v-autocomplete>
|
|
358
|
-
</v-card-text>
|
|
359
|
-
</v-card>
|
|
360
|
-
|
|
361
|
-
<div v-for="fieldName in selectedFields['${document.name}'] || []" :key="fieldName">
|
|
362
|
-
${joinToNode(fields, (property) => generateConditionalField(document, property), { appendNewLineIfNotEmpty: true })}
|
|
363
|
-
${generateDamageTypeConditionalFields(document, damageTypes)}
|
|
364
|
-
</div>
|
|
365
|
-
</v-col>
|
|
366
|
-
</v-tabs-window-item>
|
|
336
|
+
return expandToNode `
|
|
337
|
+
<v-tabs-window-item value="${document.name}" data-tab="${document.name}">
|
|
338
|
+
<v-col cols="12" style="padding: 0">
|
|
339
|
+
<v-card class="mb-4">
|
|
340
|
+
<v-card-title>Available Fields</v-card-title>
|
|
341
|
+
<v-card-text>
|
|
342
|
+
<v-autocomplete
|
|
343
|
+
label="Add Field to Change"
|
|
344
|
+
:items="[${joinToNode(fields, (property) => `{title: '${property.name}', value: '${property.name}'}`, { separator: ', ' })}${fields.length > 0 && damageTypeFields ? ', ' : ''}${damageTypeFields}]"
|
|
345
|
+
item-title="title"
|
|
346
|
+
item-value="value"
|
|
347
|
+
v-model="selectedFields['${document.name}']"
|
|
348
|
+
:color="primaryColor"
|
|
349
|
+
variant="outlined"
|
|
350
|
+
density="compact"
|
|
351
|
+
multiple
|
|
352
|
+
chips
|
|
353
|
+
closable-chips>
|
|
354
|
+
<template #chip="{ props, item }">
|
|
355
|
+
<v-chip v-bind="props" :text="item.title" closable></v-chip>
|
|
356
|
+
</template>
|
|
357
|
+
</v-autocomplete>
|
|
358
|
+
</v-card-text>
|
|
359
|
+
</v-card>
|
|
360
|
+
|
|
361
|
+
<div v-for="fieldName in selectedFields['${document.name}'] || []" :key="fieldName">
|
|
362
|
+
${joinToNode(fields, (property) => generateConditionalField(document, property), { appendNewLineIfNotEmpty: true })}
|
|
363
|
+
${generateDamageTypeConditionalFields(document, damageTypes)}
|
|
364
|
+
</div>
|
|
365
|
+
</v-col>
|
|
366
|
+
</v-tabs-window-item>
|
|
367
367
|
`;
|
|
368
368
|
}
|
|
369
369
|
function generateConditionalField(document, property) {
|
|
370
|
-
return expandToNode `
|
|
371
|
-
<div v-if="fieldName === '${property.name}'">
|
|
372
|
-
${generateField(document, property)}
|
|
373
|
-
</div>
|
|
370
|
+
return expandToNode `
|
|
371
|
+
<div v-if="fieldName === '${property.name}'">
|
|
372
|
+
${generateField(document, property)}
|
|
373
|
+
</div>
|
|
374
374
|
`;
|
|
375
375
|
}
|
|
376
376
|
function generateDamageTypeConditionalFields(document, damageTypes) {
|
|
@@ -379,137 +379,137 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
379
379
|
}
|
|
380
380
|
return joinToNode(damageTypes, damageType => {
|
|
381
381
|
const safeTypeName = damageType.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
382
|
-
return expandToNode `
|
|
383
|
-
<!-- ${damageType} Bonus Damage -->
|
|
384
|
-
<div v-if="fieldName === '${damageType} Bonus Damage'">
|
|
385
|
-
<v-card class="mb-4">
|
|
386
|
-
<v-card-title>
|
|
387
|
-
${damageType} Bonus Damage
|
|
388
|
-
<v-btn
|
|
389
|
-
icon="fa-solid fa-xmark"
|
|
390
|
-
size="small"
|
|
391
|
-
variant="text"
|
|
392
|
-
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Bonus Damage')"
|
|
393
|
-
style="float: right;">
|
|
394
|
-
</v-btn>
|
|
395
|
-
</v-card-title>
|
|
396
|
-
<v-card-text>
|
|
397
|
-
<v-row>
|
|
398
|
-
<v-select
|
|
399
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage-type"
|
|
400
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage')"
|
|
401
|
-
label="Mode"
|
|
402
|
-
:color="primaryColor"
|
|
403
|
-
:items="context.basicNumberModes"
|
|
404
|
-
item-title="label"
|
|
405
|
-
item-value="value"
|
|
406
|
-
variant="outlined"
|
|
407
|
-
density="compact">
|
|
408
|
-
</v-select>
|
|
409
|
-
<v-number-input
|
|
410
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage"
|
|
411
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage')"
|
|
412
|
-
label="Bonus Damage"
|
|
413
|
-
:color="primaryColor"
|
|
414
|
-
variant="outlined"
|
|
415
|
-
density="compact">
|
|
416
|
-
</v-number-input>
|
|
417
|
-
</v-row>
|
|
418
|
-
</v-card-text>
|
|
419
|
-
</v-card>
|
|
420
|
-
</div>
|
|
421
|
-
|
|
422
|
-
<!-- ${damageType} Damage Resistance (Flat) -->
|
|
423
|
-
<div v-if="fieldName === '${damageType} Damage Resistance (Flat)'">
|
|
424
|
-
<v-card class="mb-4">
|
|
425
|
-
<v-card-title>
|
|
426
|
-
${damageType} Damage Resistance (Flat)
|
|
427
|
-
<v-btn
|
|
428
|
-
icon="fa-solid fa-xmark"
|
|
429
|
-
size="small"
|
|
430
|
-
variant="text"
|
|
431
|
-
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Damage Resistance (Flat)')"
|
|
432
|
-
style="float: right;">
|
|
433
|
-
</v-btn>
|
|
434
|
-
</v-card-title>
|
|
435
|
-
<v-card-text>
|
|
436
|
-
<v-row>
|
|
437
|
-
<v-select
|
|
438
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat-type"
|
|
439
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat')"
|
|
440
|
-
label="Mode"
|
|
441
|
-
:color="primaryColor"
|
|
442
|
-
:items="context.basicNumberModes"
|
|
443
|
-
item-title="label"
|
|
444
|
-
item-value="value"
|
|
445
|
-
variant="outlined"
|
|
446
|
-
density="compact">
|
|
447
|
-
</v-select>
|
|
448
|
-
<v-number-input
|
|
449
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat"
|
|
450
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat')"
|
|
451
|
-
label="Flat Resistance"
|
|
452
|
-
:color="primaryColor"
|
|
453
|
-
variant="outlined"
|
|
454
|
-
density="compact">
|
|
455
|
-
</v-number-input>
|
|
456
|
-
</v-row>
|
|
457
|
-
</v-card-text>
|
|
458
|
-
</v-card>
|
|
459
|
-
</div>
|
|
460
|
-
|
|
461
|
-
<!-- ${damageType} Damage Resistance (%) -->
|
|
462
|
-
<div v-if="fieldName === '${damageType} Damage Resistance (%)'">
|
|
463
|
-
<v-card class="mb-4">
|
|
464
|
-
<v-card-title>
|
|
465
|
-
${damageType} Damage Resistance (%)
|
|
466
|
-
<v-btn
|
|
467
|
-
icon="fa-solid fa-xmark"
|
|
468
|
-
size="small"
|
|
469
|
-
variant="text"
|
|
470
|
-
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Damage Resistance (%)')"
|
|
471
|
-
style="float: right;">
|
|
472
|
-
</v-btn>
|
|
473
|
-
</v-card-title>
|
|
474
|
-
<v-card-text>
|
|
475
|
-
<v-row>
|
|
476
|
-
<v-select
|
|
477
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent-type"
|
|
478
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent')"
|
|
479
|
-
label="Mode"
|
|
480
|
-
:color="primaryColor"
|
|
481
|
-
:items="context.basicNumberModes"
|
|
482
|
-
item-title="label"
|
|
483
|
-
item-value="value"tec
|
|
484
|
-
variant="outlined"
|
|
485
|
-
density="compact">
|
|
486
|
-
</v-select>
|
|
487
|
-
<v-number-input
|
|
488
|
-
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent"
|
|
489
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent')"
|
|
490
|
-
label="Percent Resistance (0-100)"
|
|
491
|
-
:min="0"
|
|
492
|
-
:max="100"
|
|
493
|
-
:color="primaryColor"
|
|
494
|
-
variant="outlined"
|
|
495
|
-
density="compact">
|
|
496
|
-
</v-number-input>
|
|
497
|
-
</v-row>
|
|
498
|
-
</v-card-text>
|
|
499
|
-
</v-card>
|
|
500
|
-
</div>
|
|
382
|
+
return expandToNode `
|
|
383
|
+
<!-- ${damageType} Bonus Damage -->
|
|
384
|
+
<div v-if="fieldName === '${damageType} Bonus Damage'">
|
|
385
|
+
<v-card class="mb-4">
|
|
386
|
+
<v-card-title>
|
|
387
|
+
${damageType} Bonus Damage
|
|
388
|
+
<v-btn
|
|
389
|
+
icon="fa-solid fa-xmark"
|
|
390
|
+
size="small"
|
|
391
|
+
variant="text"
|
|
392
|
+
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Bonus Damage')"
|
|
393
|
+
style="float: right;">
|
|
394
|
+
</v-btn>
|
|
395
|
+
</v-card-title>
|
|
396
|
+
<v-card-text>
|
|
397
|
+
<v-row>
|
|
398
|
+
<v-select
|
|
399
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage-type"
|
|
400
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage')"
|
|
401
|
+
label="Mode"
|
|
402
|
+
:color="primaryColor"
|
|
403
|
+
:items="context.basicNumberModes"
|
|
404
|
+
item-title="label"
|
|
405
|
+
item-value="value"
|
|
406
|
+
variant="outlined"
|
|
407
|
+
density="compact">
|
|
408
|
+
</v-select>
|
|
409
|
+
<v-number-input
|
|
410
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage"
|
|
411
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}bonusdamage')"
|
|
412
|
+
label="Bonus Damage"
|
|
413
|
+
:color="primaryColor"
|
|
414
|
+
variant="outlined"
|
|
415
|
+
density="compact">
|
|
416
|
+
</v-number-input>
|
|
417
|
+
</v-row>
|
|
418
|
+
</v-card-text>
|
|
419
|
+
</v-card>
|
|
420
|
+
</div>
|
|
421
|
+
|
|
422
|
+
<!-- ${damageType} Damage Resistance (Flat) -->
|
|
423
|
+
<div v-if="fieldName === '${damageType} Damage Resistance (Flat)'">
|
|
424
|
+
<v-card class="mb-4">
|
|
425
|
+
<v-card-title>
|
|
426
|
+
${damageType} Damage Resistance (Flat)
|
|
427
|
+
<v-btn
|
|
428
|
+
icon="fa-solid fa-xmark"
|
|
429
|
+
size="small"
|
|
430
|
+
variant="text"
|
|
431
|
+
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Damage Resistance (Flat)')"
|
|
432
|
+
style="float: right;">
|
|
433
|
+
</v-btn>
|
|
434
|
+
</v-card-title>
|
|
435
|
+
<v-card-text>
|
|
436
|
+
<v-row>
|
|
437
|
+
<v-select
|
|
438
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat-type"
|
|
439
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat')"
|
|
440
|
+
label="Mode"
|
|
441
|
+
:color="primaryColor"
|
|
442
|
+
:items="context.basicNumberModes"
|
|
443
|
+
item-title="label"
|
|
444
|
+
item-value="value"
|
|
445
|
+
variant="outlined"
|
|
446
|
+
density="compact">
|
|
447
|
+
</v-select>
|
|
448
|
+
<v-number-input
|
|
449
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat"
|
|
450
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}damageresistanceflat')"
|
|
451
|
+
label="Flat Resistance"
|
|
452
|
+
:color="primaryColor"
|
|
453
|
+
variant="outlined"
|
|
454
|
+
density="compact">
|
|
455
|
+
</v-number-input>
|
|
456
|
+
</v-row>
|
|
457
|
+
</v-card-text>
|
|
458
|
+
</v-card>
|
|
459
|
+
</div>
|
|
460
|
+
|
|
461
|
+
<!-- ${damageType} Damage Resistance (%) -->
|
|
462
|
+
<div v-if="fieldName === '${damageType} Damage Resistance (%)'">
|
|
463
|
+
<v-card class="mb-4">
|
|
464
|
+
<v-card-title>
|
|
465
|
+
${damageType} Damage Resistance (%)
|
|
466
|
+
<v-btn
|
|
467
|
+
icon="fa-solid fa-xmark"
|
|
468
|
+
size="small"
|
|
469
|
+
variant="text"
|
|
470
|
+
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${damageType} Damage Resistance (%)')"
|
|
471
|
+
style="float: right;">
|
|
472
|
+
</v-btn>
|
|
473
|
+
</v-card-title>
|
|
474
|
+
<v-card-text>
|
|
475
|
+
<v-row>
|
|
476
|
+
<v-select
|
|
477
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent-type"
|
|
478
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent')"
|
|
479
|
+
label="Mode"
|
|
480
|
+
:color="primaryColor"
|
|
481
|
+
:items="context.basicNumberModes"
|
|
482
|
+
item-title="label"
|
|
483
|
+
item-value="value"tec
|
|
484
|
+
variant="outlined"
|
|
485
|
+
density="compact">
|
|
486
|
+
</v-select>
|
|
487
|
+
<v-number-input
|
|
488
|
+
name="${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent"
|
|
489
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${safeTypeName}damageresistancepercent')"
|
|
490
|
+
label="Percent Resistance (0-100)"
|
|
491
|
+
:min="0"
|
|
492
|
+
:max="100"
|
|
493
|
+
:color="primaryColor"
|
|
494
|
+
variant="outlined"
|
|
495
|
+
density="compact">
|
|
496
|
+
</v-number-input>
|
|
497
|
+
</v-row>
|
|
498
|
+
</v-card-text>
|
|
499
|
+
</v-card>
|
|
500
|
+
</div>
|
|
501
501
|
`;
|
|
502
502
|
}, { appendNewLineIfNotEmpty: true });
|
|
503
503
|
}
|
|
504
504
|
function generateRemoveButton(document, property) {
|
|
505
|
-
return expandToNode `
|
|
506
|
-
<v-btn
|
|
507
|
-
icon="fa-solid fa-xmark"
|
|
508
|
-
size="small"
|
|
509
|
-
variant="text"
|
|
510
|
-
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${property.name}')"
|
|
511
|
-
style="float: right;">
|
|
512
|
-
</v-btn>
|
|
505
|
+
return expandToNode `
|
|
506
|
+
<v-btn
|
|
507
|
+
icon="fa-solid fa-xmark"
|
|
508
|
+
size="small"
|
|
509
|
+
variant="text"
|
|
510
|
+
@click="selectedFields['${document.name}'] = selectedFields['${document.name}'].filter(f => f !== '${property.name}')"
|
|
511
|
+
style="float: right;">
|
|
512
|
+
</v-btn>
|
|
513
513
|
`;
|
|
514
514
|
}
|
|
515
515
|
function generateField(document, property) {
|
|
@@ -518,498 +518,498 @@ export function generateActiveEffectVueSheet(entry, id, destination) {
|
|
|
518
518
|
if (property.modifier == "locked")
|
|
519
519
|
return;
|
|
520
520
|
if (isNumberExp(property)) {
|
|
521
|
-
return expandToNode `
|
|
522
|
-
<v-card class="mb-4">
|
|
523
|
-
<v-card-title>
|
|
524
|
-
${property.name}
|
|
525
|
-
${generateRemoveButton(document, property)}
|
|
526
|
-
</v-card-title>
|
|
527
|
-
<v-card-text>
|
|
528
|
-
<v-row>
|
|
529
|
-
<v-select
|
|
530
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
531
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
532
|
-
label="Mode"
|
|
533
|
-
:color="primaryColor"
|
|
534
|
-
:items="context.numberModes"
|
|
535
|
-
item-title="label"
|
|
536
|
-
item-value="value"
|
|
537
|
-
variant="outlined"
|
|
538
|
-
density="compact">
|
|
539
|
-
</v-select>
|
|
540
|
-
<v-number-input
|
|
541
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
542
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
543
|
-
label="Value"
|
|
544
|
-
:color="primaryColor"
|
|
545
|
-
variant="outlined"
|
|
546
|
-
density="compact">
|
|
547
|
-
</v-number-input>
|
|
548
|
-
</v-row>
|
|
549
|
-
</v-card-text>
|
|
550
|
-
</v-card>
|
|
521
|
+
return expandToNode `
|
|
522
|
+
<v-card class="mb-4">
|
|
523
|
+
<v-card-title>
|
|
524
|
+
${property.name}
|
|
525
|
+
${generateRemoveButton(document, property)}
|
|
526
|
+
</v-card-title>
|
|
527
|
+
<v-card-text>
|
|
528
|
+
<v-row>
|
|
529
|
+
<v-select
|
|
530
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
531
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
532
|
+
label="Mode"
|
|
533
|
+
:color="primaryColor"
|
|
534
|
+
:items="context.numberModes"
|
|
535
|
+
item-title="label"
|
|
536
|
+
item-value="value"
|
|
537
|
+
variant="outlined"
|
|
538
|
+
density="compact">
|
|
539
|
+
</v-select>
|
|
540
|
+
<v-number-input
|
|
541
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
542
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
543
|
+
label="Value"
|
|
544
|
+
:color="primaryColor"
|
|
545
|
+
variant="outlined"
|
|
546
|
+
density="compact">
|
|
547
|
+
</v-number-input>
|
|
548
|
+
</v-row>
|
|
549
|
+
</v-card-text>
|
|
550
|
+
</v-card>
|
|
551
551
|
`;
|
|
552
552
|
}
|
|
553
553
|
if (isAttributeExp(property)) {
|
|
554
|
-
return expandToNode `
|
|
555
|
-
<v-card class="mb-4">
|
|
556
|
-
<v-card-title>
|
|
557
|
-
${property.name}
|
|
558
|
-
${generateRemoveButton(document, property)}
|
|
559
|
-
</v-card-title>
|
|
560
|
-
<v-card-text>
|
|
561
|
-
<v-row>
|
|
562
|
-
<v-select
|
|
563
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value-mode"
|
|
564
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
565
|
-
label="Mode"
|
|
566
|
-
:items="context.numberModes"
|
|
567
|
-
item-title="label"
|
|
568
|
-
item-value="value"
|
|
569
|
-
:color="primaryColor"
|
|
570
|
-
variant="outlined"
|
|
571
|
-
density="compact">
|
|
572
|
-
</v-select>
|
|
573
|
-
<v-number-input
|
|
574
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
575
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
576
|
-
label="Value"
|
|
577
|
-
:color="primaryColor"
|
|
578
|
-
variant="outlined"
|
|
579
|
-
density="compact">
|
|
580
|
-
</v-number-input>
|
|
581
|
-
</v-row>
|
|
582
|
-
</v-card-text>
|
|
583
|
-
</v-card>
|
|
554
|
+
return expandToNode `
|
|
555
|
+
<v-card class="mb-4">
|
|
556
|
+
<v-card-title>
|
|
557
|
+
${property.name}
|
|
558
|
+
${generateRemoveButton(document, property)}
|
|
559
|
+
</v-card-title>
|
|
560
|
+
<v-card-text>
|
|
561
|
+
<v-row>
|
|
562
|
+
<v-select
|
|
563
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value-mode"
|
|
564
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
565
|
+
label="Mode"
|
|
566
|
+
:items="context.numberModes"
|
|
567
|
+
item-title="label"
|
|
568
|
+
item-value="value"
|
|
569
|
+
:color="primaryColor"
|
|
570
|
+
variant="outlined"
|
|
571
|
+
density="compact">
|
|
572
|
+
</v-select>
|
|
573
|
+
<v-number-input
|
|
574
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
575
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
576
|
+
label="Value"
|
|
577
|
+
:color="primaryColor"
|
|
578
|
+
variant="outlined"
|
|
579
|
+
density="compact">
|
|
580
|
+
</v-number-input>
|
|
581
|
+
</v-row>
|
|
582
|
+
</v-card-text>
|
|
583
|
+
</v-card>
|
|
584
584
|
`;
|
|
585
585
|
}
|
|
586
586
|
if (isResourceExp(property)) {
|
|
587
587
|
// Resource has both a current and max that can be changed
|
|
588
|
-
return expandToNode `
|
|
589
|
-
<v-card class="mb-4">
|
|
590
|
-
<v-card-title>
|
|
591
|
-
${property.name}
|
|
592
|
-
${generateRemoveButton(document, property)}
|
|
593
|
-
</v-card-title>
|
|
594
|
-
<v-card-text>
|
|
595
|
-
<v-label>Resource Current</v-label>
|
|
596
|
-
<v-row>
|
|
597
|
-
<v-select
|
|
598
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value-mode"
|
|
599
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
600
|
-
label="Mode"
|
|
601
|
-
:items="context.numberModes"
|
|
602
|
-
item-title="label"
|
|
603
|
-
item-value="value"
|
|
604
|
-
:color="primaryColor"
|
|
605
|
-
variant="outlined"
|
|
606
|
-
density="compact">
|
|
607
|
-
</v-select>
|
|
608
|
-
<v-number-input
|
|
609
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
610
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
611
|
-
label="Current Value"
|
|
612
|
-
:color="primaryColor"
|
|
613
|
-
variant="outlined"
|
|
614
|
-
density="compact">
|
|
615
|
-
</v-number-input>
|
|
616
|
-
</v-row>
|
|
617
|
-
<v-label class="mt-2">Resource Max</v-label>
|
|
618
|
-
<v-row>
|
|
619
|
-
<v-select
|
|
620
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max-mode"
|
|
621
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
622
|
-
label="Mode"
|
|
623
|
-
:items="context.numberModes"
|
|
624
|
-
item-title="label"
|
|
625
|
-
item-value="value"
|
|
626
|
-
:color="primaryColor"
|
|
627
|
-
variant="outlined"
|
|
628
|
-
density="compact">
|
|
629
|
-
</v-select>
|
|
630
|
-
<v-number-input
|
|
631
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max"
|
|
632
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
633
|
-
label="Max Value"
|
|
634
|
-
:color="primaryColor"
|
|
635
|
-
variant="outlined"
|
|
636
|
-
density="compact">
|
|
637
|
-
</v-number-input>
|
|
638
|
-
</v-row>
|
|
639
|
-
</v-card-text>
|
|
640
|
-
</v-card>
|
|
588
|
+
return expandToNode `
|
|
589
|
+
<v-card class="mb-4">
|
|
590
|
+
<v-card-title>
|
|
591
|
+
${property.name}
|
|
592
|
+
${generateRemoveButton(document, property)}
|
|
593
|
+
</v-card-title>
|
|
594
|
+
<v-card-text>
|
|
595
|
+
<v-label>Resource Current</v-label>
|
|
596
|
+
<v-row>
|
|
597
|
+
<v-select
|
|
598
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value-mode"
|
|
599
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
600
|
+
label="Mode"
|
|
601
|
+
:items="context.numberModes"
|
|
602
|
+
item-title="label"
|
|
603
|
+
item-value="value"
|
|
604
|
+
:color="primaryColor"
|
|
605
|
+
variant="outlined"
|
|
606
|
+
density="compact">
|
|
607
|
+
</v-select>
|
|
608
|
+
<v-number-input
|
|
609
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
610
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
611
|
+
label="Current Value"
|
|
612
|
+
:color="primaryColor"
|
|
613
|
+
variant="outlined"
|
|
614
|
+
density="compact">
|
|
615
|
+
</v-number-input>
|
|
616
|
+
</v-row>
|
|
617
|
+
<v-label class="mt-2">Resource Max</v-label>
|
|
618
|
+
<v-row>
|
|
619
|
+
<v-select
|
|
620
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max-mode"
|
|
621
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
622
|
+
label="Mode"
|
|
623
|
+
:items="context.numberModes"
|
|
624
|
+
item-title="label"
|
|
625
|
+
item-value="value"
|
|
626
|
+
:color="primaryColor"
|
|
627
|
+
variant="outlined"
|
|
628
|
+
density="compact">
|
|
629
|
+
</v-select>
|
|
630
|
+
<v-number-input
|
|
631
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max"
|
|
632
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
633
|
+
label="Max Value"
|
|
634
|
+
:color="primaryColor"
|
|
635
|
+
variant="outlined"
|
|
636
|
+
density="compact">
|
|
637
|
+
</v-number-input>
|
|
638
|
+
</v-row>
|
|
639
|
+
</v-card-text>
|
|
640
|
+
</v-card>
|
|
641
641
|
`;
|
|
642
642
|
}
|
|
643
643
|
if (isStringExp(property)) {
|
|
644
|
-
return expandToNode `
|
|
645
|
-
<v-card class="mb-4">
|
|
646
|
-
<v-card-title>
|
|
647
|
-
${property.name}
|
|
648
|
-
${generateRemoveButton(document, property)}
|
|
649
|
-
</v-card-title>
|
|
650
|
-
<v-card-text>
|
|
651
|
-
<v-row>
|
|
652
|
-
<v-select
|
|
653
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
654
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
655
|
-
label="Mode"
|
|
656
|
-
:items="context.stringModes"
|
|
657
|
-
item-title="label"
|
|
658
|
-
item-value="value"
|
|
659
|
-
:color="primaryColor"
|
|
660
|
-
variant="outlined"
|
|
661
|
-
density="compact">
|
|
662
|
-
</v-select>
|
|
663
|
-
<v-text-field
|
|
664
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
665
|
-
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
666
|
-
label="Text Value"
|
|
667
|
-
:color="primaryColor"
|
|
668
|
-
variant="outlined"
|
|
669
|
-
density="compact">
|
|
670
|
-
</v-text-field>
|
|
671
|
-
</v-row>
|
|
672
|
-
</v-card-text>
|
|
673
|
-
</v-card>
|
|
644
|
+
return expandToNode `
|
|
645
|
+
<v-card class="mb-4">
|
|
646
|
+
<v-card-title>
|
|
647
|
+
${property.name}
|
|
648
|
+
${generateRemoveButton(document, property)}
|
|
649
|
+
</v-card-title>
|
|
650
|
+
<v-card-text>
|
|
651
|
+
<v-row>
|
|
652
|
+
<v-select
|
|
653
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
654
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
655
|
+
label="Mode"
|
|
656
|
+
:items="context.stringModes"
|
|
657
|
+
item-title="label"
|
|
658
|
+
item-value="value"
|
|
659
|
+
:color="primaryColor"
|
|
660
|
+
variant="outlined"
|
|
661
|
+
density="compact">
|
|
662
|
+
</v-select>
|
|
663
|
+
<v-text-field
|
|
664
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
665
|
+
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
666
|
+
label="Text Value"
|
|
667
|
+
:color="primaryColor"
|
|
668
|
+
variant="outlined"
|
|
669
|
+
density="compact">
|
|
670
|
+
</v-text-field>
|
|
671
|
+
</v-row>
|
|
672
|
+
</v-card-text>
|
|
673
|
+
</v-card>
|
|
674
674
|
`;
|
|
675
675
|
}
|
|
676
676
|
if (isBooleanExp(property)) {
|
|
677
|
-
return expandToNode `
|
|
678
|
-
<v-card class="mb-4">
|
|
679
|
-
<v-card-title>
|
|
680
|
-
${property.name}
|
|
681
|
-
${generateRemoveButton(document, property)}
|
|
682
|
-
</v-card-title>
|
|
683
|
-
<v-card-text>
|
|
684
|
-
<v-row>
|
|
685
|
-
<v-select
|
|
686
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
687
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
688
|
-
label="Mode"
|
|
689
|
-
:items="context.booleanModes"
|
|
690
|
-
item-title="label"
|
|
691
|
-
item-value="value"
|
|
692
|
-
:color="primaryColor"
|
|
693
|
-
variant="outlined"
|
|
694
|
-
density="compact">
|
|
695
|
-
</v-select>
|
|
696
|
-
<v-switch
|
|
697
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
698
|
-
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
699
|
-
label="Boolean Value"
|
|
700
|
-
:color="primaryColor"
|
|
701
|
-
variant="outlined"
|
|
702
|
-
density="compact">
|
|
703
|
-
</v-switch>
|
|
704
|
-
</v-row>
|
|
705
|
-
</v-card-text>
|
|
706
|
-
</v-card>
|
|
677
|
+
return expandToNode `
|
|
678
|
+
<v-card class="mb-4">
|
|
679
|
+
<v-card-title>
|
|
680
|
+
${property.name}
|
|
681
|
+
${generateRemoveButton(document, property)}
|
|
682
|
+
</v-card-title>
|
|
683
|
+
<v-card-text>
|
|
684
|
+
<v-row>
|
|
685
|
+
<v-select
|
|
686
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
687
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
688
|
+
label="Mode"
|
|
689
|
+
:items="context.booleanModes"
|
|
690
|
+
item-title="label"
|
|
691
|
+
item-value="value"
|
|
692
|
+
:color="primaryColor"
|
|
693
|
+
variant="outlined"
|
|
694
|
+
density="compact">
|
|
695
|
+
</v-select>
|
|
696
|
+
<v-switch
|
|
697
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
698
|
+
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
699
|
+
label="Boolean Value"
|
|
700
|
+
:color="primaryColor"
|
|
701
|
+
variant="outlined"
|
|
702
|
+
density="compact">
|
|
703
|
+
</v-switch>
|
|
704
|
+
</v-row>
|
|
705
|
+
</v-card-text>
|
|
706
|
+
</v-card>
|
|
707
707
|
`;
|
|
708
708
|
}
|
|
709
709
|
if (isStringChoiceField(property)) {
|
|
710
|
-
return expandToNode `
|
|
711
|
-
<v-card class="mb-4">
|
|
712
|
-
<v-card-title>
|
|
713
|
-
${property.name}
|
|
714
|
-
${generateRemoveButton(document, property)}
|
|
715
|
-
</v-card-title>
|
|
716
|
-
<v-card-text>
|
|
717
|
-
<v-row>
|
|
718
|
-
<v-select
|
|
719
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
720
|
-
label="Mode"
|
|
721
|
-
:items="context.choiceModes"
|
|
722
|
-
item-title="label"
|
|
723
|
-
item-value="value"
|
|
724
|
-
:color="primaryColor"
|
|
725
|
-
variant="outlined"
|
|
726
|
-
density="compact">
|
|
727
|
-
</v-select>
|
|
728
|
-
<v-select
|
|
729
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
730
|
-
label="Choice Value"
|
|
731
|
-
:items="[]"
|
|
732
|
-
:color="primaryColor"
|
|
733
|
-
variant="outlined"
|
|
734
|
-
density="compact">
|
|
735
|
-
</v-select>
|
|
736
|
-
</v-row>
|
|
737
|
-
</v-card-text>
|
|
738
|
-
</v-card>
|
|
710
|
+
return expandToNode `
|
|
711
|
+
<v-card class="mb-4">
|
|
712
|
+
<v-card-title>
|
|
713
|
+
${property.name}
|
|
714
|
+
${generateRemoveButton(document, property)}
|
|
715
|
+
</v-card-title>
|
|
716
|
+
<v-card-text>
|
|
717
|
+
<v-row>
|
|
718
|
+
<v-select
|
|
719
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
720
|
+
label="Mode"
|
|
721
|
+
:items="context.choiceModes"
|
|
722
|
+
item-title="label"
|
|
723
|
+
item-value="value"
|
|
724
|
+
:color="primaryColor"
|
|
725
|
+
variant="outlined"
|
|
726
|
+
density="compact">
|
|
727
|
+
</v-select>
|
|
728
|
+
<v-select
|
|
729
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
730
|
+
label="Choice Value"
|
|
731
|
+
:items="[]"
|
|
732
|
+
:color="primaryColor"
|
|
733
|
+
variant="outlined"
|
|
734
|
+
density="compact">
|
|
735
|
+
</v-select>
|
|
736
|
+
</v-row>
|
|
737
|
+
</v-card-text>
|
|
738
|
+
</v-card>
|
|
739
739
|
`;
|
|
740
740
|
}
|
|
741
741
|
if (isTrackerExp(property)) {
|
|
742
|
-
return expandToNode `
|
|
743
|
-
<v-card class="mb-4">
|
|
744
|
-
<v-card-title>
|
|
745
|
-
${property.name}
|
|
746
|
-
${generateRemoveButton(document, property)}
|
|
747
|
-
</v-card-title>
|
|
748
|
-
<v-card-text>
|
|
749
|
-
<v-label class="">Tracker Value</v-label>
|
|
750
|
-
<v-row>
|
|
751
|
-
<v-select
|
|
752
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
753
|
-
label="Mode"
|
|
754
|
-
:items="context.numberModes"
|
|
755
|
-
item-title="label"
|
|
756
|
-
item-value="value"
|
|
757
|
-
:color="primaryColor"
|
|
758
|
-
variant="outlined"
|
|
759
|
-
density="compact">
|
|
760
|
-
</v-select>
|
|
761
|
-
<v-number-input
|
|
762
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
763
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
764
|
-
label="Current Value"
|
|
765
|
-
:color="primaryColor"
|
|
766
|
-
variant="outlined"
|
|
767
|
-
density="compact">
|
|
768
|
-
</v-number-input>
|
|
769
|
-
</v-row>
|
|
770
|
-
<v-label class="mt-2">Tracker Max</v-label>
|
|
771
|
-
<v-row>
|
|
772
|
-
<v-select
|
|
773
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max-mode"
|
|
774
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
775
|
-
label="Mode"
|
|
776
|
-
:items="context.numberModes"
|
|
777
|
-
item-title="label"
|
|
778
|
-
item-value="value"
|
|
779
|
-
:color="primaryColor"
|
|
780
|
-
variant="outlined"
|
|
781
|
-
density="compact">
|
|
782
|
-
</v-select>
|
|
783
|
-
<v-number-input
|
|
784
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max"
|
|
785
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
786
|
-
label="Max Value"
|
|
787
|
-
:color="primaryColor"
|
|
788
|
-
variant="outlined"
|
|
789
|
-
density="compact">
|
|
790
|
-
</v-number-input>
|
|
791
|
-
</v-row>
|
|
792
|
-
</v-card-text>
|
|
793
|
-
</v-card>
|
|
742
|
+
return expandToNode `
|
|
743
|
+
<v-card class="mb-4">
|
|
744
|
+
<v-card-title>
|
|
745
|
+
${property.name}
|
|
746
|
+
${generateRemoveButton(document, property)}
|
|
747
|
+
</v-card-title>
|
|
748
|
+
<v-card-text>
|
|
749
|
+
<v-label class="">Tracker Value</v-label>
|
|
750
|
+
<v-row>
|
|
751
|
+
<v-select
|
|
752
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
753
|
+
label="Mode"
|
|
754
|
+
:items="context.numberModes"
|
|
755
|
+
item-title="label"
|
|
756
|
+
item-value="value"
|
|
757
|
+
:color="primaryColor"
|
|
758
|
+
variant="outlined"
|
|
759
|
+
density="compact">
|
|
760
|
+
</v-select>
|
|
761
|
+
<v-number-input
|
|
762
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value"
|
|
763
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.value')"
|
|
764
|
+
label="Current Value"
|
|
765
|
+
:color="primaryColor"
|
|
766
|
+
variant="outlined"
|
|
767
|
+
density="compact">
|
|
768
|
+
</v-number-input>
|
|
769
|
+
</v-row>
|
|
770
|
+
<v-label class="mt-2">Tracker Max</v-label>
|
|
771
|
+
<v-row>
|
|
772
|
+
<v-select
|
|
773
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max-mode"
|
|
774
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
775
|
+
label="Mode"
|
|
776
|
+
:items="context.numberModes"
|
|
777
|
+
item-title="label"
|
|
778
|
+
item-value="value"
|
|
779
|
+
:color="primaryColor"
|
|
780
|
+
variant="outlined"
|
|
781
|
+
density="compact">
|
|
782
|
+
</v-select>
|
|
783
|
+
<v-number-input
|
|
784
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max"
|
|
785
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.max')"
|
|
786
|
+
label="Max Value"
|
|
787
|
+
:color="primaryColor"
|
|
788
|
+
variant="outlined"
|
|
789
|
+
density="compact">
|
|
790
|
+
</v-number-input>
|
|
791
|
+
</v-row>
|
|
792
|
+
</v-card-text>
|
|
793
|
+
</v-card>
|
|
794
794
|
`;
|
|
795
795
|
}
|
|
796
796
|
if (isDateExp(property)) {
|
|
797
|
-
return expandToNode `
|
|
798
|
-
<v-card class="mb-4">
|
|
799
|
-
<v-card-title>
|
|
800
|
-
${property.name}
|
|
801
|
-
${generateRemoveButton(document, property)}
|
|
802
|
-
</v-card-title>
|
|
803
|
-
<v-card-text>
|
|
804
|
-
<v-row>
|
|
805
|
-
<v-select
|
|
806
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
807
|
-
label="Mode"
|
|
808
|
-
:items="context.dateModes"
|
|
809
|
-
item-title="label"
|
|
810
|
-
item-value="value"
|
|
811
|
-
:color="primaryColor"
|
|
812
|
-
variant="outlined"
|
|
813
|
-
density="compact">
|
|
814
|
-
</v-select>
|
|
815
|
-
<v-text-field
|
|
816
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
817
|
-
label="Date Value"
|
|
818
|
-
type="date"
|
|
819
|
-
:color="primaryColor"
|
|
820
|
-
variant="outlined"
|
|
821
|
-
density="compact">
|
|
822
|
-
</v-text-field>
|
|
823
|
-
</v-row>
|
|
824
|
-
</v-card-text>
|
|
825
|
-
</v-card>
|
|
797
|
+
return expandToNode `
|
|
798
|
+
<v-card class="mb-4">
|
|
799
|
+
<v-card-title>
|
|
800
|
+
${property.name}
|
|
801
|
+
${generateRemoveButton(document, property)}
|
|
802
|
+
</v-card-title>
|
|
803
|
+
<v-card-text>
|
|
804
|
+
<v-row>
|
|
805
|
+
<v-select
|
|
806
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
807
|
+
label="Mode"
|
|
808
|
+
:items="context.dateModes"
|
|
809
|
+
item-title="label"
|
|
810
|
+
item-value="value"
|
|
811
|
+
:color="primaryColor"
|
|
812
|
+
variant="outlined"
|
|
813
|
+
density="compact">
|
|
814
|
+
</v-select>
|
|
815
|
+
<v-text-field
|
|
816
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
817
|
+
label="Date Value"
|
|
818
|
+
type="date"
|
|
819
|
+
:color="primaryColor"
|
|
820
|
+
variant="outlined"
|
|
821
|
+
density="compact">
|
|
822
|
+
</v-text-field>
|
|
823
|
+
</v-row>
|
|
824
|
+
</v-card-text>
|
|
825
|
+
</v-card>
|
|
826
826
|
`;
|
|
827
827
|
}
|
|
828
828
|
if (isTimeExp(property)) {
|
|
829
|
-
return expandToNode `
|
|
830
|
-
<v-card class="mb-4">
|
|
831
|
-
<v-card-title>
|
|
832
|
-
${property.name}
|
|
833
|
-
${generateRemoveButton(document, property)}
|
|
834
|
-
</v-card-title>
|
|
835
|
-
<v-card-text>
|
|
836
|
-
<v-row>
|
|
837
|
-
<v-select
|
|
838
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
839
|
-
label="Mode"
|
|
840
|
-
:items="context.timeModes"
|
|
841
|
-
item-title="label"
|
|
842
|
-
item-value="value"
|
|
843
|
-
:color="primaryColor"
|
|
844
|
-
variant="outlined"
|
|
845
|
-
density="compact">
|
|
846
|
-
</v-select>
|
|
847
|
-
<v-text-field
|
|
848
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
849
|
-
label="Time Value"
|
|
850
|
-
type="time"
|
|
851
|
-
:color="primaryColor"
|
|
852
|
-
variant="outlined"
|
|
853
|
-
density="compact">
|
|
854
|
-
</v-text-field>
|
|
855
|
-
</v-row>
|
|
856
|
-
</v-card-text>
|
|
857
|
-
</v-card>
|
|
829
|
+
return expandToNode `
|
|
830
|
+
<v-card class="mb-4">
|
|
831
|
+
<v-card-title>
|
|
832
|
+
${property.name}
|
|
833
|
+
${generateRemoveButton(document, property)}
|
|
834
|
+
</v-card-title>
|
|
835
|
+
<v-card-text>
|
|
836
|
+
<v-row>
|
|
837
|
+
<v-select
|
|
838
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
839
|
+
label="Mode"
|
|
840
|
+
:items="context.timeModes"
|
|
841
|
+
item-title="label"
|
|
842
|
+
item-value="value"
|
|
843
|
+
:color="primaryColor"
|
|
844
|
+
variant="outlined"
|
|
845
|
+
density="compact">
|
|
846
|
+
</v-select>
|
|
847
|
+
<v-text-field
|
|
848
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
849
|
+
label="Time Value"
|
|
850
|
+
type="time"
|
|
851
|
+
:color="primaryColor"
|
|
852
|
+
variant="outlined"
|
|
853
|
+
density="compact">
|
|
854
|
+
</v-text-field>
|
|
855
|
+
</v-row>
|
|
856
|
+
</v-card-text>
|
|
857
|
+
</v-card>
|
|
858
858
|
`;
|
|
859
859
|
}
|
|
860
860
|
if (isDateTimeExp(property)) {
|
|
861
|
-
return expandToNode `
|
|
862
|
-
<v-card class="mb-4">
|
|
863
|
-
<v-card-title>
|
|
864
|
-
${property.name}
|
|
865
|
-
${generateRemoveButton(document, property)}
|
|
866
|
-
</v-card-title>
|
|
867
|
-
<v-card-text>
|
|
868
|
-
<v-row>
|
|
869
|
-
<v-select
|
|
870
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
871
|
-
label="Mode"
|
|
872
|
-
:items="context.dateTimeModes"
|
|
873
|
-
item-title="label"
|
|
874
|
-
item-value="value"
|
|
875
|
-
:color="primaryColor"
|
|
876
|
-
variant="outlined"
|
|
877
|
-
density="compact">
|
|
878
|
-
</v-select>
|
|
879
|
-
<v-text-field
|
|
880
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
881
|
-
label="DateTime Value"
|
|
882
|
-
type="datetime-local"
|
|
883
|
-
:color="primaryColor"
|
|
884
|
-
variant="outlined"
|
|
885
|
-
density="compact">
|
|
886
|
-
</v-text-field>
|
|
887
|
-
</v-row>
|
|
888
|
-
</v-card-text>
|
|
889
|
-
</v-card>
|
|
861
|
+
return expandToNode `
|
|
862
|
+
<v-card class="mb-4">
|
|
863
|
+
<v-card-title>
|
|
864
|
+
${property.name}
|
|
865
|
+
${generateRemoveButton(document, property)}
|
|
866
|
+
</v-card-title>
|
|
867
|
+
<v-card-text>
|
|
868
|
+
<v-row>
|
|
869
|
+
<v-select
|
|
870
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
871
|
+
label="Mode"
|
|
872
|
+
:items="context.dateTimeModes"
|
|
873
|
+
item-title="label"
|
|
874
|
+
item-value="value"
|
|
875
|
+
:color="primaryColor"
|
|
876
|
+
variant="outlined"
|
|
877
|
+
density="compact">
|
|
878
|
+
</v-select>
|
|
879
|
+
<v-text-field
|
|
880
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
881
|
+
label="DateTime Value"
|
|
882
|
+
type="datetime-local"
|
|
883
|
+
:color="primaryColor"
|
|
884
|
+
variant="outlined"
|
|
885
|
+
density="compact">
|
|
886
|
+
</v-text-field>
|
|
887
|
+
</v-row>
|
|
888
|
+
</v-card-text>
|
|
889
|
+
</v-card>
|
|
890
890
|
`;
|
|
891
891
|
}
|
|
892
892
|
if (isDieField(property)) {
|
|
893
|
-
return expandToNode `
|
|
894
|
-
<v-card class="mb-4">
|
|
895
|
-
<v-card-title>
|
|
896
|
-
${property.name}
|
|
897
|
-
${generateRemoveButton(document, property)}
|
|
898
|
-
</v-card-title>
|
|
899
|
-
<v-card-text>
|
|
900
|
-
<v-row>
|
|
901
|
-
<v-select
|
|
902
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
903
|
-
label="Mode"
|
|
904
|
-
:items="context.dieModes"
|
|
905
|
-
item-title="label"
|
|
906
|
-
item-value="value"
|
|
907
|
-
:color="primaryColor"
|
|
908
|
-
variant="outlined"
|
|
909
|
-
density="compact">
|
|
910
|
-
</v-select>
|
|
911
|
-
<v-select
|
|
912
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
913
|
-
label="Die Type"
|
|
914
|
-
:items="context.dieTypes"
|
|
915
|
-
item-title="label"
|
|
916
|
-
item-value="value"
|
|
917
|
-
:color="primaryColor"
|
|
918
|
-
variant="outlined"
|
|
919
|
-
density="compact">
|
|
920
|
-
</v-select>
|
|
921
|
-
</v-row>
|
|
922
|
-
</v-card-text>
|
|
923
|
-
</v-card>
|
|
893
|
+
return expandToNode `
|
|
894
|
+
<v-card class="mb-4">
|
|
895
|
+
<v-card-title>
|
|
896
|
+
${property.name}
|
|
897
|
+
${generateRemoveButton(document, property)}
|
|
898
|
+
</v-card-title>
|
|
899
|
+
<v-card-text>
|
|
900
|
+
<v-row>
|
|
901
|
+
<v-select
|
|
902
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
903
|
+
label="Mode"
|
|
904
|
+
:items="context.dieModes"
|
|
905
|
+
item-title="label"
|
|
906
|
+
item-value="value"
|
|
907
|
+
:color="primaryColor"
|
|
908
|
+
variant="outlined"
|
|
909
|
+
density="compact">
|
|
910
|
+
</v-select>
|
|
911
|
+
<v-select
|
|
912
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}"
|
|
913
|
+
label="Die Type"
|
|
914
|
+
:items="context.dieTypes"
|
|
915
|
+
item-title="label"
|
|
916
|
+
item-value="value"
|
|
917
|
+
:color="primaryColor"
|
|
918
|
+
variant="outlined"
|
|
919
|
+
density="compact">
|
|
920
|
+
</v-select>
|
|
921
|
+
</v-row>
|
|
922
|
+
</v-card-text>
|
|
923
|
+
</v-card>
|
|
924
924
|
`;
|
|
925
925
|
}
|
|
926
926
|
if (isDiceField(property)) {
|
|
927
|
-
return expandToNode `
|
|
928
|
-
<v-card class="mb-4">
|
|
929
|
-
<v-card-title>
|
|
930
|
-
${property.name}
|
|
931
|
-
${generateRemoveButton(document, property)}
|
|
932
|
-
</v-card-title>
|
|
933
|
-
<v-card-text>
|
|
934
|
-
<v-row>
|
|
935
|
-
<v-select
|
|
936
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
937
|
-
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
938
|
-
label="Mode"
|
|
939
|
-
:items="context.diceModes"
|
|
940
|
-
item-title="label"
|
|
941
|
-
item-value="value"
|
|
942
|
-
:color="primaryColor"
|
|
943
|
-
variant="outlined"
|
|
944
|
-
density="compact">
|
|
945
|
-
</v-select>
|
|
946
|
-
<v-number-input
|
|
947
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.number"
|
|
948
|
-
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.number')"
|
|
949
|
-
label="Number of Dice"
|
|
950
|
-
:color="primaryColor"
|
|
951
|
-
variant="outlined"
|
|
952
|
-
density="compact">
|
|
953
|
-
</v-number-input>
|
|
954
|
-
<v-select
|
|
955
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.die"
|
|
956
|
-
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.die')"
|
|
957
|
-
label="Die Type"
|
|
958
|
-
:items="context.dieTypes"
|
|
959
|
-
item-title="label"
|
|
960
|
-
item-value="value"
|
|
961
|
-
:color="primaryColor"
|
|
962
|
-
variant="outlined"
|
|
963
|
-
density="compact">
|
|
964
|
-
</v-select>
|
|
965
|
-
</v-row>
|
|
966
|
-
</v-card-text>
|
|
967
|
-
</v-card>
|
|
927
|
+
return expandToNode `
|
|
928
|
+
<v-card class="mb-4">
|
|
929
|
+
<v-card-title>
|
|
930
|
+
${property.name}
|
|
931
|
+
${generateRemoveButton(document, property)}
|
|
932
|
+
</v-card-title>
|
|
933
|
+
<v-card-text>
|
|
934
|
+
<v-row>
|
|
935
|
+
<v-select
|
|
936
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
937
|
+
:model-value="getChangeMode('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}')"
|
|
938
|
+
label="Mode"
|
|
939
|
+
:items="context.diceModes"
|
|
940
|
+
item-title="label"
|
|
941
|
+
item-value="value"
|
|
942
|
+
:color="primaryColor"
|
|
943
|
+
variant="outlined"
|
|
944
|
+
density="compact">
|
|
945
|
+
</v-select>
|
|
946
|
+
<v-number-input
|
|
947
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.number"
|
|
948
|
+
:model-value="getChangeNumberValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.number')"
|
|
949
|
+
label="Number of Dice"
|
|
950
|
+
:color="primaryColor"
|
|
951
|
+
variant="outlined"
|
|
952
|
+
density="compact">
|
|
953
|
+
</v-number-input>
|
|
954
|
+
<v-select
|
|
955
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.die"
|
|
956
|
+
:model-value="getChangeValue('${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.die')"
|
|
957
|
+
label="Die Type"
|
|
958
|
+
:items="context.dieTypes"
|
|
959
|
+
item-title="label"
|
|
960
|
+
item-value="value"
|
|
961
|
+
:color="primaryColor"
|
|
962
|
+
variant="outlined"
|
|
963
|
+
density="compact">
|
|
964
|
+
</v-select>
|
|
965
|
+
</v-row>
|
|
966
|
+
</v-card-text>
|
|
967
|
+
</v-card>
|
|
968
968
|
`;
|
|
969
969
|
}
|
|
970
970
|
if (isMeasuredTemplateField(property)) {
|
|
971
|
-
return expandToNode `
|
|
972
|
-
<v-card class="mb-4">
|
|
973
|
-
<v-card-title>
|
|
974
|
-
${property.name}
|
|
975
|
-
${generateRemoveButton(document, property)}
|
|
976
|
-
</v-card-title>
|
|
977
|
-
<v-card-text>
|
|
978
|
-
<v-row>
|
|
979
|
-
<v-select
|
|
980
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
981
|
-
label="Mode"
|
|
982
|
-
:items="context.templateModes"
|
|
983
|
-
item-title="label"
|
|
984
|
-
item-value="value"
|
|
985
|
-
:color="primaryColor"
|
|
986
|
-
variant="outlined"
|
|
987
|
-
density="compact">
|
|
988
|
-
</v-select>
|
|
989
|
-
<v-text-field
|
|
990
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.distance"
|
|
991
|
-
label="Distance"
|
|
992
|
-
:color="primaryColor"
|
|
993
|
-
variant="outlined"
|
|
994
|
-
density="compact">
|
|
995
|
-
</v-text-field>
|
|
996
|
-
<v-select
|
|
997
|
-
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.type"
|
|
998
|
-
label="Template Type"
|
|
999
|
-
:items="context.templateTypes"
|
|
1000
|
-
item-title="label"
|
|
1001
|
-
item-value="value"
|
|
1002
|
-
:color="primaryColor"
|
|
1003
|
-
variant="outlined"
|
|
1004
|
-
density="compact">
|
|
1005
|
-
</v-select>
|
|
1006
|
-
</v-row>
|
|
1007
|
-
</v-card-text>
|
|
1008
|
-
</v-card>
|
|
971
|
+
return expandToNode `
|
|
972
|
+
<v-card class="mb-4">
|
|
973
|
+
<v-card-title>
|
|
974
|
+
${property.name}
|
|
975
|
+
${generateRemoveButton(document, property)}
|
|
976
|
+
</v-card-title>
|
|
977
|
+
<v-card-text>
|
|
978
|
+
<v-row>
|
|
979
|
+
<v-select
|
|
980
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}-type"
|
|
981
|
+
label="Mode"
|
|
982
|
+
:items="context.templateModes"
|
|
983
|
+
item-title="label"
|
|
984
|
+
item-value="value"
|
|
985
|
+
:color="primaryColor"
|
|
986
|
+
variant="outlined"
|
|
987
|
+
density="compact">
|
|
988
|
+
</v-select>
|
|
989
|
+
<v-text-field
|
|
990
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.distance"
|
|
991
|
+
label="Distance"
|
|
992
|
+
:color="primaryColor"
|
|
993
|
+
variant="outlined"
|
|
994
|
+
density="compact">
|
|
995
|
+
</v-text-field>
|
|
996
|
+
<v-select
|
|
997
|
+
name="${document.name.toLowerCase()}.system.${property.name.toLowerCase()}.type"
|
|
998
|
+
label="Template Type"
|
|
999
|
+
:items="context.templateTypes"
|
|
1000
|
+
item-title="label"
|
|
1001
|
+
item-value="value"
|
|
1002
|
+
:color="primaryColor"
|
|
1003
|
+
variant="outlined"
|
|
1004
|
+
density="compact">
|
|
1005
|
+
</v-select>
|
|
1006
|
+
</v-row>
|
|
1007
|
+
</v-card-text>
|
|
1008
|
+
</v-card>
|
|
1009
1009
|
`;
|
|
1010
1010
|
}
|
|
1011
|
-
return expandToNode `
|
|
1012
|
-
<v-alert text="Unknown Property ${property.name} (${property.$type})" type="warning" density="compact" class="ga-2 ma-1" variant="outlined"></v-alert>
|
|
1011
|
+
return expandToNode `
|
|
1012
|
+
<v-alert text="Unknown Property ${property.name} (${property.$type})" type="warning" density="compact" class="ga-2 ma-1" variant="outlined"></v-alert>
|
|
1013
1013
|
`;
|
|
1014
1014
|
}
|
|
1015
1015
|
}
|