Merge feature-nested-sets into develop

This commit is contained in:
ThaumRystra
2023-12-18 18:27:17 +02:00
523 changed files with 5492 additions and 3763 deletions

View File

@@ -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:{

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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],

View File

@@ -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],

View File

@@ -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],

View File

@@ -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],

View File

@@ -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],

View File

@@ -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 {

View File

@@ -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],

View File

@@ -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],

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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() {

View File

@@ -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: {

View File

@@ -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) {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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: {

View File

@@ -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 || '-'}`;

View File

@@ -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() {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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';

View File

@@ -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}`;

View File

@@ -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: {

View File

@@ -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}`;

View File

@@ -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,
},

View File

@@ -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, '']}},

View File

@@ -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,
},

View File

@@ -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 &&

View File

@@ -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},
});
},

View File

@@ -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',

View File

@@ -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 },

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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';

View File

@@ -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},

View File

@@ -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: {

View File

@@ -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 &&

View File

@@ -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 },

View File

@@ -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 },

View File

@@ -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,

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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',

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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;
},

View File

@@ -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}`;

View File

@@ -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);

View File

@@ -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],

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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';

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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

View File

@@ -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: {

View File

@@ -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) {

View File

@@ -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 } = {}) {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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';

View File

@@ -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: {

View File

@@ -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);
};

View File

@@ -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';

View File

@@ -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) {

View File

@@ -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: {

View File

@@ -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';

View File

@@ -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 {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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() {

View File

@@ -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: {

View File

@@ -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: {

View File

@@ -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';

View File

@@ -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}`;

View File

@@ -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, {});
},
}
}

View File

@@ -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: {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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';

View File

@@ -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 {

View File

@@ -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