0.1.5 - further updates and tweaks, auto scrolling on document, added mascot, added instant edit mode for docs

This commit is contained in:
Elvanos 2021-04-11 03:40:03 +02:00
parent a31a4e300d
commit 1c563a5511
32 changed files with 575 additions and 83 deletions

View file

@ -15,6 +15,7 @@ import { OptionsStateInteface } from "./store/module-options/state"
import { colors } from "quasar"
import { tipsTricks } from "src/scripts/utilities/tipsTricks"
import { shell } from "electron"
import { summonAllPlusheForms } from "src/scripts/utilities/plusheMascot"
@Component({
components: {
@ -94,12 +95,14 @@ export default class App extends BaseClass {
}
const messageToShow = tipsTricks[Math.floor(Math.random() * tipsTricks.length)]
const plusheForm = summonAllPlusheForms[Math.floor(Math.random() * summonAllPlusheForms.length)]
this.starupNotif = this.$q.notify({
timeout: 15000,
icon: "mdi-help",
type: "info",
icon: (this.hidePlushes) ? "mdi-help" : undefined,
color: "info",
message: "Did you know?",
avatar: (!this.hidePlushes) ? plusheForm : undefined,
caption: messageToShow,
actions: [{ icon: "mdi-close", color: "white" }]
})
@ -226,6 +229,8 @@ export default class App extends BaseClass {
@Watch("SGET_options", { deep: true })
onSettingsChange () {
const options = this.SGET_options
this.hidePlushes = options.hidePlushes
this.$q.dark.set(options.darkMode)
if (options.darkMode) {
colors.setBrand("dark", "#1b333e")
@ -236,5 +241,10 @@ export default class App extends BaseClass {
colors.setBrand("primary", "#e8bb50")
}
}
/**
* Hides the mascot... nooo :(
*/
hidePlushes = false
}
</script>

View file

@ -252,6 +252,23 @@ export default class BaseClass extends Vue {
})
}
/**
* Open a new route for an already existing object
* @param existingObject An already existing object passed in
*/
openExistingDocumentRouteWithEdit (existingObject:I_OpenedDocument | I_FieldRelationship) {
this.$router.push({
path: existingObject.url,
query: { editMode: "editMode" }
}).catch((e: {name: string}) => {
const errorName : string = e.name
if (errorName === "NavigationDuplicated") {
return
}
console.log(e)
})
}
/**
* Open a new route for an already existing object
* @param existingObject An already existing object passed in

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View file

@ -110,7 +110,25 @@
<div class="treeButtonGroup">
<q-btn
tabindex="-1"
v-if="prop.node.children && prop.node.children.length > 0 && !prop.node.isRoot && !prop.node.isTag"
v-if="((prop.node.children && prop.node.children.length > 0) || !hideTreeExtraIcons) && !prop.node.isRoot && !prop.node.isTag && !hideTreeIconView && !prop.node.specialLabel"
round
flat
dense
color="dark"
class="z-1 q-ml-sm treeButton treeButton--edit"
icon="mdi-book-open-page-variant-outline"
size="10px"
@click.stop.prevent="openExistingDocumentRoute(prop.node)"
>
<q-tooltip
:delay="300"
>
Open {{ prop.node.label }}
</q-tooltip>
</q-btn>
<q-btn
tabindex="-1"
v-if="!prop.node.isRoot && !prop.node.isTag && !hideTreeIconEdit && !prop.node.specialLabel"
round
flat
dense
@ -118,17 +136,17 @@
class="z-1 q-ml-sm treeButton treeButton--edit"
icon="mdi-pencil"
size="10px"
@click.stop.prevent="openExistingDocumentRoute(prop.node)"
@click.stop.prevent="openExistingDocumentRouteWithEdit(prop.node)"
>
<q-tooltip
:delay="300"
>
Open/Edit {{ prop.node.label }}
Edit {{ prop.node.label }}
</q-tooltip>
</q-btn>
<q-btn
tabindex="-1"
v-if="(!prop.node.specialLabel && !prop.node.isRoot) && !prop.node.isTag"
v-if="!prop.node.specialLabel && !prop.node.isRoot && !prop.node.isTag && !hideTreeIconAddUnder"
round
flat
dense
@ -154,13 +172,13 @@
<template v-if="prop.node.isRoot || prop.node.children.length > 0">
<q-item clickable v-close-popup @click="recursivelyExpandNodeDownwards(prop.node.key)">
<q-item-section>Expand all</q-item-section>
<q-item-section>Expand all under this node</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-expand-all-outline" />
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="collapseAllNodesForce(prop.node)">
<q-item-section>Collapse all</q-item-section>
<q-item-section>Collapse all under this node</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-collapse-all-outline" />
</q-item-section>
@ -200,6 +218,12 @@
<q-separator />
<q-item clickable v-close-popup @click="openExistingDocumentRoute(prop.node)">
<q-item-section>Open document</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-book-open-page-variant-outline" />
</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="openExistingDocumentRouteWithEdit(prop.node)">
<q-item-section>Edit document</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-pencil" />
</q-item-section>
@ -333,6 +357,10 @@ export default class ObjectTree extends BaseClass {
doubleDashDocCount = false
hideDeadCrossThrough = false
hideTreeOrderNumbers = false
hideTreeExtraIcons = false
hideTreeIconAddUnder = false
hideTreeIconEdit = false
hideTreeIconView = false
@Watch("SGET_options", { immediate: true, deep: true })
onSettingsChange () {
@ -351,7 +379,10 @@ export default class ObjectTree extends BaseClass {
this.doubleDashDocCount = options.doubleDashDocCount
this.hideDeadCrossThrough = options.hideDeadCrossThrough
this.hideTreeOrderNumbers = options.hideTreeOrderNumbers
this.hideTreeExtraIcons = options.hideTreeExtraIcons
this.hideTreeIconAddUnder = options.hideTreeIconAddUnder
this.hideTreeIconEdit = options.hideTreeIconEdit
this.hideTreeIconView = options.hideTreeIconView
this.buildCurrentObjectTree().catch((e) => {
console.log(e)
})

View file

@ -21,7 +21,11 @@
style="width: 100%;"
>
<q-tab name="uiSettings" label="Visuals & Functionality" />
<q-tab name="uiSettings" label="Visuals & Accessibility" />
<q-tab name="docSettings" label="Document view/edit" />
<q-tab name="popupSettings" label="Popup dialogs" />
<q-tab name="treeSettings" label="Hierarchical tree" />
<q-separator dark />
<q-tab name="keybinds" label="Keybinds" />
@ -52,7 +56,13 @@
<div class="col-12">
<div class="text-h6">
Program looks & Accessibility
Visuals & Accessibility
</div>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Visuals
</div>
</div>
@ -71,6 +81,12 @@
/>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Accessibility
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Accessibility - Text shadow
@ -116,6 +132,12 @@
/>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Application extras
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide Welcome screen social links
@ -161,13 +183,48 @@
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide Fantasia mascot
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Hides the amazingly adorable and awesome Fantasia, the tiny arcane dragon.
<br>
How could you! :(
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.hidePlushes"
/>
</div>
</div>
</q-scroll-area>
</q-tab-panel>
<q-tab-panel name="docSettings" dark class="q-pt-sm">
<q-scroll-area
class="programSettingsScrollArea"
visible
dark
:thumb-style="thumbStyle"
>
<div class="row justify-start">
<div class="col-12">
<div class="text-h6 q-mt-lg">
Document view settings
<div class="text-h6">
Document view/edit
</div>
</div>
<div class="col-3 optionWrapper">
<div class="col-12">
<div class="text-bold q-mt-xl">
Document control bar
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Disable document control bar
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
@ -184,7 +241,7 @@
/>
</div>
<div class="col-3 optionWrapper">
<div class="col-4 optionWrapper">
<div class="optionTitle">
Disable document guides
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
@ -199,7 +256,13 @@
/>
</div>
<div class="col-3 optionWrapper">
<div class="col-12">
<div class="text-bold q-mt-xl">
Document body
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Disable document tooltips
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
@ -214,7 +277,7 @@
/>
</div>
<div class="col-3 optionWrapper">
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide empty fields
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
@ -231,9 +294,63 @@
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Prevent auto-scrolling
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Determines if the documents will recall their scroll distances and auto-scroll on switching ot not.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.preventAutoScroll"
/>
</div>
</div>
</q-scroll-area>
</q-tab-panel>
<q-tab-panel name="popupSettings" dark class="q-pt-sm">
<q-scroll-area
class="programSettingsScrollArea"
visible
dark
:thumb-style="thumbStyle"
>
<div class="row justify-start">
<div class="col-12">
<div class="text-h6 q-mt-lg">
Quick-search & Quick-add popups
<div class="text-h6">
Popup dialogs
</div>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Universal dialog settings
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Close quick popups with same key
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This allows for closing of the quick-search and quick-add popups with the same key combination that was used to open them to begin with.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.allowQuickPopupSameKeyClose"
/>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Quick-Seach dialog
</div>
</div>
@ -271,24 +388,78 @@
/>
</div>
</div>
</q-scroll-area>
</q-tab-panel>
<q-tab-panel name="treeSettings" dark class="q-pt-sm">
<q-scroll-area
class="programSettingsScrollArea"
visible
dark
:thumb-style="thumbStyle"
>
<div class="row justify-start">
<div class="col-12">
<div class="text-h6">
Hierarchical tree
</div>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Tag settings
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Close quick popups with same key
Hide tags in tree
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This allows for closing of the quick-search and quick-add popups with the same key combination that was used to open them to begin with.
Determines if the tags show in the hierarchical tree at all
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.allowQuickPopupSameKeyClose"
<q-toggle
v-model="options.noTags"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Top tags in tree
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Show tags at the top of the hierarchical tree
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.tagsAtTop"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Compact tags
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Determine if the tags should be shown as individual categories or they should show as one big category with each tag as a subcategory.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.compactTags"
/>
</div>
<div class="col-12">
<div class="text-h6 q-mt-lg">
Hierarchy tree
<div class="col-12">
<div class="text-bold q-mt-xl">
Tree behavior
</div>
</div>
@ -339,6 +510,12 @@
/>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Information display settings
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide document count entirely
@ -384,51 +561,6 @@
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide tags in tree
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Determines if the tags show in the hierarchical tree at all
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.noTags"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Top tags in tree
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Show tags at the top of the hierarchical tree
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.tagsAtTop"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Compact tags
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
Determine if the tags should be shown as individual categories or they should show as one big category with each tag as a subcategory.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.compactTags"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide order numbers
@ -444,8 +576,75 @@
/>
</div>
<div class="col-12">
<div class="text-bold q-mt-xl">
Icon settings
</div>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide extra icons
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This option hides icons that are normally shown for convinience, but don't actually add any functiuonality.
<br>
For example the "Open document" icon next to document with no children nodes that can just as well opened with a normal left click instead of clicking on the icon.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.hideTreeExtraIcons"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide "Add under" icon
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This option hides the "Add a new document belonging under XY" icon.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.hideTreeIconAddUnder"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide "Edit" icon
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This option hides the "Edit XY" icon.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.hideTreeIconEdit"
/>
</div>
<div class="col-4 optionWrapper">
<div class="optionTitle">
Hide "Open" icon
<q-icon name="mdi-help-circle" size="16px" class="q-ml-md">
<q-tooltip :delay="500">
This option hides the "Open XY" icon.
</q-tooltip>
</q-icon>
</div>
<q-toggle
v-model="options.hideTreeIconView"
/>
</div>
</div>
</q-scroll-area>
</q-scroll-area>
</q-tab-panel>
<q-tab-panel name="keybinds" dark>
@ -683,9 +882,11 @@ export default class ProgramSettings extends DialogBase {
options: OptionsStateInteface = {
_id: "settings",
darkMode: false,
preventAutoScroll: false,
textShadow: false,
doubleDashDocCount: false,
hideDeadCrossThrough: false,
hidePlushes: false,
tagsAtTop: false,
noTags: false,
compactTags: false,
@ -706,6 +907,10 @@ export default class ProgramSettings extends DialogBase {
hideTooltipsStart: false,
hideTooltipsProject: false,
hideTreeOrderNumbers: false,
hideTreeExtraIcons: false,
hideTreeIconAddUnder: false,
hideTreeIconEdit: false,
hideTreeIconView: false,
userKeybindList: []
}

View file

@ -112,7 +112,7 @@ a {
}
.q-notification.bg-info {
max-width: 500px;
max-width: 550px;
border: 2px solid var(--q-color-dark);
color: var(--q-color-dark);
@ -203,6 +203,21 @@ a {
}
}
.q-notification__avatar {
height: 135px;
width: 135px;
margin-right: 30px;
flex-shrink: 0;
border-radius: 0;
margin-top: 15px;
margin-bottom: 15px;
img {
width: auto !important;
object-fit: contain;
}
}
.isDeadIndicator {
margin-right: 5px;
font-weight: 600;

View file

@ -43,22 +43,34 @@
- New action for **Hiearachical Tree**
- Add new document type: `DOCUMENT TYPE`
- Only available in the root-categories
- Expand all
- Collapse all
- Expand all under this nodd
- Collapse all under this node
- Copy name
- Copy text color
- Copy background color
- Open document
- Edit document
- Create new document with this document as parent
- Copy this document
- Delete document
- Added a special description field for categories that become visible only when the document is switches to the category mode
- Added Fantasia mascot in the app! ^_^
- Different document tabs now keep scroll distance and resume wherever you left them at
- Added support for default empty keybinds
- Added a dedicated button that opens the connected documents straight from the little chips in relationship fields while in edit mode
- Added support for background color for documents
- Added support for "Minor document" mode switch for better organization and visual representation of documents
- Added support for "Dead/Gone/Destroyed" mode switch for better organization and visual representation of documents
- Added trivia concerning Fantasia mascot
- Added support for direct opening of documents in edit mode from the hierarchy tree without needing to open the document in view mode first
- Added option: Hide Fantasia mascot
- Added option: Accessibility - Hide strike-through
- Added option: Accessibility - Hide order numbers
- Added option: Hide extra icons
- Added option: Hide "Add under" icon
- Added option: Hide "Edit" icon
- Added option: Hide "Open" icon
- Added option: Prevent auto-scrolling
- Added functionality to copy existing documents along with all their contents
- Added keybind: Close all tabs without changes except for this
- Added keybind: Close all tabs without changes
@ -71,6 +83,7 @@
- Changed focusing of the hierarchy tree search input from CTRL + SHIFT + W to CTRL + SHIFT +T
- Updated fullscreen editor looks to work more like a proper document editor
- Unified icons for same actions across the app
- Program settings have been separated into multiple tabs and sub-groups in order to be actually possible to navigate effectively
- Reordered the basic document settings inside the app and separated them from the document content
- Adjusted maximum width of switch fields to make them look like spaggeti
- Updated the Advanced search guide with new additions and added one new Trivia popup text concerning it

View file

@ -13,6 +13,7 @@ export interface I_OpenedDocument{
hasEdits: boolean
isNew: boolean
url: string
scrollDistance?: number
extraFields: I_ExtraDocumentFields[]
}

View file

@ -302,8 +302,14 @@ export default class PageDocumentDisplay extends BaseClass {
this.disableDocumentControlBar = options.disableDocumentControlBar
this.isDarkMode = options.darkMode
this.hideEmptyFields = options.hideEmptyFields
this.preventAutoScroll = options.preventAutoScroll
}
/**
* Determines if the documents will recall their scroll distances and auto-scroll on switching ot not.
*/
preventAutoScroll = false
/**
* Determines if the document control bar is show or hidden
*/
@ -357,12 +363,48 @@ export default class PageDocumentDisplay extends BaseClass {
*/
@Watch("$route", { immediate: true, deep: true })
async onUrlChange () {
window.removeEventListener("scroll", this.watchPageScroll)
window.removeEventListener("scroll", this.watchPageScroll)
window.removeEventListener("scroll", this.watchPageScroll)
await this.sleep(50)
const doc = this.findRequestedOrActiveDocument() as I_OpenedDocument
window.scrollTo({ top: 0, behavior: "auto" })
await this.reloadLocalContent().catch(e => console.log(e))
window.scrollTo({ top: 0, behavior: "auto" })
const scrollTop = (doc.scrollDistance && !this.preventAutoScroll) ? doc.scrollDistance : 0
window.scrollTo({ top: scrollTop, behavior: "auto" })
window.removeEventListener("scroll", this.watchPageScroll)
window.removeEventListener("scroll", this.watchPageScroll)
window.removeEventListener("scroll", this.watchPageScroll)
window.addEventListener("scroll", this.watchPageScroll)
}
decounceScrollTimer = false as any
watchPageScroll () {
if (this.preventAutoScroll) {
return
}
if (this.decounceScrollTimer) {
window.clearTimeout(this.decounceScrollTimer)
}
this.decounceScrollTimer = window.setTimeout(() => {
const currentScroll = window.scrollY
const dataCopy: I_OpenedDocument = extend(true, {}, this.findRequestedOrActiveDocument())
dataCopy.scrollDistance = currentScroll
// Attempts to add current document to list
const dataPass = { doc: dataCopy, treeAction: false }
this.SSET_updateOpenedDocument(dataPass)
}, 200)
}
/**
@ -431,6 +473,10 @@ export default class PageDocumentDisplay extends BaseClass {
this.currentData.extraFields = objectFields
if (this.$route.query?.editMode) {
this.editMode = true
}
const dataCopy: I_OpenedDocument = extend(true, {}, this.currentData)
// Attempts to add current document to list
@ -732,7 +778,7 @@ export default class PageDocumentDisplay extends BaseClass {
const isCategory = this.retrieveFieldValue(this.currentData, "categorySwitch")
const ignoredList = ["breakDocumentSettings", "name", "documentColor", "documentBackgroundColor", "parentDoc", "order", "categorySwitch", "minorSwitch", "deadSwitch", "tags"]
return (!isCategory || ignoredList.includes(currentFieldID))
return (((!isCategory && currentFieldID !== "categoryDescription") || ignoredList.includes(currentFieldID)) || (isCategory && currentFieldID === "categoryDescription"))
}
/**

View file

@ -14,8 +14,17 @@
<h2 class="mainProjectTitle"> {{projectName}}</h2>
</div>
<div class="hintWrapper" v-if="!hideTooltipsProject && allDocuments > 0">
<div>
<q-icon name="mdi-help" size="30px" class="q-mr-md" />
<div v-if="hidePlushes">
<q-icon name="mdi-help" size="30px" class="q-mr-md" />
</div>
<div class="mascotWrapper" v-if="!hidePlushes">
<q-img
:src="plusheForm"
style="max-width: 135px; height: 100%;"
contain
/>
</div>
<div>
<div class="text-subtitle1 text-dark text-bold text-left">
@ -117,6 +126,7 @@ import PouchDB from "pouchdb"
import newDocumentDialog from "src/components/dialogs/NewDocument.vue"
import { retrieveCurrentProjectName } from "src/scripts/projectManagement/projectManagent"
import { tipsTricks } from "src/scripts/utilities/tipsTricks"
import { summonAllPlusheForms } from "src/scripts/utilities/plusheMascot"
@Component({
components: {
@ -135,8 +145,14 @@ export default class ProjectScreen extends BaseClass {
onSettingsChange () {
const options = this.SGET_options
this.hideTooltipsProject = options.hideTooltipsProject
this.hidePlushes = options.hidePlushes
}
/**
* Hides the mascot... nooo :(
*/
hidePlushes = false
/**
* Determines if the project screen help hint should show or not
*/
@ -155,6 +171,7 @@ export default class ProjectScreen extends BaseClass {
Loading.hide()
this.tipTrickMessage = tipsTricks[Math.floor(Math.random() * tipsTricks.length)]
this.plusheForm = summonAllPlusheForms[Math.floor(Math.random() * summonAllPlusheForms.length)]
}
/**
@ -167,6 +184,11 @@ export default class ProjectScreen extends BaseClass {
*/
tipTrickMessage = ""
/**
* Current form the majestic Fantasia desided to take this fine day!
*/
plusheForm = ""
/****************************************************************/
// GRAPH FUNCTIONALITY
/****************************************************************/
@ -369,6 +391,13 @@ export default class ProjectScreen extends BaseClass {
<style lang="scss">
.mascotWrapper {
height: 135px;
width: 135px;
margin-right: 30px;
flex-shrink: 0;
}
.hintWrapper {
max-width: 950px;
display: flex;

View file

@ -120,13 +120,19 @@ export const chaptersBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",
type: "break",
sizing: 12
},
{
id: "content",
name: "Chapter content",

View file

@ -120,6 +120,13 @@ export const charactersBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const currenciesBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const eventsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const itemsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const languagesBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const locationsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const loreNotesBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const magicBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const mythsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const politicalGroupsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const racesBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const religionsBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -120,6 +120,13 @@ export const techBlueprint: I_Blueprint = {
`,
sizing: 12
},
{
id: "categoryDescription",
name: "Category description",
type: "wysiwyg",
icon: "mdi-folder-edit-outline",
sizing: 12
},
{
id: "breakBasic",
name: "Basic information",

View file

@ -96,6 +96,10 @@ export const saveDocument = async (document: I_OpenedDocument, allOpenedDocument
documentCopy.hasEdits = false
documentCopy.editMode = false
if (documentCopy.scrollDistance) {
delete (documentCopy.scrollDistance)
}
// Save the document
try {
await CurrentObjectDB.put(documentCopy)

View file

@ -0,0 +1,11 @@
import fantasia_didYouKnow from "src/assets/fantasiaPlushe/fantasia_didYouKnow.png"
import fantasia_flop from "src/assets/fantasiaPlushe/fantasia_flop.png"
import fantasia_hug from "src/assets/fantasiaPlushe/fantasia_hug.png"
import fantasia_reading from "src/assets/fantasiaPlushe/fantasia_reading.png"
export const summonAllPlusheForms: string[] = [
fantasia_didYouKnow,
fantasia_flop,
fantasia_hug,
fantasia_reading
]

View file

@ -19,5 +19,6 @@ export const tipsTricks: string[] = [
"Don't hesitate to add as many sub-categories as you want. You can always move stuff around later and reorganize your project structure.",
"Tags are a very powerful feature that allow you to add semi-categories to the project tree and create additional search parameters to aid navigation.",
"There is a roadmap of planned features on Patreon! If you are curious about what will eventually come, feel free to read it.",
"DISCLAIMER: No magical creatures were harmed during the making of this software."
"DISCLAIMER: No magical creatures were harmed during the making of this software.",
"The adorable little arcane dragon you might have seen while using the app is called Fantasia and she is the official mascot of FA!"
]

View file

@ -2,6 +2,7 @@ export interface OptionsStateInteface {
_id: string,
_rev?: string,
darkMode: boolean
preventAutoScroll: boolean
textShadow: boolean
hideDeadCrossThrough: boolean
doubleDashDocCount: boolean
@ -25,6 +26,11 @@ export interface OptionsStateInteface {
hideTooltipsStart: boolean
hideTooltipsProject: boolean
hideTreeOrderNumbers: boolean
hideTreeExtraIcons: boolean
hideTreeIconAddUnder: boolean
hideTreeIconEdit: boolean
hideTreeIconView: boolean
hidePlushes: boolean
userKeybindList: any[]
treeWidth?: number
@ -34,10 +40,12 @@ function state (): OptionsStateInteface {
return {
_id: "settings",
darkMode: false,
preventAutoScroll: false,
textShadow: false,
hideDeadCrossThrough: false,
doubleDashDocCount: false,
hideWelcomeScreenSocials: false,
hidePlushes: false,
noTags: false,
tagsAtTop: false,
compactTags: false,
@ -57,6 +65,10 @@ function state (): OptionsStateInteface {
hideTooltipsStart: false,
hideTooltipsProject: false,
hideTreeOrderNumbers: false,
hideTreeExtraIcons: false,
hideTreeIconAddUnder: false,
hideTreeIconEdit: false,
hideTreeIconView: false,
treeWidth: 374,
userKeybindList: []
}

View file

@ -1,6 +1,5 @@
- Switch field: Template (sigh... maybe???)
- Save scroll distance when switching tabs (consider some auto-scroll when opening edit mode)
- Mass tag rename
- Add "Related notes"
@ -17,6 +16,7 @@
- Add intelligent responsive design to the left tree and document body (maybe button to pull the left bar in and out?)
- Add "Open all search matches" button in the Quick-search that opens a new page with a list of items
- Allow showing of document types under tags
### Project settings