Merge feature-nested-sets into develop
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import valueToCoins from '/imports/client/ui/utility/valueToCoins.js';
|
||||
import valueToCoins from '/imports/client/ui/utility/valueToCoins';
|
||||
|
||||
export default {
|
||||
props:{
|
||||
|
||||
@@ -101,9 +101,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import vuetifyColors from 'vuetify/es5/util/colors';
|
||||
import { kebabToCamelCase, camelToKebabCase } from '/imports/client/ui/utility/swapCase.js';
|
||||
import { kebabToCamelCase, camelToKebabCase } from '/imports/client/ui/utility/swapCase';
|
||||
|
||||
function colorToHex(color, shade = 'base'){
|
||||
if (!color) return;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import UserImages from '/imports/api/files/UserImages.js';
|
||||
import UserImages from '/imports/api/files/UserImages';
|
||||
|
||||
export default {
|
||||
data(){return {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import createListOfProperties from '/imports/client/ui/properties/forms/shared/lists/createListOfProperties.js';
|
||||
import createListOfProperties from '/imports/client/ui/properties/forms/shared/lists/createListOfProperties';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import CardHighlight from '/imports/client/ui/components/CardHighlight.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
import { format } from 'date-fns';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -85,8 +85,8 @@
|
||||
|
||||
<script lang="js">
|
||||
import SvgIcon from '/imports/client/ui/components/global/SvgIcon.vue';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import { findIcons } from '/imports/api/icons/Icons.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
import { findIcons } from '/imports/api/icons/Icons';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<script lang="js">
|
||||
import { debounce } from 'lodash';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
inject: {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
import OutlinedInput from '/imports/client/ui/properties/viewers/shared/OutlinedInput.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin.js';
|
||||
import SmartInput from '/imports/client/ui/components/global/SmartInputMixin';
|
||||
|
||||
export default {
|
||||
mixins: [SmartInput],
|
||||
|
||||
@@ -185,12 +185,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import PropertyIcon from '/imports/client/ui/properties/shared/PropertyIcon.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import { assertUserHasPaidBenefits } from '/imports/api/users/patreon/tiers.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import { assertUserHasPaidBenefits } from '/imports/api/users/patreon/tiers';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import numberToSignedString from '../../../../api/utility/numberToSignedString.js';
|
||||
import numberToSignedString from '../../../../api/utility/numberToSignedString';
|
||||
export default {
|
||||
props: {
|
||||
attributeVarName: {
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<script lang="js">
|
||||
// Modified from https://gitlab.com/tozd/vue/snackbar-queue
|
||||
import { globalState } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { globalState } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import LogContent from '/imports/client/ui/log/LogContent.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -83,9 +83,10 @@
|
||||
* the tree view shows off the full character structure, and where each part of
|
||||
* character comes from.
|
||||
**/
|
||||
import { canBeParent } from '/imports/api/parenting/parenting.js';
|
||||
import { getPropertyIcon } from '/imports/constants/PROPERTIES.js';
|
||||
import { canBeParent } from '/imports/api/parenting/parentingFunctions';
|
||||
import { getPropertyIcon } from '/imports/constants/PROPERTIES';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import { isAncestor } from '/imports/api/parenting/parentingFunctions';
|
||||
import { some } from 'lodash';
|
||||
|
||||
export default {
|
||||
@@ -121,9 +122,9 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
expanded: this.startExpanded || this.node._ancestorOfMatchedDocument ||
|
||||
some(this.selectedNode?.ancestors, ref => ref.id === this.node._id) ||
|
||||
false,
|
||||
expanded: this.startExpanded ||
|
||||
this.node._ancestorOfMatchedDocument ||
|
||||
isAncestor(this.node, this.selectedNode),
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -152,8 +153,8 @@ export default {
|
||||
this.expanded = !!value ||
|
||||
some(this.selectedNode?.ancestors, ref => ref.id === this.node._id);
|
||||
},
|
||||
'selectedNode.ancestors'(value) {
|
||||
this.expanded = !!some(value, ref => ref.id === this.node._id) || this.expanded;
|
||||
'selectedNode.parentId'() {
|
||||
this.expanded = isAncestor(this.node, this.selectedNode) || this.expanded;
|
||||
},
|
||||
},
|
||||
beforeCreate() {
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<script lang="js">
|
||||
import draggable from 'vuedraggable';
|
||||
import TreeNode from '/imports/client/ui/components/tree/TreeNode.vue';
|
||||
import { isParentAllowed } from '/imports/api/parenting/parenting.js';
|
||||
import { isParentAllowed } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -103,8 +103,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import escapeRegex from '/imports/api/utility/escapeRegex.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import escapeRegex from '/imports/api/utility/escapeRegex';
|
||||
|
||||
const filterOptions = [];
|
||||
for (let key in PROPERTIES) {
|
||||
|
||||
@@ -152,9 +152,9 @@
|
||||
import { union, without, debounce } from 'lodash';
|
||||
import FormSection, { FormSections } from '/imports/client/ui/properties/forms/shared/FormSection.vue';
|
||||
import LibraryList from '/imports/client/ui/library/LibraryList.vue';
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections.js';
|
||||
import { changeAllowedLibraries, toggleAllUserLibraries } from '/imports/api/creature/creatures/methods/changeAllowedLibraries.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections';
|
||||
import { changeAllowedLibraries, toggleAllUserLibraries } from '/imports/api/creature/creatures/methods/changeAllowedLibraries';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import updateCreature from '/imports/api/creature/creatures/methods/updateCreature.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import updateCreature from '/imports/api/creature/creatures/methods/updateCreature';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import CreatureForm from '/imports/client/ui/creature/CreatureForm.vue'
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import ColorPicker from '/imports/client/ui/components/ColorPicker.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import restCreature from '/imports/api/creature/creatures/methods/restCreature.js';
|
||||
import restCreature from '/imports/api/creature/creatures/methods/restCreature';
|
||||
|
||||
export default {
|
||||
inject: {
|
||||
|
||||
@@ -58,15 +58,15 @@
|
||||
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders';
|
||||
import CreatureFolderList from '/imports/client/ui/creature/creatureList/CreatureFolderList.vue';
|
||||
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles.js';
|
||||
import archiveCreatureToFile from '/imports/api/creature/archive/methods/archiveCreatureToFile.js';
|
||||
import restoreCreatureFromFile from '/imports/api/creature/archive/methods/restoreCreatureFromFile.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import ArchiveCreatureFiles from '/imports/api/creature/archive/ArchiveCreatureFiles';
|
||||
import archiveCreatureToFile from '/imports/api/creature/archive/methods/archiveCreatureToFile';
|
||||
import restoreCreatureFromFile from '/imports/api/creature/archive/methods/restoreCreatureFromFile';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import { uniq, flatten } from 'lodash';
|
||||
import { characterSlotsRemaining } from '/imports/api/creature/creatures/methods/assertHasCharacterSlots.js';
|
||||
import { characterSlotsRemaining } from '/imports/api/creature/creatures/methods/assertHasCharacterSlots';
|
||||
|
||||
const characterTransform = function(char){
|
||||
char.url = `/character/${char._id}/${char.urlName || '-'}`;
|
||||
|
||||
@@ -127,10 +127,11 @@
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import FillSlotButton from '/imports/client/ui/creature/buildTree/FillSlotButton.vue';
|
||||
import { some } from 'lodash';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty.js';
|
||||
import restoreProperty from '/imports/api/creature/creatureProperties/methods/restoreProperty.js';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty';
|
||||
import restoreProperty from '/imports/api/creature/creatureProperties/methods/restoreProperty';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle';
|
||||
import { isAncestor } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
name: 'BuildTreeNode',
|
||||
@@ -233,11 +234,10 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
'node._ancestorOfMatchedDocument'(value){
|
||||
this.expanded = !!value ||
|
||||
some(this.selectedNode?.ancestors, ref => ref.id === this.node._id);
|
||||
this.expanded = !!value || isAncestor(this.node, this.selectedNode);
|
||||
},
|
||||
'selectedNode.ancestors'(value){
|
||||
this.expanded = !!some(value, ref => ref.id === this.node._id) || this.expanded;
|
||||
'selectedNode.parentId'(){
|
||||
this.expanded = isAncestor(this.node, this.selectedNode) || this.expanded;
|
||||
},
|
||||
},
|
||||
beforeCreate() {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
|
||||
export default {
|
||||
inject: {
|
||||
|
||||
@@ -110,12 +110,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import { defer, union, without } from 'lodash';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import insertCreature from '/imports/api/creature/creatures/methods/insertCreature.js';
|
||||
import insertCreature from '/imports/api/creature/creatures/methods/insertCreature';
|
||||
import LibraryList from '/imports/client/ui/library/LibraryList.vue';
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections.js';
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import removeCreature from '/imports/api/creature/creatures/methods/removeCreature.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import removeCreature from '/imports/api/creature/creatures/methods/removeCreature';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
<script lang="js">
|
||||
//TODO add a "no character found" screen if shown on a false address
|
||||
// or on a character the user does not have permission to view
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import StatsTab from '/imports/client/ui/creature/character/characterSheetTabs/StatsTab.vue';
|
||||
import FeaturesTab from '/imports/client/ui/creature/character/characterSheetTabs/FeaturesTab.vue';
|
||||
import InventoryTab from '/imports/client/ui/creature/character/characterSheetTabs/InventoryTab.vue';
|
||||
@@ -139,9 +139,9 @@ import SpellsTab from '/imports/client/ui/creature/character/characterSheetTabs/
|
||||
import CharacterTab from '/imports/client/ui/creature/character/characterSheetTabs/JournalTab.vue';
|
||||
import BuildTab from '/imports/client/ui/creature/character/characterSheetTabs/BuildTab.vue';
|
||||
import TreeTab from '/imports/client/ui/creature/character/characterSheetTabs/TreeTab.vue';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import CreatureLogs from '/imports/api/creature/log/CreatureLogs.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import CreatureLogs from '/imports/api/creature/log/CreatureLogs';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import CharacterSheetFab from '/imports/client/ui/creature/character/CharacterSheetFab.vue';
|
||||
import ActionsTab from '/imports/client/ui/creature/character/characterSheetTabs/ActionsTab.vue';
|
||||
|
||||
|
||||
@@ -40,19 +40,18 @@
|
||||
|
||||
<script lang="js">
|
||||
import LabeledFab from '/imports/client/ui/components/LabeledFab.vue';
|
||||
import { getHighestOrder } from '/imports/api/parenting/order.js';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import fetchDocByRef from '/imports/api/parenting/fetchDocByRef.js';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
import { fetchDocByRef } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
function getParentAndOrderFromSelectedTreeNode(creatureId, $store){
|
||||
function getParentFromSelectedTreeNode(creatureId, $store){
|
||||
// find the parent based on the currently selected property
|
||||
let el = document.querySelector('.tree-tab .tree-node-title.primary--text');
|
||||
let selectedComponent = el && el.parentElement.__vue__.$parent;
|
||||
let parentRef, order;
|
||||
let parentRef;
|
||||
const onTreeTab = $store.getters.tabNameById(creatureId) === 'tree';
|
||||
if (onTreeTab && selectedComponent){
|
||||
if (selectedComponent.showExpanded){
|
||||
@@ -60,22 +59,13 @@
|
||||
id: selectedComponent.node._id,
|
||||
collection: 'creatureProperties',
|
||||
};
|
||||
order = getHighestOrder({
|
||||
collection: CreatureProperties,
|
||||
ancestorId: parentRef.id,
|
||||
}) + 0.5;
|
||||
} else {
|
||||
parentRef = selectedComponent.node.parent;
|
||||
order = selectedComponent.node.order + 0.5;
|
||||
}
|
||||
} else {
|
||||
parentRef = {collection: 'creatures', id: creatureId};
|
||||
order = getHighestOrder({
|
||||
collection: CreatureProperties,
|
||||
ancestorId: parentRef.id,
|
||||
}) + 0.5;
|
||||
}
|
||||
return {parentRef, order}
|
||||
return parentRef;
|
||||
}
|
||||
|
||||
function hideFab(){
|
||||
@@ -144,7 +134,7 @@
|
||||
let creatureId = this.creatureId;
|
||||
let fab = hideFab();
|
||||
|
||||
let {parentRef, order } = getParentAndOrderFromSelectedTreeNode(creatureId, this.$store);
|
||||
let parentRef = getParentFromSelectedTreeNode(creatureId, this.$store);
|
||||
let parent;
|
||||
try {
|
||||
parent = fetchDocByRef(parentRef);
|
||||
@@ -168,13 +158,11 @@
|
||||
if (Array.isArray(result)){
|
||||
revealFab(fab);
|
||||
let nodeIds = result;
|
||||
let id = insertPropertyFromLibraryNode.call({nodeIds, parentRef, order});
|
||||
let id = insertPropertyFromLibraryNode.call({nodeIds, parentRef});
|
||||
return forcedType ? id : `tree-node-${id}`;
|
||||
} else {
|
||||
revealFab(fab);
|
||||
let creatureProperty = result;
|
||||
// Get order and parent
|
||||
creatureProperty.order = order;
|
||||
// Insert the property
|
||||
let id = insertProperty.call({creatureProperty, parentRef});
|
||||
return forcedType ? id : `tree-node-${id}`;
|
||||
|
||||
@@ -176,16 +176,16 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import removeCreature from '/imports/api/creature/creatures/methods/removeCreature.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import removeCreature from '/imports/api/creature/creatures/methods/removeCreature';
|
||||
import { mapMutations } from 'vuex';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import { updateUserSharePermissions } from '/imports/api/sharing/sharing.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import { updateUserSharePermissions } from '/imports/api/sharing/sharing';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import CharacterSheetFab from '/imports/client/ui/creature/character/CharacterSheetFab.vue';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import SharedIcon from '/imports/client/ui/components/SharedIcon.vue';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName.js';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -63,18 +63,17 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import PropertyToolbar from '/imports/client/ui/components/propertyToolbar.vue';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import propertyFormIndex from '/imports/client/ui/properties/forms/shared/propertyFormIndex.js';
|
||||
import propertyViewerIndex from '/imports/client/ui/properties/viewers/shared/propertyViewerIndex.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import propertyFormIndex from '/imports/client/ui/properties/forms/shared/propertyFormIndex';
|
||||
import propertyViewerIndex from '/imports/client/ui/properties/viewers/shared/propertyViewerIndex';
|
||||
import CreaturePropertiesTree from '/imports/client/ui/creature/creatureProperties/CreaturePropertiesTree.vue';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import { getHighestOrder } from '/imports/api/parenting/order.js';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
|
||||
let formIndex = {};
|
||||
for (let key in propertyFormIndex){
|
||||
@@ -163,18 +162,12 @@ export default {
|
||||
id: parentPropertyId,
|
||||
collection: 'creatures',
|
||||
};
|
||||
let order = getHighestOrder({
|
||||
collection: CreatureProperties,
|
||||
ancestorId: parentRef.id,
|
||||
}) + 0.5;
|
||||
if (Array.isArray(result)){
|
||||
let nodeIds = result;
|
||||
let id = insertPropertyFromLibraryNode.call({nodeIds, parentRef, order});
|
||||
let id = insertPropertyFromLibraryNode.call({ nodeIds, parentRef });
|
||||
return `tree-node-${id}`;
|
||||
} else {
|
||||
let creatureProperty = result;
|
||||
// Get order and parent
|
||||
creatureProperty.order = order;
|
||||
// Insert the property
|
||||
let id = insertProperty.call({creatureProperty, parentRef});
|
||||
return `tree-node-${id}`;
|
||||
|
||||
@@ -38,8 +38,9 @@
|
||||
<script lang="js">
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import ActionCard from '/imports/client/ui/properties/components/actions/ActionCard.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -56,10 +57,11 @@ export default {
|
||||
data() { return {
|
||||
tabName: 'actions',
|
||||
}},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
actions() {
|
||||
const folderIds = CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -68,9 +70,7 @@ export default {
|
||||
}, { fields: { _id: 1 } }).map(folder => folder._id);
|
||||
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parent.id': {
|
||||
$nin: folderIds,
|
||||
},
|
||||
|
||||
@@ -199,18 +199,19 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import { nodeArrayToTree } from '/imports/api/parenting/nodesToTree.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import { docsToForest as nodeArrayToTree } from '/imports/api/parenting/parentingFunctions';
|
||||
import BuildTreeNodeList from '/imports/client/ui/creature/buildTree/BuildTreeNodeList.vue';
|
||||
import SlotCardsToFill from '/imports/client/ui/creature/slots/SlotCardsToFill.vue';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
import CharacterErrors from '/imports/client/ui/creature/character/errors/CharacterErrors.vue';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty.js';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
function traverse(tree, callback, parents = []){
|
||||
tree.forEach(node => {
|
||||
@@ -271,6 +272,7 @@ export default {
|
||||
return this.hiddenSlots.length + this.hiddenPointBuys.length;
|
||||
},
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
creature(){
|
||||
return Creatures.findOne(this.creatureId);
|
||||
@@ -281,7 +283,7 @@ export default {
|
||||
hiddenPointBuys() {
|
||||
return CreatureProperties.find({
|
||||
type: 'pointBuy',
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
ignored: true,
|
||||
pointsLeft: {$ne: 0},
|
||||
removed: {$ne: true},
|
||||
@@ -291,7 +293,7 @@ export default {
|
||||
hiddenSlots(){
|
||||
return CreatureProperties.find({
|
||||
type: 'propertySlot',
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
ignored: true,
|
||||
$and: [
|
||||
{
|
||||
@@ -313,7 +315,7 @@ export default {
|
||||
},
|
||||
classProperties(){
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'class',
|
||||
removed: {$ne: true},
|
||||
inactive: {$ne: true},
|
||||
@@ -324,7 +326,7 @@ export default {
|
||||
classLevels() {
|
||||
const classVariableNames = this.classProperties.map(c => c.variableName)
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'classLevel',
|
||||
variableName: {$nin: classVariableNames},
|
||||
removed: {$ne: true},
|
||||
@@ -335,7 +337,7 @@ export default {
|
||||
},
|
||||
slotBuildTree(){
|
||||
const slots = CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: {$in: ['propertySlot', 'pointBuy']},
|
||||
$or: [
|
||||
{'slotCondition.value': {$nin: [false, 0, '']}},
|
||||
|
||||
@@ -32,10 +32,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import FeatureCard from '/imports/client/ui/properties/components/features/FeatureCard.vue';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -54,10 +55,11 @@ export default {
|
||||
tabName: 'features',
|
||||
};
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
features() {
|
||||
const folderIds = CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -66,9 +68,7 @@ export default {
|
||||
}, { fields: { _id: 1 } }).map(folder => folder._id);
|
||||
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parent.id': {
|
||||
$nin: folderIds,
|
||||
},
|
||||
|
||||
@@ -106,18 +106,19 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import ContainerCard from '/imports/client/ui/properties/components/inventory/ContainerCard.vue';
|
||||
import ToolbarCard from '/imports/client/ui/components/ToolbarCard.vue';
|
||||
import ItemList from '/imports/client/ui/properties/components/inventory/ItemList.vue';
|
||||
import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/getParentRefByTag.js';
|
||||
import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS.js';
|
||||
import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/getParentRefByTag';
|
||||
import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS';
|
||||
import CoinValue from '/imports/client/ui/components/CoinValue.vue';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -140,10 +141,11 @@ export default {
|
||||
tabName: 'inventory',
|
||||
};
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
folderIds() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -153,9 +155,7 @@ export default {
|
||||
},
|
||||
containers() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parent.id': {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
@@ -164,7 +164,7 @@ export default {
|
||||
inactive: { $ne: true },
|
||||
}, {
|
||||
sort: { order: 1 },
|
||||
});
|
||||
}).fetch();
|
||||
},
|
||||
creature() {
|
||||
return Creatures.findOne(this.creatureId, {
|
||||
@@ -179,11 +179,9 @@ export default {
|
||||
},
|
||||
containersWithoutAncestorContainers() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.containerIds,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.containers),
|
||||
parentId: {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
type: 'container',
|
||||
@@ -195,11 +193,9 @@ export default {
|
||||
},
|
||||
carriedItems() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.containerIds,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.containers),
|
||||
parentId: {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
type: 'item',
|
||||
@@ -213,9 +209,7 @@ export default {
|
||||
},
|
||||
equippedItems() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'item',
|
||||
equipped: true,
|
||||
removed: { $ne: true },
|
||||
@@ -246,9 +240,6 @@ export default {
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
containerIds() {
|
||||
return this.containers.map(container => container._id);
|
||||
},
|
||||
weightCarried() {
|
||||
return stripFloatingPointOddities(
|
||||
this.variables &&
|
||||
|
||||
@@ -34,11 +34,12 @@
|
||||
|
||||
<script lang="js">
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import NoteCard from '/imports/client/ui/properties/components/persona/NoteCard.vue';
|
||||
import CreatureSummary from '/imports/client/ui/creature/character/CreatureSummary.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -58,11 +59,12 @@ export default {
|
||||
tabName: 'journal',
|
||||
};
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
notes() {
|
||||
// Get all the notes that aren't children of group folders or of other displayed notes
|
||||
const folderIds = CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -71,27 +73,23 @@ export default {
|
||||
}, { fields: { _id: 1 } }).map(folder => folder._id);
|
||||
|
||||
const noteFilter = {
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parentId': {
|
||||
$nin: folderIds,
|
||||
},
|
||||
type: 'note',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
};
|
||||
const noteIds = CreatureProperties.find(noteFilter, {
|
||||
sort: { order: 1 },
|
||||
fields: {_id: 1},
|
||||
}).map(note => note._id);
|
||||
|
||||
noteFilter['ancestors.id'] = {
|
||||
$eq: this.creatureId,
|
||||
$nin: noteIds,
|
||||
}
|
||||
const allNotes = CreatureProperties.find(noteFilter, {
|
||||
sort: { left: 1 },
|
||||
});
|
||||
|
||||
return CreatureProperties.find(noteFilter, {
|
||||
return CreatureProperties.find({
|
||||
...noteFilter,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(allNotes),
|
||||
}, {
|
||||
sort: {order: 1},
|
||||
});
|
||||
},
|
||||
|
||||
@@ -50,11 +50,12 @@
|
||||
|
||||
<script lang="js">
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import SpellListCard from '/imports/client/ui/properties/components/spells/SpellListCard.vue';
|
||||
import SpellList from '/imports/client/ui/properties/components/spells/SpellList.vue';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin.js';
|
||||
import tabFoldersMixin from '/imports/client/ui/properties/components/folders/tabFoldersMixin';
|
||||
import SpellSlotCard from '/imports/client/ui/properties/components/attributes/SpellSlotCard.vue';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -76,10 +77,11 @@ export default {
|
||||
tabName: 'spells',
|
||||
}
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
folderIds() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -89,7 +91,7 @@ export default {
|
||||
},
|
||||
hasSpellSlots() {
|
||||
return !!CreatureProperties.findOne({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
inactive: { $ne: true },
|
||||
removed: { $ne: true },
|
||||
overridden: { $ne: true },
|
||||
@@ -100,10 +102,8 @@ export default {
|
||||
},
|
||||
spellSlots() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parentId': {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
inactive: { $ne: true },
|
||||
@@ -121,22 +121,20 @@ export default {
|
||||
},
|
||||
spellLists() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
'parentId': {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
type: 'spellList',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
}, {
|
||||
sort: { order: 1 }
|
||||
});
|
||||
sort: { left: 1 }
|
||||
}).fetch();
|
||||
},
|
||||
hasSpells() {
|
||||
return !!CreatureProperties.findOne({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'spell',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -144,11 +142,9 @@ export default {
|
||||
},
|
||||
spellsWithoutList() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.spellListIds,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.spellLists),
|
||||
parentId: {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
type: 'spell',
|
||||
@@ -164,11 +160,9 @@ export default {
|
||||
},
|
||||
spellListsWithoutAncestorSpellLists() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.spellListIds,
|
||||
},
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.spellLists),
|
||||
parentId: {
|
||||
$nin: this.folderIds,
|
||||
},
|
||||
type: 'spellList',
|
||||
|
||||
@@ -390,9 +390,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty.js';
|
||||
import damageProperty from '/imports/api/creature/creatureProperties/methods/damageProperty.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty';
|
||||
import damageProperty from '/imports/api/creature/creatureProperties/methods/damageProperty';
|
||||
import HealthBar from '/imports/client/ui/properties/components/attributes/HealthBar.vue';
|
||||
import AttributeCard from '/imports/client/ui/properties/components/attributes/AttributeCard.vue';
|
||||
import AbilityListTile from '/imports/client/ui/properties/components/attributes/AbilityListTile.vue';
|
||||
@@ -402,15 +402,16 @@ import HitDiceListTile from '/imports/client/ui/properties/components/attributes
|
||||
import SkillListTile from '/imports/client/ui/properties/components/skills/SkillListTile.vue';
|
||||
import ResourceCard from '/imports/client/ui/properties/components/attributes/ResourceCard.vue';
|
||||
import RestButton from '/imports/client/ui/creature/RestButton.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import ToggleCard from '/imports/client/ui/properties/components/toggles/ToggleCard.vue';
|
||||
import BuffListItem from '/imports/client/ui/properties/components/buffs/BuffListItem.vue';
|
||||
import SpellSlotCard from '/imports/client/ui/properties/components/attributes/SpellSlotCard.vue';
|
||||
import EventButton from '/imports/client/ui/properties/components/actions/EventButton.vue';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import FolderGroupCard from '/imports/client/ui/properties/components/folders/FolderGroupCard.vue';
|
||||
import { get, set, uniqBy } from 'lodash';
|
||||
import { nodeArrayToTree } from '/imports/api/parenting/nodesToTree.js'
|
||||
import { docsToForest } from '/imports/api/parenting/parentingFunctions';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
function walkDown(forest, callback){
|
||||
let stack = [...forest];
|
||||
@@ -516,12 +517,13 @@ export default {
|
||||
return uniqBy(conditionals, '_id');
|
||||
},
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
properties() {
|
||||
const creature = this.creature;
|
||||
if (!creature) return;
|
||||
const folderIds = CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'folder',
|
||||
groupStats: true,
|
||||
hideStatsGroup: true,
|
||||
@@ -530,8 +532,8 @@ export default {
|
||||
}, { fields: { _id: 1 } }).map(folder => folder._id);
|
||||
|
||||
const filter = {
|
||||
'ancestors.id': this.creatureId,
|
||||
'parent.id': {
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
parentId: {
|
||||
$nin: folderIds,
|
||||
},
|
||||
$or: [
|
||||
@@ -555,11 +557,11 @@ export default {
|
||||
if (creature.settings.hideUnusedStats) {
|
||||
filter.hide = { $ne: true };
|
||||
}
|
||||
const allProps = CreatureProperties.find(filter, { sort: { order: -1 } });
|
||||
const forest = nodeArrayToTree(allProps);
|
||||
const allProps = CreatureProperties.find(filter, { sort: { order: -1 } }).fetch();
|
||||
const forest = docsToForest(allProps);
|
||||
const properties = { folder: {}, attribute: {}, skill: {} };
|
||||
walkDown(forest, node => {
|
||||
const prop = node.node;
|
||||
const prop = node.doc
|
||||
const { propPath, skipChildren } = propertyHandlers[prop.type]?.(prop) ||
|
||||
{ propPath: prop.type };
|
||||
if (propPath) {
|
||||
@@ -585,7 +587,7 @@ export default {
|
||||
toggles() {
|
||||
return CreatureProperties.find({
|
||||
type: 'toggle',
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
removed: { $ne: true },
|
||||
deactivatedByAncestor: { $ne: true },
|
||||
deactivatedByToggle: { $ne: true },
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
import CreaturePropertiesTree from '/imports/client/ui/creature/creatureProperties/CreaturePropertiesTree.vue';
|
||||
import CreaturePropertyDialog from '/imports/client/ui/creature/creatureProperties/CreaturePropertyDialog.vue';
|
||||
import TreeSearchInput from '/imports/client/ui/components/tree/TreeSearchInput.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import DependencyLoopError from '/imports/client/ui/creature/character/errors/DependencyLoopError.vue';
|
||||
import updateCreature from '/imports/api/creature/creatures/methods/updateCreature.js';
|
||||
import updateCreature from '/imports/api/creature/creatures/methods/updateCreature';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import { reverse } from 'lodash';
|
||||
|
||||
|
||||
@@ -83,14 +83,15 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import PrintedStats from '/imports/client/ui/creature/character/printedCharacterSheet/PrintedStats.vue';
|
||||
import PrintedInventory from '/imports/client/ui/creature/character/printedCharacterSheet/PrintedInventory.vue';
|
||||
import PrintedSpells from '/imports/client/ui/creature/character/printedCharacterSheet/PrintedSpells.vue';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import QrcodeVue from 'qrcode.vue'
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -138,6 +139,7 @@ export default {
|
||||
].sort((a, b) => a.order - b.order);
|
||||
},
|
||||
},
|
||||
// @ts-ignore reactiveProvide isn't defined on vue
|
||||
reactiveProvide: {
|
||||
name: 'context',
|
||||
include: ['creatureId', 'editPermission'],
|
||||
@@ -182,7 +184,7 @@ export default {
|
||||
race() {
|
||||
if (this.variables?.race?.value?.valueType === 'string') return this.variables.race.value.value;
|
||||
const prop = CreatureProperties.findOne({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
tags: 'race',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -194,7 +196,7 @@ export default {
|
||||
background() {
|
||||
if (this.variables?.background?.value?.valueType === 'string') return this.variables.background.value.value;
|
||||
const prop = CreatureProperties.findOne({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
tags: 'background',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -205,7 +207,7 @@ export default {
|
||||
},
|
||||
classProperties(){
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'class',
|
||||
removed: {$ne: true},
|
||||
inactive: {$ne: true},
|
||||
@@ -216,7 +218,7 @@ export default {
|
||||
classLevels() {
|
||||
const classVariableNames = this.classProperties.map(c => c.variableName)
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'classLevel',
|
||||
variableName: {$nin: classVariableNames},
|
||||
removed: {$ne: true},
|
||||
|
||||
@@ -43,11 +43,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import { mapMutations } from 'vuex';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName';
|
||||
|
||||
export default {
|
||||
inject: {
|
||||
|
||||
@@ -72,16 +72,17 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/getParentRefByTag.js';
|
||||
import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS.js';
|
||||
import getParentRefByTag from '/imports/api/creature/creatureProperties/methods/getParentRefByTag';
|
||||
import BUILT_IN_TAGS from '/imports/constants/BUILT_IN_TAGS';
|
||||
import CoinValue from '/imports/client/ui/components/CoinValue.vue';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities';
|
||||
import PrintedLineItem from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedLineItem.vue';
|
||||
import PrintedContainer from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedContainer.vue';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -101,10 +102,11 @@ export default {
|
||||
organize: false,
|
||||
}
|
||||
},
|
||||
// @ts-ignore Meteor isn't defined on vue
|
||||
meteor: {
|
||||
containers() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'container',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -125,10 +127,8 @@ export default {
|
||||
},
|
||||
containersWithoutAncestorContainers() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.containerIds
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.containers),
|
||||
type: 'container',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -150,10 +150,8 @@ export default {
|
||||
},
|
||||
carriedItems() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.containerIds
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.containers),
|
||||
type: 'item',
|
||||
equipped: { $ne: true },
|
||||
removed: { $ne: true },
|
||||
@@ -165,9 +163,7 @@ export default {
|
||||
},
|
||||
equippedItems() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'item',
|
||||
equipped: true,
|
||||
removed: { $ne: true },
|
||||
@@ -198,9 +194,6 @@ export default {
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
containerIds() {
|
||||
return this.containers.map(container => container._id);
|
||||
},
|
||||
weightCarried() {
|
||||
return stripFloatingPointOddities(
|
||||
this.variables &&
|
||||
|
||||
@@ -39,9 +39,10 @@
|
||||
|
||||
<script lang="js">
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import PrintedSpell from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedSpell.vue';
|
||||
import PrintedSpellList from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedSpellList.vue';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -60,23 +61,22 @@ export default {
|
||||
organize: false,
|
||||
}
|
||||
},
|
||||
// @ts-ignore-error Meteor not defined on vue
|
||||
meteor: {
|
||||
spellLists() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'spellList',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
}, {
|
||||
sort: { order: 1 }
|
||||
});
|
||||
}).fetch();
|
||||
},
|
||||
spellsWithoutList() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.spellListIds,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.spellLists),
|
||||
type: 'spell',
|
||||
removed: { $ne: true },
|
||||
deactivatedByAncestor: { $ne: true },
|
||||
@@ -90,10 +90,8 @@ export default {
|
||||
},
|
||||
spellListsWithoutAncestorSpellLists() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': {
|
||||
$eq: this.creatureId,
|
||||
$nin: this.spellListIds,
|
||||
},
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
$not: getFilter.descendantsOfAll(this.spellLists),
|
||||
type: 'spellList',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
@@ -101,7 +99,7 @@ export default {
|
||||
sort: { order: 1 }
|
||||
}).map(sl => {
|
||||
sl.spells = CreatureProperties.find({
|
||||
'ancestors.id': sl._id,
|
||||
...getFilter.descendants(sl),
|
||||
type: 'spell',
|
||||
removed: { $ne: true },
|
||||
inactive: { $ne: true },
|
||||
|
||||
@@ -351,15 +351,16 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import PrintedAction from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedAction.vue';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import numberToSignedString from '../../../../../api/utility/numberToSignedString.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import numberToSignedString from '../../../../../api/utility/numberToSignedString';
|
||||
import PrintedSkill from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedSkill.vue';
|
||||
import PrintedDamageMultipliers from '/imports/client/ui/creature/character/printedCharacterSheet/components/PrintedDamageMultipliers.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue';
|
||||
import { uniqBy } from 'lodash';
|
||||
import { getFilter } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
const getProperties = function (creature, filter, options = {
|
||||
sort: { order: 1 }
|
||||
@@ -368,7 +369,7 @@ const getProperties = function (creature, filter, options = {
|
||||
if (creature.settings.hideUnusedStats) {
|
||||
filter.hide = { $ne: true };
|
||||
}
|
||||
filter['ancestors.id'] = creature._id;
|
||||
filter['root.id'] = creature._id;
|
||||
filter.removed = { $ne: true };
|
||||
filter.inactive = { $ne: true };
|
||||
filter.overridden = { $ne: true };
|
||||
@@ -413,6 +414,7 @@ export default {
|
||||
doCheckLoading: false,
|
||||
}
|
||||
},
|
||||
//@ts-ignore-error Meteor not defined
|
||||
meteor: {
|
||||
creature() {
|
||||
return Creatures.findOne(this.creatureId, { fields: { settings: 1 } });
|
||||
@@ -425,7 +427,7 @@ export default {
|
||||
},
|
||||
toggles() {
|
||||
return CreatureProperties.find({
|
||||
'ancestors.id': this.creatureId,
|
||||
...getFilter.descendantsOfRoot(this.creatureId),
|
||||
type: 'toggle',
|
||||
removed: { $ne: true },
|
||||
deactivatedByAncestor: { $ne: true },
|
||||
|
||||
@@ -83,13 +83,13 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import numberToSignedString from '/imports/api/utility/numberToSignedString.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import numberToSignedString from '/imports/api/utility/numberToSignedString';
|
||||
import PropertyIcon from '/imports/client/ui/properties/shared/PropertyIcon.vue';
|
||||
import MarkdownText from '/imports/client/ui/components/MarkdownText.vue';
|
||||
import TreeNodeList from '/imports/client/ui/components/tree/TreeNodeList.vue';
|
||||
import { nodeArrayToTree } from '/imports/api/parenting/nodesToTree.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import { docsToForest as nodeArrayToTree } from '/imports/api/parenting/parentingFunctions';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import { some } from 'lodash';
|
||||
|
||||
export default {
|
||||
@@ -169,6 +169,7 @@ export default {
|
||||
},
|
||||
meteor: {
|
||||
children() {
|
||||
throw 'TODO: rewrite with nested sets'
|
||||
const indicesOfTerminatingProps = [];
|
||||
const decendants = CreatureProperties.find({
|
||||
'ancestors.id': this.model._id,
|
||||
|
||||
@@ -102,11 +102,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import treeNodeViewMixin from '/imports/client/ui/properties/treeNodeViews/treeNodeViewMixin.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import treeNodeViewMixin from '/imports/client/ui/properties/treeNodeViews/treeNodeViewMixin';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import CoinValue from '/imports/client/ui/components/CoinValue.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -92,11 +92,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import treeNodeViewMixin from '/imports/client/ui/properties/treeNodeViews/treeNodeViewMixin.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import treeNodeViewMixin from '/imports/client/ui/properties/treeNodeViews/treeNodeViewMixin';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import CoinValue from '/imports/client/ui/components/CoinValue.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
import stripFloatingPointOddities from '/imports/api/engine/computation/utility/stripFloatingPointOddities';
|
||||
import CoinValue from '/imports/client/ui/components/CoinValue.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import numberToSignedString from '../../../../../../api/utility/numberToSignedString.js';
|
||||
import numberToSignedString from '../../../../../../api/utility/numberToSignedString';
|
||||
import ProficiencyIcon from '/imports/client/ui/properties/shared/ProficiencyIcon.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
<script lang="js">
|
||||
import PropertyIcon from '/imports/client/ui/properties/shared/PropertyIcon.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue';
|
||||
import numberToSignedString from '/imports/api/utility/numberToSignedString.js';
|
||||
import romanize from '/imports/client/ui/utility/romanize.js';
|
||||
import numberToSignedString from '/imports/api/utility/numberToSignedString';
|
||||
import romanize from '/imports/client/ui/utility/romanize';
|
||||
|
||||
const levelText = [
|
||||
'cantrip', '1st-level', '2nd-level', '3rd-level', '4th-level', '5th-level',
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
|
||||
<script lang="js">
|
||||
import Vue from 'vue';
|
||||
import updateCreatureFolderName from '/imports/api/creature/creatureFolders/methods.js/updateCreatureFolderName.js';
|
||||
import removeCreatureFolder from '/imports/api/creature/creatureFolders/methods.js/removeCreatureFolder.js';
|
||||
import {snackbar} from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import updateCreatureFolderName from '/imports/api/creature/creatureFolders/methods.js/updateCreatureFolderName';
|
||||
import removeCreatureFolder from '/imports/api/creature/creatureFolders/methods.js/removeCreatureFolder';
|
||||
import {snackbar} from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
<script lang="js">
|
||||
import CreatureListTile from '/imports/client/ui/creature/creatureList/CreatureListTile.vue';
|
||||
import draggable from 'vuedraggable';
|
||||
import moveCreatureToFolder from '/imports/api/creature/creatureFolders/methods.js/moveCreatureToFolder.js';
|
||||
import {snackbar} from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import moveCreatureToFolder from '/imports/api/creature/creatureFolders/methods.js/moveCreatureToFolder';
|
||||
import {snackbar} from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
<script lang="js">
|
||||
import SharedIcon from '/imports/client/ui/components/SharedIcon.vue';
|
||||
import draggable from 'vuedraggable';
|
||||
import { organizeDoc } from '/imports/api/parenting/organizeMethods.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { organizeDoc } from '/imports/api/parenting/organizeMethods';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
|
||||
export default {
|
||||
meteor: {
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import fetchDocByRef from '/imports/api/parenting/fetchDocByRef.js';
|
||||
import { fetchDocByRef } from '/imports/api/parenting/parentingFunctions';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import nodesToTree from '/imports/api/parenting/nodesToTree.js'
|
||||
import { filterToForest } from '/imports/api/parenting/parentingFunctions';
|
||||
import TreeNodeList from '/imports/client/ui/components/tree/TreeNodeList.vue';
|
||||
import { organizeDoc, reorderDoc } from '/imports/api/parenting/organizeMethods.js';
|
||||
import getCollectionByName from '/imports/api/parenting/getCollectionByName.js';
|
||||
import { organizeDoc, reorderDoc } from '/imports/api/parenting/organizeMethods';
|
||||
import { getCollectionByName } from '/imports/api/parenting/parentingFunctions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -47,14 +47,16 @@ export default {
|
||||
expanded: Boolean,
|
||||
},
|
||||
meteor: {
|
||||
children() {
|
||||
const children = nodesToTree({
|
||||
collection: getCollectionByName(this.collection),
|
||||
ancestorId: this.root.id,
|
||||
filter: this.filter,
|
||||
includeFilteredDocAncestors: true,
|
||||
includeFilteredDocDescendants: true,
|
||||
});
|
||||
async children() {
|
||||
const children = await filterToForest(
|
||||
getCollectionByName(this.collection),
|
||||
this.root.id,
|
||||
this.filter,
|
||||
{
|
||||
includeFilteredDocAncestors: true,
|
||||
includeFilteredDocDescendants: true,
|
||||
}
|
||||
);
|
||||
this.$emit('length', children.length);
|
||||
return children;
|
||||
},
|
||||
|
||||
@@ -70,30 +70,29 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import damageProperty from '/imports/api/creature/creatureProperties/methods/damageProperty.js';
|
||||
import pushToProperty from '/imports/api/creature/creatureProperties/methods/pushToProperty.js';
|
||||
import pullFromProperty from '/imports/api/creature/creatureProperties/methods/pullFromProperty.js';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty.js';
|
||||
import restoreProperty from '/imports/api/creature/creatureProperties/methods/restoreProperty.js';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty.js';
|
||||
import duplicateProperty from '/imports/api/creature/creatureProperties/methods/duplicateProperty.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import damageProperty from '/imports/api/creature/creatureProperties/methods/damageProperty';
|
||||
import pushToProperty from '/imports/api/creature/creatureProperties/methods/pushToProperty';
|
||||
import pullFromProperty from '/imports/api/creature/creatureProperties/methods/pullFromProperty';
|
||||
import softRemoveProperty from '/imports/api/creature/creatureProperties/methods/softRemoveProperty';
|
||||
import restoreProperty from '/imports/api/creature/creatureProperties/methods/restoreProperty';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty';
|
||||
import duplicateProperty from '/imports/api/creature/creatureProperties/methods/duplicateProperty';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import PropertyToolbar from '/imports/client/ui/components/propertyToolbar.vue';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import PropertyForm from '/imports/client/ui/properties/PropertyForm.vue';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import { get, findLast } from 'lodash';
|
||||
import equipItem from '/imports/api/creature/creatureProperties/methods/equipItem.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { getHighestOrder } from '/imports/api/parenting/order.js';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty.js';
|
||||
import equipItem from '/imports/api/creature/creatureProperties/methods/equipItem';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty';
|
||||
import Breadcrumbs from '/imports/client/ui/creature/creatureProperties/Breadcrumbs.vue';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
import PropertyViewer from '/imports/client/ui/properties/shared/PropertyViewer.vue';
|
||||
import copyPropertyToLibrary from '/imports/api/creature/creatureProperties/methods/copyPropertyToLibrary.js';
|
||||
import copyPropertyToLibrary from '/imports/api/creature/creatureProperties/methods/copyPropertyToLibrary';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -270,18 +269,12 @@ export default {
|
||||
id: parentPropertyId,
|
||||
collection: 'creatureProperties',
|
||||
};
|
||||
let order = getHighestOrder({
|
||||
collection: CreatureProperties,
|
||||
ancestorId: parentRef.id,
|
||||
}) + 0.5;
|
||||
if (Array.isArray(result)){
|
||||
let nodeIds = result;
|
||||
let id = insertPropertyFromLibraryNode.call({nodeIds, parentRef, order});
|
||||
let id = insertPropertyFromLibraryNode.call({ nodeIds, parentRef });
|
||||
return `tree-node-${id}`;
|
||||
} else {
|
||||
let creatureProperty = result;
|
||||
// Get order and parent
|
||||
creatureProperty.order = order;
|
||||
// Insert the property
|
||||
let id = insertProperty.call({creatureProperty, parentRef});
|
||||
return `tree-node-${id}`;
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import buildCreatureComputation from '/imports/api/engine/computation/buildCreatureComputation.js';
|
||||
import buildCreatureComputation from '/imports/api/engine/computation/buildCreatureComputation';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import computeCreatureComputation from '/imports/api/engine/computation/computeCreatureComputation.js';
|
||||
import computeCreatureComputation from '/imports/api/engine/computation/computeCreatureComputation';
|
||||
import cytoscape from 'cytoscape';
|
||||
import klay from 'cytoscape-klay';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES.js';
|
||||
import PROPERTIES from '/imports/constants/PROPERTIES';
|
||||
|
||||
cytoscape.use(klay);
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import propertyFormMixin from '/imports/client/ui/properties/forms/shared/propertyFormMixin.js';
|
||||
import propertyFormMixin from '/imports/client/ui/properties/forms/shared/propertyFormMixin';
|
||||
|
||||
export default {
|
||||
mixins: [propertyFormMixin],
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import ExperienceForm from '/imports/client/ui/creature/experiences/ExperienceForm.vue';
|
||||
import { ExperienceSchema, insertExperience } from '/imports/api/creature/experience/Experiences.js';
|
||||
import schemaFormMixin from '/imports/client/ui/properties/forms/shared/schemaFormMixin.js';
|
||||
import { ExperienceSchema, insertExperience } from '/imports/api/creature/experience/Experiences';
|
||||
import schemaFormMixin from '/imports/client/ui/properties/forms/shared/schemaFormMixin';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
<script lang="js">
|
||||
import { format } from 'date-fns';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import Experiences, { removeExperience, recomputeExperiences } from '/imports/api/creature/experience/Experiences.js';
|
||||
import Experiences, { removeExperience, recomputeExperiences } from '/imports/api/creature/experience/Experiences';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -181,17 +181,17 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue'
|
||||
import resolve, { toString } from '/imports/parser/resolve.js';
|
||||
import { prettifyParseError, parse } from '/imports/parser/parser.js';
|
||||
// import evaluateString from '/imports/api/creature/computation/afterComputation/evaluateString.js';
|
||||
import getSlotFillFilter from '/imports/api/creature/creatureProperties/methods/getSlotFillFilter.js'
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import resolve, { toString } from '/imports/parser/resolve';
|
||||
import { prettifyParseError, parse } from '/imports/parser/parser';
|
||||
// import evaluateString from '/imports/api/creature/computation/afterComputation/evaluateString';
|
||||
import getSlotFillFilter from '/imports/api/creature/creatureProperties/methods/getSlotFillFilter'
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import LibraryNodeExpansionContent from '/imports/client/ui/library/LibraryNodeExpansionContent.vue';
|
||||
import PropertyTags from '/imports/client/ui/properties/viewers/shared/PropertyTags.vue';
|
||||
import { clone, difference, isEqual } from 'lodash';
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
<script lang="js">
|
||||
import CardHighlight from '/imports/client/ui/components/CardHighlight.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import SlotCard from '/imports/client/ui/creature/slots/SlotCard.vue';
|
||||
import PointBuyCard from '/imports/client/ui/properties/components/pointBuy/PointBuyCard.vue';
|
||||
import ColumnLayout from '/imports/client/ui/components/ColumnLayout.vue';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import updateCreatureProperty from '/imports/api/creature/creatureProperties/methods/updateCreatureProperty';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -233,22 +233,22 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables.js';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import PropertyDescription from '/imports/client/ui/properties/viewers/shared/PropertyDescription.vue'
|
||||
import resolve, { toString } from '/imports/parser/resolve.js';
|
||||
import { prettifyParseError, parse } from '/imports/parser/parser.js';
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import resolve, { toString } from '/imports/parser/resolve';
|
||||
import { prettifyParseError, parse } from '/imports/parser/parser';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import LibraryNodeExpansionContent from '/imports/client/ui/library/LibraryNodeExpansionContent.vue';
|
||||
import PropertyTags from '/imports/client/ui/properties/viewers/shared/PropertyTags.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import { clone, difference } from 'lodash';
|
||||
import getDefaultSlotFiller from '/imports/api/library/methods/getDefaultSlotFiller.js';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode.js';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty.js';
|
||||
import getDefaultSlotFiller from '/imports/api/library/methods/getDefaultSlotFiller';
|
||||
import insertPropertyFromLibraryNode from '/imports/api/creature/creatureProperties/methods/insertPropertyFromLibraryNode';
|
||||
import insertProperty from '/imports/api/creature/creatureProperties/methods/insertProperty';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@@ -43,9 +43,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import '/imports/client/ui/dialogStack/dialogStackWindowEvents.js';
|
||||
import mockElement from '/imports/client/ui/dialogStack/mockElement.js';
|
||||
import DialogComponentIndex from '/imports/client/ui/dialogStack/DialogComponentIndex.js';
|
||||
import '/imports/client/ui/dialogStack/dialogStackWindowEvents';
|
||||
import mockElement from '/imports/client/ui/dialogStack/mockElement';
|
||||
import DialogComponentIndex from '/imports/client/ui/dialogStack/DialogComponentIndex';
|
||||
|
||||
const OFFSET = 16;
|
||||
const MOCK_DURATION = 400; // Keep in sync with css transition of .dialog
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import { propsByDocsPath } from '/imports/constants/PROPERTIES.js';
|
||||
import { propsByDocsPath } from '/imports/constants/PROPERTIES';
|
||||
import MarkdownText from '/imports/client/ui/components/MarkdownText.vue';
|
||||
import Docs from '/imports/api/docs/Docs.js';
|
||||
import Docs from '/imports/api/docs/Docs';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import store from '/imports/client/ui/vuexStore.js';
|
||||
import store from '/imports/client/ui/vuexStore';
|
||||
|
||||
if (window) {
|
||||
window.onpopstate = function (event) {
|
||||
|
||||
@@ -135,11 +135,11 @@ import Docs, {
|
||||
restoreDoc,
|
||||
softRemoveDoc,
|
||||
updateDoc,
|
||||
} from '/imports/api/docs/Docs.js';
|
||||
} from '/imports/api/docs/Docs';
|
||||
import { get } from 'lodash';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import DocCard from '/imports/client/ui/docs/DocCard.vue';
|
||||
import getDocLink from '/imports/client/ui/docs/getDocLink.js';
|
||||
import getDocLink from '/imports/client/ui/docs/getDocLink';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -180,10 +180,7 @@ export default {
|
||||
doc: {
|
||||
name: 'New Doc',
|
||||
},
|
||||
parentRef: this.doc && {
|
||||
id: this.docId,
|
||||
collection: 'docs',
|
||||
},
|
||||
parentId: this.docId,
|
||||
}, ack);
|
||||
},
|
||||
remove({ ack } = {}) {
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import restoreCreatureFromFile from '/imports/api/creature/archive/methods/restoreCreatureFromFile.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { characterSlotsRemaining } from '/imports/api/creature/creatures/methods/assertHasCharacterSlots.js';
|
||||
import removeArchiveCreature from '/imports/api/creature/archive/methods/removeArchiveCreature.js';
|
||||
import restoreCreatureFromFile from '/imports/api/creature/archive/methods/restoreCreatureFromFile';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import { characterSlotsRemaining } from '/imports/api/creature/creatures/methods/assertHasCharacterSlots';
|
||||
import removeArchiveCreature from '/imports/api/creature/archive/methods/removeArchiveCreature';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import updateFileStorageUsed from '/imports/api/users/methods/updateFileStorageUsed.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import updateFileStorageUsed from '/imports/api/users/methods/updateFileStorageUsed';
|
||||
import prettyBytes from 'pretty-bytes';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import {importIcons, importIconMetadata} from '/imports/client/ui/icons/importIcons.js';
|
||||
import {importIcons, importIconMetadata} from '/imports/client/ui/icons/importIcons';
|
||||
import IconPicker from '/imports/client/ui/components/global/IconPicker.vue';
|
||||
import UploadButton from 'vuetify-upload-button';
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<script lang="js">
|
||||
import SvgIcon from '/imports/client/ui/components/global/SvgIcon.vue'
|
||||
import SVG_ICONS from '/imports/constants/SVG_ICONS.js';
|
||||
import SVG_ICONS from '/imports/constants/SVG_ICONS';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { writeIcons } from '/imports/api/icons/Icons.js';
|
||||
import { writeIcons } from '/imports/api/icons/Icons';
|
||||
|
||||
/*
|
||||
* Import a SVG sprite file.
|
||||
@@ -13,11 +13,11 @@ import { writeIcons } from '/imports/api/icons/Icons.js';
|
||||
*/
|
||||
let metadata;
|
||||
|
||||
export function importIcons(file){
|
||||
export function importIcons(file) {
|
||||
let reader = new FileReader();
|
||||
if (! metadata) throw 'No metadata to build with';
|
||||
if (!metadata) throw 'No metadata to build with';
|
||||
|
||||
reader.onload = function(){
|
||||
reader.onload = function () {
|
||||
let data = JSON.parse(reader.result);
|
||||
let icons = [];
|
||||
data.svg.symbol.forEach(iconData => {
|
||||
@@ -38,10 +38,10 @@ export function importIcons(file){
|
||||
// Get metadata here:
|
||||
// https://gist.github.com/ThaumRystra/ffb264dea8c32e15de95f775596194a4
|
||||
// It is probably out of date though
|
||||
export function importIconMetadata(file){
|
||||
export function importIconMetadata(file) {
|
||||
let reader = new FileReader();
|
||||
|
||||
reader.onload = function(){
|
||||
reader.onload = function () {
|
||||
metadata = JSON.parse(reader.result);
|
||||
console.log(metadata);
|
||||
};
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import '/imports/api/users/Users.js';
|
||||
import '/imports/api/users/Users';
|
||||
import Sidebar from '/imports/client/ui/layouts/Sidebar.vue';
|
||||
import DialogStack from '/imports/client/ui/dialogStack/DialogStack.vue';
|
||||
import { mapMutations } from 'vuex';
|
||||
|
||||
@@ -65,10 +65,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders';
|
||||
import CreatureFolderList from '/imports/client/ui/creature/creatureList/CreatureFolderList.vue';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName.js';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName';
|
||||
import { uniq, flatten } from 'lodash';
|
||||
|
||||
const characterTransform = function (char) {
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import { insertNode } from '/imports/api/library/LibraryNodes.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import { insertNode } from '/imports/api/library/LibraryNodes';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
|
||||
@@ -113,14 +113,14 @@
|
||||
import TreeDetailLayout from '/imports/client/ui/components/TreeDetailLayout.vue';
|
||||
import LibraryBrowser from '/imports/client/ui/library/LibraryBrowser.vue';
|
||||
import LibraryNodeDialog from '/imports/client/ui/library/LibraryNodeDialog.vue';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import LibraryContentsContainer from '/imports/client/ui/library/LibraryContentsContainer.vue';
|
||||
import InsertLibraryNodeButton from '/imports/client/ui/library/InsertLibraryNodeButton.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor.js';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import isDarkColor from '/imports/client/ui/utility/isDarkColor';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
import getThemeColor from '/imports/client/ui/utility/getThemeColor';
|
||||
import TreeSearchInput from '/imports/client/ui/components/tree/TreeSearchInput.vue';
|
||||
import LibrarySecondTree from '/imports/client/ui/library/LibrarySecondTree.vue';
|
||||
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
|
||||
<script lang="js">
|
||||
import LibraryContentsContainer from '/imports/client/ui/library/LibraryContentsContainer.vue';
|
||||
import Libraries, { insertLibrary } from '/imports/api/library/Libraries.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import Libraries, { insertLibrary } from '/imports/api/library/Libraries';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
import InsertLibraryNodeButton from '/imports/client/ui/library/InsertLibraryNodeButton.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -85,9 +85,9 @@
|
||||
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import LibraryCollections, { updateLibraryCollection, removeLibraryCollection } from '/imports/api/library/LibraryCollections.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import LibraryCollections, { updateLibraryCollection, removeLibraryCollection } from '/imports/api/library/LibraryCollections';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
import SharedIcon from '/imports/client/ui/components/SharedIcon.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections.js';
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import LibraryCollections from '/imports/api/library/LibraryCollections';
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
import { mapMutations } from 'vuex';
|
||||
import formatter from '/imports/client/ui/utility/numberFormatter.js';
|
||||
import formatter from '/imports/client/ui/utility/numberFormatter';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import nodesToTree from '/imports/api/parenting/nodesToTree.js';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
||||
import { filterToForest } from '/imports/api/parenting/parentingFunctions';
|
||||
import TreeNodeList from '/imports/client/ui/components/tree/TreeNodeList.vue';
|
||||
import { organizeDoc, reorderDoc } from '/imports/api/parenting/organizeMethods.js';
|
||||
import { organizeDoc, reorderDoc } from '/imports/api/parenting/organizeMethods';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -90,13 +90,15 @@ export default {
|
||||
},
|
||||
libraryChildren() {
|
||||
if (!this.library) return;
|
||||
return nodesToTree({
|
||||
collection: LibraryNodes,
|
||||
ancestorId: this.library._id,
|
||||
filter: this.filter,
|
||||
includeFilteredDocAncestors: true,
|
||||
includeFilteredDocDescendants: true,
|
||||
});
|
||||
return filterToForest(
|
||||
LibraryNodes,
|
||||
this.library._id,
|
||||
this.filter,
|
||||
{
|
||||
includeFilteredDocAncestors: true,
|
||||
includeFilteredDocDescendants: true,
|
||||
}
|
||||
);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -103,10 +103,10 @@
|
||||
|
||||
<script lang="js">
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import Libraries, { updateLibraryName, updateLibraryDescription, updateLibraryShowInMarket, removeLibrary } from '/imports/api/library/Libraries.js';
|
||||
import LibraryNodes, { restoreLibraryNode } from '/imports/api/library/LibraryNodes.js';
|
||||
import Libraries, { updateLibraryName, updateLibraryDescription, updateLibraryShowInMarket, removeLibrary } from '/imports/api/library/Libraries';
|
||||
import LibraryNodes, { restoreLibraryNode } from '/imports/api/library/LibraryNodes';
|
||||
import TreeNodeView from '/imports/client/ui/properties/treeNodeViews/TreeNodeView.vue';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -60,9 +60,9 @@
|
||||
|
||||
<script lang="js">
|
||||
import { union } from 'lodash';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import LibraryCollections, { insertLibraryCollection } from '/imports/api/library/LibraryCollections.js';
|
||||
import Libraries, { insertLibrary } from '/imports/api/library/Libraries.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import LibraryCollections, { insertLibraryCollection } from '/imports/api/library/LibraryCollections';
|
||||
import Libraries, { insertLibrary } from '/imports/api/library/Libraries';
|
||||
import LibraryListTile from '/imports/client/ui/library/LibraryListTile.vue'
|
||||
import LibraryCollectionHeader from '/imports/client/ui/library/LibraryCollectionHeader.vue';
|
||||
|
||||
|
||||
@@ -107,21 +107,20 @@ import LibraryNodes, {
|
||||
softRemoveLibraryNode,
|
||||
restoreLibraryNode,
|
||||
insertNode,
|
||||
} from '/imports/api/library/LibraryNodes.js';
|
||||
import duplicateLibraryNode from '/imports/api/library/methods/duplicateLibraryNode.js';
|
||||
} from '/imports/api/library/LibraryNodes';
|
||||
import duplicateLibraryNode from '/imports/api/library/methods/duplicateLibraryNode';
|
||||
import DialogBase from '/imports/client/ui/dialogStack/DialogBase.vue';
|
||||
import PropertyToolbar from '/imports/client/ui/components/propertyToolbar.vue';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES.js';
|
||||
import { getPropertyName } from '/imports/constants/PROPERTIES';
|
||||
import { get } from 'lodash';
|
||||
import {
|
||||
assertDocEditPermission, assertDocCopyPermission
|
||||
} from '/imports/api/sharing/sharingPermissions.js';
|
||||
import { organizeDoc } from '/imports/api/parenting/organizeMethods.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle.js';
|
||||
import copyLibraryNodeTo from '/imports/api/library/methods/copyLibraryNodeTo.js';
|
||||
import { getHighestOrder } from '/imports/api/parenting/order.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
} from '/imports/api/sharing/sharingPermissions';
|
||||
import { organizeDoc } from '/imports/api/parenting/organizeMethods';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import getPropertyTitle from '/imports/client/ui/properties/shared/getPropertyTitle';
|
||||
import copyLibraryNodeTo from '/imports/api/library/methods/copyLibraryNodeTo';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
import PropertyForm from '/imports/client/ui/properties/PropertyForm.vue';
|
||||
import PropertyViewer from '/imports/client/ui/properties/shared/PropertyViewer.vue';
|
||||
import Breadcrumbs from '/imports/client/ui/creature/creatureProperties/Breadcrumbs.vue';
|
||||
@@ -215,7 +214,6 @@ export default {
|
||||
collection: 'libraryNodes',
|
||||
id: this.model._id,
|
||||
},
|
||||
order: (this.model.order || 0) + 0.5,
|
||||
},
|
||||
parentRef: this.model.parent,
|
||||
}, (error, docId) => {
|
||||
@@ -257,7 +255,6 @@ export default {
|
||||
collection: 'libraryNodes',
|
||||
id: parentId
|
||||
},
|
||||
order: -0.5
|
||||
}, (error) => {
|
||||
if (error) console.error(error);
|
||||
});
|
||||
@@ -353,13 +350,7 @@ export default {
|
||||
id: parentPropertyId,
|
||||
collection: 'libraryNodes',
|
||||
};
|
||||
let order = getHighestOrder({
|
||||
collection: LibraryNodes,
|
||||
ancestorId: parentRef.id,
|
||||
}) + 0.5;
|
||||
let libraryNode = result;
|
||||
// Get order and parent
|
||||
libraryNode.order = order;
|
||||
// Insert the property
|
||||
let id = insertNode.call({libraryNode, parentRef});
|
||||
return `tree-node-${id}`;
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import nodesToTree from '/imports/api/parenting/nodesToTree.js'
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes.js';
|
||||
import propertyViewerIndex from '/imports/client/ui/properties/viewers/shared/propertyViewerIndex.js';
|
||||
import { filterToForest } from '/imports/api/parenting/parentingFunctions';
|
||||
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
||||
import propertyViewerIndex from '/imports/client/ui/properties/viewers/shared/propertyViewerIndex';
|
||||
import TreeNodeList from '/imports/client/ui/components/tree/TreeNodeList.vue';
|
||||
|
||||
export default {
|
||||
@@ -70,11 +70,8 @@ export default {
|
||||
model() {
|
||||
return LibraryNodes.findOne(this.id);
|
||||
},
|
||||
propertyChildren(){
|
||||
return nodesToTree({
|
||||
collection: LibraryNodes,
|
||||
ancestorId: this.id
|
||||
});
|
||||
propertyChildren() {
|
||||
return filterToForest(LibraryNodes, this.id, {});
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
<script lang="js">
|
||||
import LibraryList from '/imports/client/ui/library/LibraryList.vue';
|
||||
import LibraryContentsContainer from '/imports/client/ui/library/LibraryContentsContainer.vue';
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import { assertEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Libraries from '/imports/api/library/Libraries.js';
|
||||
import formatter from '/imports/client/ui/utility/numberFormatter.js';
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions.js';
|
||||
import Libraries from '/imports/api/library/Libraries';
|
||||
import formatter from '/imports/client/ui/utility/numberFormatter';
|
||||
import { assertDocEditPermission } from '/imports/api/sharing/sharingPermissions';
|
||||
import { mapMutations } from 'vuex';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import CreatureLogs, { logRoll } from '/imports/api/creature/log/CreatureLogs.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureLogs, { logRoll } from '/imports/api/creature/log/CreatureLogs';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureVariables from '/imports/api/creature/creatures/CreatureVariables';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
|
||||
import { parse, prettifyParseError } from '/imports/parser/parser.js';
|
||||
import resolve, { toString } from '/imports/parser/resolve.js';
|
||||
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions';
|
||||
import { parse, prettifyParseError } from '/imports/parser/parser';
|
||||
import resolve, { toString } from '/imports/parser/resolve';
|
||||
import LogEntry from '/imports/client/ui/log/LogEntry.vue';
|
||||
|
||||
export default {
|
||||
|
||||
@@ -229,13 +229,13 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import router from '/imports/client/ui/router.js';
|
||||
import getEntitledCents from '/imports/api/users/patreon/getEntitledCents.js';
|
||||
import Invites from '/imports/api/users/Invites.js';
|
||||
import linkWithPatreon from '/imports/api/users/methods/linkWithPatreon.js'
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import addEmail from '/imports/api/users/methods/addEmail.js';
|
||||
import removeEmail from '/imports/api/users/methods/removeEmail.js';
|
||||
import router from '/imports/client/ui/router';
|
||||
import getEntitledCents from '/imports/api/users/patreon/getEntitledCents';
|
||||
import Invites from '/imports/api/users/Invites';
|
||||
import linkWithPatreon from '/imports/api/users/methods/linkWithPatreon'
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
import addEmail from '/imports/api/users/methods/addEmail';
|
||||
import removeEmail from '/imports/api/users/methods/removeEmail';
|
||||
import CreatureStorageStats from '/imports/client/ui/creature/creatureList/CreatureStorageStats.vue';
|
||||
import FileStorageStats from '/imports/client/ui/files/FileStorageStats.vue';
|
||||
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import getVersion from '/imports/migrations/methods/getVersion.js';
|
||||
import migrateTo from '/imports/migrations/methods/migrateTo.js';
|
||||
import SCHEMA_VERSION from '/imports/constants/SCHEMA_VERSION.js';
|
||||
import getVersion from '/imports/migrations/methods/getVersion';
|
||||
import migrateTo from '/imports/migrations/methods/migrateTo';
|
||||
import SCHEMA_VERSION from '/imports/constants/SCHEMA_VERSION';
|
||||
|
||||
export default {
|
||||
data(){return {
|
||||
|
||||
@@ -77,14 +77,14 @@
|
||||
</template>
|
||||
|
||||
<script lang="js">
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures.js';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders.js';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers.js';
|
||||
import insertCreatureFolder from '/imports/api/creature/creatureFolders/methods.js/insertCreatureFolder.js';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue.js';
|
||||
import Creatures from '/imports/api/creature/creatures/Creatures';
|
||||
import CreatureFolders from '/imports/api/creature/creatureFolders/CreatureFolders';
|
||||
import { getUserTier } from '/imports/api/users/patreon/tiers';
|
||||
import insertCreatureFolder from '/imports/api/creature/creatureFolders/methods.js/insertCreatureFolder';
|
||||
import { snackbar } from '/imports/client/ui/components/snackbars/SnackbarQueue';
|
||||
import CreatureFolderList from '/imports/client/ui/creature/creatureList/CreatureFolderList.vue';
|
||||
import ArchiveButton from '/imports/client/ui/creature/creatureList/ArchiveButton.vue';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName.js';
|
||||
import getCreatureUrlName from '/imports/api/creature/creatures/getCreatureUrlName';
|
||||
import { uniq, flatten } from 'lodash';
|
||||
|
||||
const characterTransform = function (char) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user