0.1.7-DEV-7.1: added "leading figure fields", a few tweaks and renamed export/import functionality to save/load

This commit is contained in:
Elvanos 2021-05-15 14:23:39 +02:00
parent 15b6e8bc4a
commit a68a8cc2c5
22 changed files with 354 additions and 156 deletions

View file

@ -109,14 +109,14 @@
color="primary"
outline
:disable="!projectExists"
@click="commenceExport"
@click="commenceSave"
>
<q-tooltip
:delay="500"
anchor="bottom middle"
self="top middle"
>
Export current project
Save current project
</q-tooltip>
</q-btn>
@ -340,7 +340,7 @@ import { saveDocument } from "src/scripts/databaseManager/documentManager"
import { createNewWithParent } from "src/scripts/documentActions/createNewWithParent"
import { copyDocument } from "src/scripts/documentActions/copyDocument"
import { retrieveCurrentProjectName, exportProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject } from "src/scripts/projectManagement/projectManagent"
@Component({
components: {
@ -533,10 +533,10 @@ export default class DocumentControl extends BaseClass {
/****************************************************************/
retrieveCurrentProjectName = retrieveCurrentProjectName
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
message: "<h4>Saving current project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -544,7 +544,7 @@ export default class DocumentControl extends BaseClass {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
/****************************************************************/
@ -717,7 +717,7 @@ export default class DocumentControl extends BaseClass {
this.openedDocsWithEdits = this.SGET_allOpenedDocuments.docs.filter(doc => doc.hasEdits)
const setup = {
message: "<h4>Saving project...</h4>",
message: "<h4>Saving all opened documents...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,

View file

@ -30,9 +30,9 @@
/>
<!-- Import project dialog -->
<importProjectCheckDialog
:dialog-trigger="importProjectDialogTrigger"
@trigger-dialog-close="importProjectDialogClose"
<loadProjectCheckDialog
:dialog-trigger="loadProjectDialogTrigger"
@trigger-dialog-close="loadProjectDialogClose"
/>
<!-- Merge project dialog -->
@ -218,10 +218,10 @@
active
active-class="bg-gunmetal-light text-cultured"
class="noHigh"
@click="commenceExport"
@click="commenceSave"
:disable="!projectExists"
>
<q-item-section>Export current project</q-item-section>
<q-item-section>Save current project</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-package-variant-closed" />
</q-item-section>
@ -233,9 +233,9 @@
active
active-class="bg-gunmetal-light text-cultured"
class="noHigh"
@click="importProjectAssignUID"
@click="loadProjectAssignUID"
>
<q-item-section>Import existing project</q-item-section>
<q-item-section>Load existing project</q-item-section>
<q-item-section avatar>
<q-icon name="mdi-package-variant" />
</q-item-section>
@ -471,7 +471,7 @@ import { Component, Watch } from "vue-property-decorator"
import BaseClass from "src/BaseClass"
import projectCloseCheckDialog from "src/components/dialogs/ProjectCloseCheck.vue"
import keybindCheatsheetDialog from "src/components/dialogs/KeybindCheatsheet.vue"
import importProjectCheckDialog from "src/components/dialogs/ImportProjectCheck.vue"
import loadProjectCheckDialog from "src/components/dialogs/LoadProjectCheck.vue"
import mergeProjectCheckDialog from "src/components/dialogs/MergeProjectCheck.vue"
import newProjectCheckDialog from "src/components/dialogs/NewProjectCheck.vue"
import repairProjectDialog from "src/components/dialogs/RepairProject.vue"
@ -485,7 +485,7 @@ import tipsTricksTriviaDialog from "src/components/dialogs/TipsTricksTrivia.vue"
import licenseDialog from "src/components/dialogs/License.vue"
import { Loading, QSpinnerGears } from "quasar"
import { retrieveCurrentProjectName, exportProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject } from "src/scripts/projectManagement/projectManagent"
import { toggleDevTools } from "src/scripts/utilities/devTools"
import appLogo from "src/assets/appLogo.png"
@ -494,7 +494,7 @@ import appLogo from "src/assets/appLogo.png"
components: {
projectCloseCheckDialog,
keybindCheatsheetDialog,
importProjectCheckDialog,
loadProjectCheckDialog,
mergeProjectCheckDialog,
newProjectCheckDialog,
aboutAppDialog,
@ -606,10 +606,10 @@ export default class AppControl extends BaseClass {
// Export project action
/****************************************************************/
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
message: "<h4>Saving current project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -617,7 +617,7 @@ export default class AppControl extends BaseClass {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
/****************************************************************/
@ -637,13 +637,13 @@ export default class AppControl extends BaseClass {
// Import project dialog
/****************************************************************/
importProjectDialogTrigger: string | false = false
importProjectDialogClose () {
this.importProjectDialogTrigger = false
loadProjectDialogTrigger: string | false = false
loadProjectDialogClose () {
this.loadProjectDialogTrigger = false
}
importProjectAssignUID () {
this.importProjectDialogTrigger = this.generateUID()
loadProjectAssignUID () {
this.loadProjectDialogTrigger = this.generateUID()
}
/****************************************************************/

View file

@ -70,7 +70,7 @@
v-if="!preventPreviewsTabs"
:document-id="document._id"
:external-close-trigger="documentPreviewClose"
:custom-delay="1500"
:custom-delay="1750"
/>
<q-btn

View file

@ -60,6 +60,7 @@
:special-z-index="999999999"
:custom-anchor="'top start'"
:custom-self="'center right'"
:custom-delay="1200"
/>
<q-item-section avatar>
<q-icon

View file

@ -6,14 +6,14 @@
>
<q-card dark class="documentCloseDialog">
<q-card-section class="row justify-center">
<h6 class="text-center q-my-sm">Import existing project</h6>
<h6 class="text-center q-my-sm">Load existing project</h6>
</q-card-section>
<q-card-section class="row justify-center q-mx-xl">
<div>
Please note that the imported project will <span class="text-bold text-secondary">COMPLETELY OVERWRITE</span> the currently opened project.
Please note that the loaded project will <span class="text-bold text-secondary">COMPLETELY OVERWRITE</span> the currently opened project.
<br>
If you haven't done so already, please export your current project first to prevent a <span class="text-bold text-secondary">FULL LOSS</span> of all your current project data!
If you haven't done so already, please save your current project first to prevent a <span class="text-bold text-secondary">FULL LOSS</span> of all your current project data!
</div>
</q-card-section>
@ -25,16 +25,16 @@
v-close-popup />
<q-btn
flat
label="Export project"
label="Save project"
color="primary"
@click="commenceExport"
@click="commenceSave"
/>
<q-btn
flat
label="Import project"
label="Load project"
color="primary"
v-close-popup
@click="importProject()" />
@click="saveProject()" />
</q-card-actions>
</q-card>
</q-dialog>
@ -45,13 +45,13 @@
import { Component, Watch } from "vue-property-decorator"
import DialogBase from "src/components/dialogs/_DialogBase"
import { retrieveCurrentProjectName, exportProject, importExistingProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject, importExistingProject } from "src/scripts/projectManagement/projectManagent"
import { Loading, QSpinnerGears } from "quasar"
@Component({
components: { }
})
export default class ImportProjectCheckDialog extends DialogBase {
export default class LoadProjectCheck extends DialogBase {
/**
* React to dialog opening request
*/
@ -64,7 +64,7 @@ export default class ImportProjectCheckDialog extends DialogBase {
this.openDialog()
}
else {
this.importProject()
this.saveProject()
}
}
}
@ -83,9 +83,9 @@ export default class ImportProjectCheckDialog extends DialogBase {
/**
* Import a new project
*/
importProject () {
saveProject () {
const setup = {
message: "<h4>Importing selected project...</h4>",
message: "<h4>Loading selected project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -100,10 +100,10 @@ export default class ImportProjectCheckDialog extends DialogBase {
/**
* Export the current project
*/
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
message: "<h4>Saving current project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -111,7 +111,7 @@ export default class ImportProjectCheckDialog extends DialogBase {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
}
</script>

View file

@ -13,7 +13,7 @@
<div>
Please note that merging another project will cause <span class="text-bold text-secondary">IRREVERSIBLE CHANGES</span> to the currently opened project.
<br>
If you haven't done so already, please export your current project first to prevent <span class="text-bold text-secondary">POSSIBLE COMPLICATIONS</span> concerning your current project data!
If you haven't done so already, please save your current project first to prevent <span class="text-bold text-secondary">POSSIBLE COMPLICATIONS</span> concerning your current project data!
</div>
</q-card-section>
@ -25,9 +25,9 @@
v-close-popup />
<q-btn
flat
label="Export project"
label="Save project"
color="primary"
@click="commenceExport"
@click="commenceSave"
/>
<q-btn
flat
@ -45,7 +45,7 @@
import { Component, Watch } from "vue-property-decorator"
import DialogBase from "src/components/dialogs/_DialogBase"
import { retrieveCurrentProjectName, exportProject, mergeExistingProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject, mergeExistingProject } from "src/scripts/projectManagement/projectManagent"
import { Loading, QSpinnerGears } from "quasar"
@Component({
@ -97,10 +97,10 @@ export default class MergeProjectCheckDialog extends DialogBase {
/**
* Export the current project
*/
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
message: "<h4>Saving current project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -108,7 +108,7 @@ export default class MergeProjectCheckDialog extends DialogBase {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
}
</script>

View file

@ -13,7 +13,7 @@
<div>
Please note that the new project will <span class="text-bold text-secondary">COMPLETELY OVERWRITE</span> the currently opened project.
<br>
If you haven't done so already, please export your current project first to prevent a <span class="text-bold text-secondary">FULL LOSS</span> of all your current project data!
If you haven't done so already, please save your current project first to prevent a <span class="text-bold text-secondary">FULL LOSS</span> of all your current project data!
</div>
</q-card-section>
@ -42,9 +42,9 @@
<q-btn
flat
v-if="projectExists"
label="Export project"
label="Save project"
color="primary"
@click="commenceExport"
@click="commenceSave"
/>
<q-btn
flat
@ -63,14 +63,14 @@
import { Component, Watch } from "vue-property-decorator"
import DialogBase from "src/components/dialogs/_DialogBase"
import { retrieveCurrentProjectName, exportProject, createNewProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject, createNewProject } from "src/scripts/projectManagement/projectManagent"
import { Loading, QSpinnerGears, extend } from "quasar"
@Component({
components: { }
})
export default class ImportProjectCheckDialog extends DialogBase {
export default class NewProjectCheck extends DialogBase {
/**
* React to dialog opening request
*/
@ -162,10 +162,10 @@ export default class ImportProjectCheckDialog extends DialogBase {
/**
* Export current project
*/
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
message: "<h4>Saving current project...</h4>",
spinnerColor: "primary",
messageColor: "cultured",
spinnerSize: 120,
@ -173,7 +173,7 @@ export default class ImportProjectCheckDialog extends DialogBase {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
}
</script>

View file

@ -29,7 +29,7 @@
flat
label="Export project"
color="primary"
@click="commenceExport"
@click="commenceSave"
/>
<q-btn
flat
@ -90,7 +90,7 @@ import { extend, Loading, QSpinnerGears } from "quasar"
import { Component, Watch } from "vue-property-decorator"
import DialogBase from "src/components/dialogs/_DialogBase"
import { retrieveCurrentProjectName, exportProject } from "src/scripts/projectManagement/projectManagent"
import { retrieveCurrentProjectName, saveProject } from "src/scripts/projectManagement/projectManagent"
import { I_ShortenedDocument } from "src/interfaces/I_OpenedDocument"
import { I_Blueprint } from "src/interfaces/I_Blueprint"
@ -300,7 +300,7 @@ export default class RepairProjectDialog extends DialogBase {
/**
* Export the current project
*/
async commenceExport () {
async commenceSave () {
const projectName = await retrieveCurrentProjectName()
const setup = {
message: "<h4>Exporting current project...</h4>",
@ -311,7 +311,7 @@ export default class RepairProjectDialog extends DialogBase {
// @ts-ignore
spinner: QSpinnerGears
}
exportProject(projectName, Loading, setup, this.$q)
saveProject(projectName, Loading, setup, this.$q)
}
}
</script>

View file

@ -180,7 +180,7 @@
style="flex-grow: 1;"
popup-content-class="menuResizer"
dense
:ref="`multieRelationshipField${this.inputDataBluePrint.id}`"
:ref="`multiRelationshipField${this.inputDataBluePrint.id}`"
:options="filterList"
use-input
:option-disable="opt => Object(opt) === opt ? disabledIDList.includes(opt._id) : true"
@ -208,7 +208,7 @@
<q-chip
removable
dense
@remove="scope.removeAtIndex(scope.index)"
@remove="removeInput(scope)"
:tabindex="scope.tabindex"
:color="(scope.opt.isAutoGenerated) ? 'teal-3' : 'accent'"
text-color="dark"
@ -248,6 +248,7 @@
</q-tooltip>
</q-btn>
<documentPreview
:custom-delay="1200"
v-if="(!recursive && !preventPreviewsDocuments) && !scope.opt.isAutoGenerated"
:document-id="scope.opt._id"
:external-close-trigger="documentPreviewClose"
@ -363,6 +364,7 @@
:external-close-trigger="documentPreviewClose"
:custom-anchor="'top start'"
:custom-self="'center right'"
:custom-delay="1500"
/>
<q-menu
touch-position
@ -563,6 +565,19 @@ export default class Field_MultiRelationship extends FieldBase {
// INPUT HANDLING
/****************************************************************/
async removeInput (scope: {
index: number
removeAtIndex: (index: number) => void
}) {
scope.removeAtIndex(scope.index)
await this.$nextTick()
/*eslint-disable */
// @ts-ignore
this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`].hidePopup()
/* eslint-enable */
}
/**
* Watch changes to the prefilled data already existing in the field and update local input accordingly
* Also reload the local object list
@ -631,9 +646,9 @@ export default class Field_MultiRelationship extends FieldBase {
await this.$nextTick()
/*eslint-disable */
// @ts-ignore
this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`].setOptionIndex(-1)
this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`].setOptionIndex(-1)
// @ts-ignore
this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`].moveOptionSelection(1, true)
this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`].moveOptionSelection(1, true)
/* eslint-enable */
}
@ -646,7 +661,7 @@ export default class Field_MultiRelationship extends FieldBase {
this.filterList = this.allTypeDocuments
.filter((obj) => !obj.isMinor && obj._id !== this.currentId)
if (this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`] && this.filterList.length > 0) {
if (this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`] && this.filterList.length > 0) {
this.refocusSelect().catch(e => console.log(e))
}
})
@ -661,7 +676,7 @@ export default class Field_MultiRelationship extends FieldBase {
this.filterList = advancedDocumentFilter(needle, this.filterList, this.SGET_allBlueprints, this.SGET_allDocuments.docs)
.filter((obj) => obj._id !== this.currentId)
if (this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`] && this.filterList.length > 0) {
if (this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`] && this.filterList.length > 0) {
this.refocusSelect().catch(e => console.log(e))
}
})
@ -778,7 +793,7 @@ export default class Field_MultiRelationship extends FieldBase {
selectValue () {
/*eslint-disable */
// @ts-ignore
this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`].updateInputValue ('')
this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`].updateInputValue ('')
/* eslint-enable */
this.processInput()
@ -930,7 +945,7 @@ export default class Field_MultiRelationship extends FieldBase {
addNewRelationshipObject (input: string) {
/*eslint-disable */
// @ts-ignore
this.$refs[`multieRelationshipField${this.inputDataBluePrint.id}`].updateInputValue ('')
this.$refs[`multiRelationshipField${this.inputDataBluePrint.id}`].updateInputValue ('')
/* eslint-enable */
const newObjectType = this.inputDataBluePrint?.relationshipSettings?.connectedObjectType as unknown as string

View file

@ -203,8 +203,7 @@
v-if="scope.opt.label && scope.opt.label.length > 0"
removable
dense
@click="openNewTab(scope.opt)"
@remove="scope.removeAtIndex(scope.index)"
@remove="removeInput(scope)"
:tabindex="scope.tabindex"
:color="(scope.opt.isAutoGenerated) ? 'teal-3' : 'accent'"
text-color="dark"
@ -247,6 +246,7 @@
v-if="(!recursive && !preventPreviewsDocuments) && !scope.opt.isAutoGenerated"
:document-id="scope.opt._id"
:external-close-trigger="documentPreviewClose"
:custom-delay="1200"
/>
<q-menu
v-if="!scope.opt.isAutoGenerated"
@ -359,6 +359,7 @@
:external-close-trigger="documentPreviewClose"
:custom-anchor="'top start'"
:custom-self="'center right'"
:custom-delay="1500"
/>
<q-menu
touch-position
@ -518,6 +519,19 @@ export default class Field_SingleRelationship extends FieldBase {
// INPUT HANDLING
/****************************************************************/
async removeInput (scope: {
index: number
removeAtIndex: (index: number) => void
}) {
scope.removeAtIndex(scope.index)
await this.$nextTick()
/*eslint-disable */
// @ts-ignore
this.$refs[`singleRelationshipField${this.inputDataBluePrint.id}`].hidePopup()
/* eslint-enable */
}
/**
* Watch changes to the prefilled data already existing in the field and update local input accordingly
* Also reload the local object list
@ -849,12 +863,18 @@ export default class Field_SingleRelationship extends FieldBase {
})
}
selectValue () {
async selectValue () {
/*eslint-disable */
// @ts-ignore
this.$refs[`singleRelationshipField${this.inputDataBluePrint.id}`].updateInputValue ('')
/* eslint-enable */
await this.$nextTick()
/*eslint-disable */
// @ts-ignore
this.$refs[`singleRelationshipField${this.inputDataBluePrint.id}`].hidePopup()
/* eslint-enable */
this.processInput()
}

View file

@ -46,6 +46,7 @@
### QoL adjustments
- All "Export and Import" texts have been changed to "Save and Load" due to the inclusion of the new, actual, "Export" feature
- Added a note about possible color searching in the advanced search cheatsheet popup window
- Added input reseting after adding/selection in the relationship fields
- Revamped the field order in all document types since `Other names` field moved to `Document settings` from `Basic information` as it is not a mandatory system field specially used in advanced search
@ -54,6 +55,8 @@
- Field labels received a facelift to look more appealing to look at when showing on smaller screens
- Attempteds to "prettify" the display mode of the document fields in case the "Hide empty fields" option is ticked on
- Added a tiny bit of color to help discern which relationship is one-way and which is two-way
- Adjusted the single and multi relationship fields not showing suggestion popups when a value is removed the list
- Adjusted the single relationship fields to hide the suggest list when a value is selected from the list
## 0.1.6a

View file

@ -2,9 +2,9 @@
<q-page class="column items-center justify-center">
<!-- Import project dialog -->
<importProjectCheckDialog
:dialog-trigger="importProjectDialogTrigger"
@trigger-dialog-close="importProjectDialogClose"
<loadProjectCheckDialog
:dialog-trigger="loadProjectDialogTrigger"
@trigger-dialog-close="loadProjectDialogClose"
/>
<!-- New project dialog -->
@ -51,9 +51,9 @@
:outline="isDarkMode"
size="md"
class="q-px-xl q-py-xs"
@click="importProjectAssignUID()"
@click="saveProjectAssignUID()"
>
Import existing project
Load existing project
</q-btn>
</div>
@ -104,7 +104,7 @@
import { Component, Watch } from "vue-property-decorator"
import BaseClass from "src/BaseClass"
import importProjectCheckDialog from "src/components/dialogs/ImportProjectCheck.vue"
import loadProjectCheckDialog from "src/components/dialogs/LoadProjectCheck.vue"
import newProjectCheckDialog from "src/components/dialogs/NewProjectCheck.vue"
import { shell } from "electron"
@ -112,7 +112,7 @@ import { retrieveCurrentProjectName } from "src/scripts/projectManagement/projec
@Component({
components: {
importProjectCheckDialog,
loadProjectCheckDialog,
newProjectCheckDialog
}
})
@ -212,13 +212,13 @@ export default class WelcomeScreen extends BaseClass {
/****************************************************************/
// IMPORT PROJECT DIALOG
/****************************************************************/
importProjectDialogTrigger: string | false = false
importProjectDialogClose () {
this.importProjectDialogTrigger = false
loadProjectDialogTrigger: string | false = false
loadProjectDialogClose () {
this.loadProjectDialogTrigger = false
}
importProjectAssignUID () {
this.importProjectDialogTrigger = this.generateUID()
saveProjectAssignUID () {
this.loadProjectDialogTrigger = this.generateUID()
}
}
</script>

View file

@ -13,7 +13,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Known Magic/Spells",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
sizing: 6,
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -40,7 +40,7 @@ export const charactersBlueprint: I_Blueprint = {
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 6,
sizing: 12,
relationshipSettings: {
connectedObjectType: "tech",
connectedField: "pairedCharacter"
@ -52,7 +52,6 @@ export const charactersBlueprint: I_Blueprint = {
type: "list",
icon: "mdi-sword",
sizing: 12,
isLegacy: true,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -60,6 +59,7 @@ export const charactersBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
predefinedListExtras: {
affix: "Level",
extraSelectValueList: [
@ -1314,6 +1314,17 @@ export const charactersBlueprint: I_Blueprint = {
sizing: 12
},
{
id: "leadingPoliticalLeaders",
name: "Leading Figure of Ideologies/Political groups",
type: "manyToManyRelationship",
icon: "mdi-bank-outline",
sizing: 6,
relationshipSettings: {
connectedObjectType: "politicalGroups",
connectedField: "leadingCharacters"
}
},
{
id: "pairedConnectionPolGroup",
name: "Connected to Ideologies/Political groups",
@ -1330,7 +1341,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Member of Ideologies/Political groups",
type: "manyToManyRelationship",
icon: "mdi-bank-outline",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "politicalGroups",
connectedField: "pairedBelongingCharacter"
@ -1341,7 +1352,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Ally of Ideologies/Political groups",
type: "manyToManyRelationship",
icon: "mdi-bank-outline",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "politicalGroups",
connectedField: "pairedAllyCharacter"
@ -1352,13 +1363,24 @@ export const charactersBlueprint: I_Blueprint = {
name: "Enemy of Ideologies/Political groups",
type: "manyToManyRelationship",
icon: "mdi-bank-outline",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "politicalGroups",
connectedField: "pairedEnemyCharacter"
}
},
{
id: "leadingOtherLeaders",
name: "Leading Figure of Organizations/Other groups",
type: "manyToManyRelationship",
icon: "mdi-account-group",
sizing: 6,
relationshipSettings: {
connectedObjectType: "guilds",
connectedField: "leadingCharacters"
}
},
{
id: "pairedConnectionOtherGroups",
name: "Connected to Organizations/Other groups",
@ -1375,7 +1397,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Member of Organizations/Other groups",
type: "manyToManyRelationship",
icon: "mdi-account-group",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "guilds",
connectedField: "pairedBelongingCharacter"
@ -1386,7 +1408,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Ally of Organizations/Other groups",
type: "manyToManyRelationship",
icon: "mdi-account-group",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "guilds",
connectedField: "pairedAllyCharacter"
@ -1397,13 +1419,24 @@ export const charactersBlueprint: I_Blueprint = {
name: "Enemy of Organizations/Other groups",
type: "manyToManyRelationship",
icon: "mdi-account-group",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "guilds",
connectedField: "pairedEnemyCharacter"
}
},
{
id: "leadingReligiousLeaders",
name: "Leading Figure of Teachings/Religious groups",
type: "manyToManyRelationship",
icon: "fas fa-ankh",
sizing: 6,
relationshipSettings: {
connectedObjectType: "religions",
connectedField: "leadingCharacters"
}
},
{
id: "pairedConnectionRelGroup",
name: "Connected to Teachings/Religious groups",
@ -1420,7 +1453,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Member of Teachings/Religious groups",
type: "manyToManyRelationship",
icon: "fas fa-ankh",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "religions",
connectedField: "pairedBelongingCharacter"
@ -1431,7 +1464,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Ally of Teachings/Religious groups",
type: "manyToManyRelationship",
icon: "fas fa-ankh",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "religions",
connectedField: "pairedAllyCharacter"
@ -1442,12 +1475,24 @@ export const charactersBlueprint: I_Blueprint = {
name: "Enemy of Teachings/Religious groups",
type: "manyToManyRelationship",
icon: "fas fa-ankh",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "religions",
connectedField: "pairedEnemyCharacter"
}
},
{
id: "leadingMagicalLeaders",
name: "Leading Figure of Schools of Magic/Magical groups",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
sizing: 6,
relationshipSettings: {
connectedObjectType: "magic",
connectedField: "leadingCharacters"
}
},
{
id: "pairedConnectionMagicGroup",
name: "Connected to Schools of Magic/Magical groups",
@ -1464,7 +1509,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Member of Schools of Magic/Magical groups",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "magic",
connectedField: "pairedBelongingCharacter"
@ -1475,7 +1520,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Ally of Schools of Magic/Magical groups",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "magic",
connectedField: "pairedAllyCharacter"
@ -1486,12 +1531,24 @@ export const charactersBlueprint: I_Blueprint = {
name: "Enemy of Schools of Magic/Magical groups",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "magic",
connectedField: "pairedEnemyCharacter"
}
},
{
id: "leadingTechLeaders",
name: "Leading Figure of Sciences/Technological groups",
type: "manyToManyRelationship",
icon: "fas fa-wrench",
sizing: 6,
relationshipSettings: {
connectedObjectType: "tech",
connectedField: "leadingCharacters"
}
},
{
id: "pairedConnectionTechGroup",
name: "Connected to Sciences/Technological groups",
@ -1508,7 +1565,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Member of Sciences/Technological groups",
type: "manyToManyRelationship",
icon: "fas fa-wrench",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "tech",
connectedField: "pairedBelongingCharacter"
@ -1519,7 +1576,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Ally of Sciences/Technological groups",
type: "manyToManyRelationship",
icon: "fas fa-wrench",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "tech",
connectedField: "pairedAllyCharacter"
@ -1530,7 +1587,7 @@ export const charactersBlueprint: I_Blueprint = {
name: "Enemy of Sciences/Technological groups",
type: "manyToManyRelationship",
icon: "fas fa-wrench",
sizing: 6,
sizing: 4,
relationshipSettings: {
connectedObjectType: "tech",
connectedField: "pairedEnemyCharacter"

View file

@ -12,7 +12,6 @@ export const currenciesBlueprint: I_Blueprint = {
name: "Connected to Items",
type: "manyToManyRelationship",
icon: "mdi-sword",
isLegacy: true,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -20,6 +19,7 @@ export const currenciesBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "items",

View file

@ -7,6 +7,24 @@ export const guildsBlueprint: I_Blueprint = {
icon: "mdi-account-group",
category: "Groups/Teachings",
extraFields: [
{
id: "leaders",
name: "Leading Figures (legacy)",
type: "manyToNoneRelationship",
icon: "mdi-crown",
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
Pleae move your data to the corresponding new fields.
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "characters"
}
},
{
id: "breakDocumentSettings",
name: "Document settings",
@ -225,13 +243,14 @@ export const guildsBlueprint: I_Blueprint = {
tooltip: "The amount of people affected by/following this group/organization."
},
{
id: "leaders",
id: "leadingCharacters",
name: "Leading Figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
relationshipSettings: {
connectedObjectType: "characters"
connectedObjectType: "characters",
connectedField: "leadingOtherLeaders"
}
},
{

View file

@ -13,8 +13,6 @@ export const itemsBlueprint: I_Blueprint = {
name: "Capable of utilizing Spells/Magic",
type: "manyToManyRelationship",
icon: "fas fa-hat-wizard",
isLegacy: true,
sizing: 6,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -22,6 +20,8 @@ export const itemsBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "magic",
connectedField: "pairedItems"
@ -32,8 +32,7 @@ export const itemsBlueprint: I_Blueprint = {
name: "Connected to Currencies",
type: "manyToManyRelationship",
icon: "fas fa-coins",
sizing: 6,
isLegacy: true,
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -41,6 +40,8 @@ export const itemsBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
relationshipSettings: {
connectedObjectType: "currencies",
connectedField: "pairedItems"

View file

@ -8,12 +8,11 @@ export const magicBlueprint: I_Blueprint = {
category: "Groups/Teachings",
extraFields: [
{
id: "pairedCharacter",
name: "Magic/Spell Users",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 4,
isLegacy: true,
id: "leaders",
name: "Leading Figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -21,6 +20,25 @@ export const magicBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
relationshipSettings: {
connectedObjectType: "characters"
}
},
{
id: "pairedCharacter",
name: "Magic/Spell Users",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
Pleae move your data to the corresponding new fields.
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
relationshipSettings: {
connectedObjectType: "characters",
connectedField: "pairedMagic"
@ -31,8 +49,7 @@ export const magicBlueprint: I_Blueprint = {
name: "Important items",
type: "manyToManyRelationship",
icon: "mdi-sword",
sizing: 4,
isLegacy: true,
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -40,6 +57,7 @@ export const magicBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
relationshipSettings: {
connectedObjectType: "items",
connectedField: "pairedMagic"
@ -261,16 +279,16 @@ export const magicBlueprint: I_Blueprint = {
icon: "mdi-account-group-outline",
sizing: 3,
tooltip: "The amount of people affected by/following this magical group."
},
{
id: "leaders",
id: "leadingCharacters",
name: "Leading Figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
sizing: 4,
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
relationshipSettings: {
connectedObjectType: "characters"
connectedObjectType: "characters",
connectedField: "leadingMagicalLeaders"
}
},
{
@ -278,7 +296,7 @@ export const magicBlueprint: I_Blueprint = {
name: "Type",
type: "multiSelect",
icon: "fas fa-monument",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Magical institution",
"Magical teaching",
@ -292,7 +310,7 @@ export const magicBlueprint: I_Blueprint = {
name: "General schools of magic",
type: "multiSelect",
icon: "fas fa-hand-sparkles",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Abjuration ",
"Conjuration",
@ -303,7 +321,7 @@ export const magicBlueprint: I_Blueprint = {
"Necromancy",
"Transmutation",
"World alteration",
"Raw magical energy manipulation",
"Raw energy manipulation",
"Other"
]
},

View file

@ -7,6 +7,25 @@ export const politicalGroupsBlueprint: I_Blueprint = {
icon: "mdi-bank-outline",
category: "Groups/Teachings",
extraFields: [
{
id: "leaders",
name: "Leading Figures (legacy)",
type: "manyToNoneRelationship",
icon: "mdi-crown",
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
Pleae move your data to the corresponding new fields.
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "characters"
}
},
{
id: "breakDocumentSettings",
name: "Document settings",
@ -222,16 +241,19 @@ export const politicalGroupsBlueprint: I_Blueprint = {
sizing: 3,
tooltip: "The amount of people affected by/following this political group/ideology."
},
{
id: "leaders",
id: "leadingCharacters",
name: "Leading Figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
relationshipSettings: {
connectedObjectType: "characters"
connectedObjectType: "characters",
connectedField: "leadingPoliticalLeaders"
}
},
{
id: "formGovernment",
name: "Form of government",

View file

@ -7,6 +7,24 @@ export const religionsBlueprint: I_Blueprint = {
icon: "fas fa-ankh",
category: "Groups/Teachings",
extraFields: [
{
id: "leaders",
name: "Leading Figures (legacy)",
type: "manyToNoneRelationship",
icon: "mdi-crown",
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
Pleae move your data to the corresponding new fields.
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "characters"
}
},
{
id: "breakDocumentSettings",
name: "Document settings",
@ -223,22 +241,25 @@ export const religionsBlueprint: I_Blueprint = {
sizing: 3,
tooltip: "The amount of people affected by/following this religious school/teaching."
},
{
id: "leaders",
id: "leadingCharacters",
name: "Leading Figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
sizing: 4,
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
relationshipSettings: {
connectedObjectType: "characters"
connectedObjectType: "characters",
connectedField: "leadingReligiousLeaders"
}
},
{
id: "formReligion",
name: "Form of religion",
type: "multiSelect",
icon: "fas fa-yin-yang",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Cult",
"Free-form faith",
@ -254,7 +275,7 @@ export const religionsBlueprint: I_Blueprint = {
name: "Type of religion",
type: "multiSelect",
icon: "fas fa-sun",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Ancestor worship",
"Animism",

View file

@ -8,12 +8,10 @@ export const techBlueprint: I_Blueprint = {
category: "Groups/Teachings",
extraFields: [
{
id: "pairedCharacter",
name: "Technology/Science Users",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
isLegacy: true,
id: "leaders",
name: "Leading figures (legacy)",
type: "manyToNoneRelationship",
icon: "mdi-crown",
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
@ -21,6 +19,26 @@ export const techBlueprint: I_Blueprint = {
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
sizing: 12,
relationshipSettings: {
connectedObjectType: "characters"
}
},
{
id: "pairedCharacter",
name: "Technology/Science Users",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 12,
tooltip: `
This field is obsolete and no longer serves any purpose.
<br>
Pleae move your data to the corresponding new fields.
<br>
This field will automatically disappear once all data is gone from it.
`,
isLegacy: true,
relationshipSettings: {
connectedObjectType: "characters",
connectedField: "pairedTech"
@ -243,14 +261,16 @@ export const techBlueprint: I_Blueprint = {
sizing: 3,
tooltip: "The amount of people affected by/following this scientific school/teaching."
},
{
id: "leaders",
name: "Leading figures",
type: "manyToNoneRelationship",
icon: "mdi-crown",
sizing: 4,
id: "leadingCharacters",
name: "Leading Figures",
type: "manyToManyRelationship",
icon: "mdi-account",
sizing: 6,
relationshipSettings: {
connectedObjectType: "characters"
connectedObjectType: "characters",
connectedField: "leadingTechLeaders"
}
},
{
@ -258,7 +278,7 @@ export const techBlueprint: I_Blueprint = {
name: "Type",
type: "multiSelect",
icon: "fas fa-cogs",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Factory/Manufacture",
"Invention",
@ -275,7 +295,7 @@ export const techBlueprint: I_Blueprint = {
name: "Scientific branches",
type: "multiSelect",
icon: "fas fa-vial",
sizing: 4,
sizing: 3,
predefinedSelectValues: [
"Agricultural science",
"Astrology",

View file

@ -63,7 +63,7 @@ export const createNewProject = async (projectName: string, vueRouter: any, quas
* Open an file dialog asking the use for location where to export the project
* @param projectName The name of the project to export
*/
export const exportProject = (projectName: string, Loading: any, loadingSetup: any, quasar: any) => {
export const saveProject = (projectName: string, Loading: any, loadingSetup: any, quasar: any) => {
remote.dialog.showOpenDialog({
properties: ["openDirectory"]
}).then(async (result) => {
@ -109,7 +109,7 @@ export const exportProject = (projectName: string, Loading: any, loadingSetup: a
Loading.hide()
quasar.notify({
type: 'positive',
message: `Project succesfully exported`
message: `Project succesfully saved`
})
/* eslint-enable */
}).catch(err => {
@ -208,7 +208,7 @@ export const importExistingProject = (vueRouter: any, Loading: any, loadingSetup
quasar.notify({
type: 'positive',
message: `Project succesfully imported`
message: `Project succesfully loaded`
})
vueInstance.SSET_resetDocuments()

View file

@ -78,10 +78,11 @@
- Tag management (coloring)
- Drag/drop tree list
- Add printing support
- Support for muliple document types support in relationship fields
### Low priority
- Horizonatal fields (title AND value next to each other. Might need a designer)
- Horizontal fields (title AND value next to each other. Might need a designer)
- Simple data imports (maybe?)
- Vanity project-wide word count
- Automatic thumbnail generation AND re-checking based on date