Formatting, folder settings and remove system added.

This commit is contained in:
Kasen IO 2020-04-09 01:48:13 -04:00
parent d86033dfbf
commit 32c06299bb
2 changed files with 341 additions and 213 deletions

View file

@ -77,228 +77,240 @@
lg="3" lg="3"
class="py-1 column-item" class="py-1 column-item"
> >
<draggable :group="options" :list="items" handle=".handle"> <draggable :group="options" :list="items" handle=".handle">
<v-item-group <v-item-group
v-for="item in items" v-for="item in items"
v-bind:key="item.uuid" v-bind:key="item.uuid"
>
<v-list-item
one-line
v-if="!item.folder"
class="mx-auto draggable-card"
max-width="344"
outlined
> >
<div class="handle pa-2"> <v-list-item
<v-icon color="orange darken-2">mdi-blur-linear</v-icon> one-line
</div> v-if="!item.folder"
<v-list-item-content class="mx-auto draggable-card"
class="pb-1 pt-2 pl-4" max-width="344"
> outlined
<div v-show="settings.displayDensity.size > 0" class="overline" style="font-size: 0.825rem !important;">{{item.type}}</div> >
<v-list-item-title class="subtitle-1 mb-1">{{item.name}}</v-list-item-title> <div class="handle pa-2">
<v-list-item-subtitle v-show="settings.displayDensity.size == 2">{{item.url}}</v-list-item-subtitle> <v-icon color="orange darken-2">mdi-blur-linear</v-icon>
</v-list-item-content> </div>
<v-list-item-content
<v-menu bottom left> class="pb-1 pt-2 pl-4"
<template v-slot:activator="{ on }">
<!-- settings.displayDensity.size >= 1 -->
<v-btn
:style="{backgroundColor: (getIconColor(item.type)) }"
v-show="settings.displayDensity.size >= 1"
medium
fab
dark
v-on="on"
> >
<v-icon>{{displayIcon(item.type)}}</v-icon> <div v-show="settings.displayDensity.size > 0" class="overline" style="font-size: 0.825rem !important;">{{item.type}}</div>
</v-btn> <v-list-item-title class="subtitle-1 mb-1">{{item.name}}</v-list-item-title>
<!-- settings.displayDensity.size < 1 --> <v-list-item-subtitle v-show="settings.displayDensity.size == 2">{{item.url}}</v-list-item-subtitle>
<v-btn </v-list-item-content>
:style="{backgroundColor: (getIconColor(item.type)) }"
v-show="settings.displayDensity.size < 1" <v-menu bottom left>
small <template v-slot:activator="{ on }">
fab <!-- settings.displayDensity.size >= 1 -->
dark <v-btn
v-on="on" :style="{backgroundColor: (getIconColor(item.type)) }"
> v-show="settings.displayDensity.size >= 1"
<v-icon>{{displayIcon(item.type)}}</v-icon> medium
</v-btn> fab
</template> dark
v-on="on"
>
<v-icon>{{displayIcon(item.type)}}</v-icon>
</v-btn>
<!-- settings.displayDensity.size < 1 -->
<v-btn
:style="{backgroundColor: (getIconColor(item.type)) }"
v-show="settings.displayDensity.size < 1"
small
fab
dark
v-on="on"
>
<v-icon>{{displayIcon(item.type)}}</v-icon>
</v-btn>
</template>
<v-list color="grey darken-3"> <v-list color="grey darken-3">
<v-list-item <v-list-item
@click="useItem(item.type, item.url)" @click="useItem(item.type, item.url)"
> >
<v-list-item-title>Use</v-list-item-title> <v-list-item-title>Use</v-list-item-title>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-play</v-icon> <v-icon>mdi-play</v-icon>
</v-list-item-action> </v-list-item-action>
</v-list-item> </v-list-item>
<v-list-item <v-list-item
@click=" @click="
editDialog.show = true; editDialog.show = true;
editDialog.uuid = item.uuid; editDialog.uuid = item.uuid;
editDialog.data.type = item.type; editDialog.data.type = item.type;
editDialog.data.name = item.name; editDialog.data.name = item.name;
editDialog.data.url = item.url; editDialog.data.url = item.url;
" "
> >
<v-list-item-title>Edit</v-list-item-title> <v-list-item-title>Edit</v-list-item-title>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-pencil</v-icon> <v-icon>mdi-pencil</v-icon>
</v-list-item-action> </v-list-item-action>
</v-list-item> </v-list-item>
<v-list-item <v-list-item
@click="shareDialog.show = true; shareDialog.data.url = item.url; shareDialog.data.uuid = item.uuid; sendAppMessage('web-to-script-request-nearby-users', '')" @click="shareDialog.show = true; shareDialog.data.url = item.url; shareDialog.data.uuid = item.uuid; sendAppMessage('web-to-script-request-nearby-users', '')"
> >
<v-list-item-title>Share</v-list-item-title> <v-list-item-title>Share</v-list-item-title>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-share</v-icon> <v-icon>mdi-share</v-icon>
</v-list-item-action> </v-list-item-action>
</v-list-item> </v-list-item>
<v-list-item <v-list-item
@click="removeDialog.show = true; removeDialog.uuid = item.uuid;" @click="removeDialog.show = true; removeDialog.uuid = item.uuid;"
color="red darken-1" color="red darken-1"
> >
<v-list-item-title>Remove</v-list-item-title> <v-list-item-title>Remove</v-list-item-title>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-minus</v-icon> <v-icon>mdi-minus</v-icon>
</v-list-item-action> </v-list-item-action>
</v-list-item> </v-list-item>
</v-list> </v-list>
</v-menu> </v-menu>
</v-list-item> </v-list-item>
<!-- The Folder List Item --> <!-- The Folder List Item -->
<v-list-group <v-list-group
v-if="item.folder" v-if="item.folder"
class="top-level-folder" class="top-level-folder"
> >
<!-- prepend-icon="mdi-blur-linear" put this in the list group, no idea how to make it a handle yet though... --> <!-- prepend-icon="mdi-blur-linear" put this in the list group, no idea how to make it a handle yet though... -->
<template v-slot:activator> <template v-slot:activator>
<v-list-item <v-list-item
one-line one-line
class="mx-auto" class="mx-auto"
max-width="344" max-width="344"
outlined outlined
>
<v-icon class="folder-icon" color="teal">mdi-folder-settings</v-icon>
{{item.name}}
</v-list-item>
</template>
<v-btn block medium color="primary"
@click="
editFolderDialog.show = true;
editFolderDialog.uuid = item.uuid;
editFolderDialog.data.name = item.name;
"
> >
{{item.name}} Edit Folder
</v-list-item> </v-btn>
</template> <v-btn block medium color="red"
@click="removeFolderDialog.show = true; removeFolderDialog.uuid = item.uuid;"
<v-col
cols="12"
sm="6"
md="4"
lg="3"
class="py-1 column-item"
>
<draggable
:list="item.items"
:group="options"
>
<v-item-group
v-for="item in item.items"
v-bind:key="item.uuid"
>
<v-list-item
one-line
class="mx-auto draggable-card"
outlined
> >
<div class="handle pa-2"> Delete Folder
<v-icon color="orange darken-2">mdi-blur-linear</v-icon> </v-btn>
</div> <v-col
<v-list-item-content class="pb-1 pt-2"> cols="12"
<div v-show="settings.displayDensity.size > 0" class="overline" style="font-size: 0.825rem !important;">{{item.type}}</div> sm="6"
<v-list-item-title class="subtitle-1 mb-1">{{item.name}}</v-list-item-title> md="4"
<v-list-item-subtitle v-show="settings.displayDensity.size == 2">{{item.url}}</v-list-item-subtitle> lg="3"
</v-list-item-content> class="py-1 column-item"
>
<draggable
:list="item.items"
:group="options"
>
<v-item-group
v-for="item in item.items"
v-bind:key="item.uuid"
>
<v-list-item
one-line
class="mx-auto draggable-card"
outlined
>
<div class="handle pa-2">
<v-icon color="orange darken-2">mdi-blur-linear</v-icon>
</div>
<v-list-item-content class="pb-1 pt-2">
<div v-show="settings.displayDensity.size > 0" class="overline" style="font-size: 0.825rem !important;">{{item.type}}</div>
<v-list-item-title class="subtitle-1 mb-1">{{item.name}}</v-list-item-title>
<v-list-item-subtitle v-show="settings.displayDensity.size == 2">{{item.url}}</v-list-item-subtitle>
</v-list-item-content>
<v-menu bottom left> <v-menu bottom left>
<template v-slot:activator="{ on }"> <template v-slot:activator="{ on }">
<!-- settings.displayDensity.size >= 1 --> <!-- settings.displayDensity.size >= 1 -->
<v-btn <v-btn
:style="{backgroundColor: (getIconColor(item.type)) }" :style="{backgroundColor: (getIconColor(item.type)) }"
v-show="settings.displayDensity.size >= 1" v-show="settings.displayDensity.size >= 1"
medium medium
fab fab
dark dark
v-on="on" v-on="on"
> >
<v-icon>{{displayIcon(item.type)}}</v-icon> <v-icon>{{displayIcon(item.type)}}</v-icon>
</v-btn> </v-btn>
<!-- settings.displayDensity.size < 1 --> <!-- settings.displayDensity.size < 1 -->
<v-btn <v-btn
:style="{backgroundColor: (getIconColor(item.type)) }" :style="{backgroundColor: (getIconColor(item.type)) }"
v-show="settings.displayDensity.size < 1" v-show="settings.displayDensity.size < 1"
small small
fab fab
dark dark
v-on="on" v-on="on"
> >
<v-icon>{{displayIcon(item.type)}}</v-icon> <v-icon>{{displayIcon(item.type)}}</v-icon>
</v-btn> </v-btn>
</template> </template>
<v-list color="grey darken-3"> <v-list color="grey darken-3">
<v-list-item <v-list-item
@click="useItem(item.type, item.url)" @click="useItem(item.type, item.url)"
> >
<v-list-item-title>Use</v-list-item-title> <v-list-item-title>Use</v-list-item-title>
<v-list-item-action> <v-list-item-action>
<v-icon>mdi-play</v-icon> <v-icon>mdi-play</v-icon>
</v-list-item-action> </v-list-item-action>
</v-list-item>
<v-list-item
@click="
editDialog.show = true;
editDialog.uuid = item.uuid;
editDialog.data.type = item.type;
editDialog.data.name = item.name;
editDialog.data.url = item.url;
"
>
<v-list-item-title>Edit</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-pencil</v-icon>
</v-list-item-action>
</v-list-item>
<v-list-item
@click="shareDialog.show = true; shareDialog.data.url = item.url; shareDialog.data.uuid = item.uuid; sendAppMessage('web-to-script-request-nearby-users', '')"
>
<v-list-item-title>Share</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-share</v-icon>
</v-list-item-action>
</v-list-item>
<v-list-item
@click="removeDialog.show = true; removeDialog.uuid = item.uuid;"
color="red darken-1"
>
<v-list-item-title>Remove</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-minus</v-icon>
</v-list-item-action>
</v-list-item>
</v-list>
</v-menu>
</v-list-item> </v-list-item>
</v-item-group>
<v-list-item </draggable>
@click=" </v-col>
editDialog.show = true; </v-list-group>
editDialog.uuid = item.uuid; </v-item-group>
editDialog.data.type = item.type; </draggable>
editDialog.data.name = item.name;
editDialog.data.url = item.url;
"
>
<v-list-item-title>Edit</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-pencil</v-icon>
</v-list-item-action>
</v-list-item>
<v-list-item
@click="shareDialog.show = true; shareDialog.data.url = item.url; shareDialog.data.uuid = item.uuid; sendAppMessage('web-to-script-request-nearby-users', '')"
>
<v-list-item-title>Share</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-share</v-icon>
</v-list-item-action>
</v-list-item>
<v-list-item
@click="removeDialog.show = true; removeDialog.uuid = item.uuid;"
color="red darken-1"
>
<v-list-item-title>Remove</v-list-item-title>
<v-list-item-action>
<v-icon>mdi-minus</v-icon>
</v-list-item-action>
</v-list-item>
</v-list>
</v-menu>
</v-list-item>
</v-item-group>
</draggable>
</v-col>
</v-list-group>
</v-item-group>
</draggable>
</v-col> </v-col>
</template> </template>
</v-data-iterator> </v-data-iterator>
@ -340,6 +352,42 @@
</v-card> </v-card>
</v-dialog> </v-dialog>
<v-dialog
v-model="removeFolderDialog.show"
max-width="290"
>
<v-card>
<v-card-title class="headline">Remove Folder</v-card-title>
<v-card-text>
Are you sure you want to delete this folder <b>and</b> all items within from your inventory?
</v-card-text>
<v-card-actions>
<v-btn
color="blue"
class="px-3"
@click="removeFolderDialog.show = false"
>
No
</v-btn>
<v-spacer></v-spacer>
<v-btn
color="red"
class="px-3"
@click="removeFolderDialog.show = false; removeFolder(removeFolderDialog.uuid);"
>
Yes
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog <v-dialog
v-model="editDialog.show" v-model="editDialog.show"
@ -405,6 +453,55 @@
</v-card> </v-card>
</v-dialog> </v-dialog>
<v-dialog
v-model="editFolderDialog.show"
max-width="380"
>
<v-card>
<v-card-title class="headline">Edit Folder</v-card-title>
<v-form
ref="editFolderForm"
v-model="editFolderDialog.valid"
:lazy-validation="false"
>
<v-text-field
class="px-2"
label="Name"
v-model="editFolderDialog.data.name"
:rules="[v => !!v || 'Name is required.']"
required
></v-text-field>
<v-card-actions>
<v-btn
color="red"
class="px-3"
@click="editFolderDialog.show = false"
>
Cancel
</v-btn>
<v-spacer></v-spacer>
<v-btn
color="blue"
class="px-3"
:disabled="!editFolderDialog.valid"
@click="editFolderDialog.show = false; editFolder(editFolderDialog.uuid);"
>
Done
</v-btn>
</v-card-actions>
</v-form>
</v-card>
</v-dialog>
<v-dialog <v-dialog
v-model="createFolderDialog.show" v-model="createFolderDialog.show"
@ -814,6 +911,10 @@ export default {
show: false, show: false,
uuid: null, uuid: null,
}, },
removeFolderDialog: {
show: false,
uuid: null,
},
createFolderDialog: { createFolderDialog: {
show: false, show: false,
valid: false, valid: false,
@ -839,6 +940,14 @@ export default {
"url": null, "url": null,
}, },
}, },
editFolderDialog: {
show: false,
valid: false,
uuid: null, //
data: {
"name": null,
},
},
receiveDialog: { receiveDialog: {
show: false, show: false,
valid: false, valid: false,
@ -982,6 +1091,13 @@ export default {
createFolder: function(name) { createFolder: function(name) {
this.pushFolderToItems(name); this.pushFolderToItems(name);
}, },
editFolder: function(uuid) {
for (var i = 0; i < this.items.length; i++) {
if (this.items[i].uuid == uuid) {
this.items[i].name = this.editFolderDialog.data.name;
}
}
},
addItem: function(name, url) { addItem: function(name, url) {
var extensionRegex = /\.[0-9a-z]+$/i; // to detect the file type based on extension in the URL. var extensionRegex = /\.[0-9a-z]+$/i; // to detect the file type based on extension in the URL.
var detectedFileType = url.match(extensionRegex); var detectedFileType = url.match(extensionRegex);
@ -1005,6 +1121,13 @@ export default {
} }
} }
}, },
removeFolder: function(uuid) {
for (var i = 0; i < this.items.length; i++) {
if (this.items[i].uuid == uuid) {
this.items.splice(i, 1);
}
}
},
editItem: function(uuid) { editItem: function(uuid) {
for (var i = 0; i < this.items.length; i++) { for (var i = 0; i < this.items.length; i++) {
if (this.items[i].uuid == uuid) { if (this.items[i].uuid == uuid) {

View file

@ -2,6 +2,7 @@
.draggable-card { .draggable-card {
background-color: rgba(39,39,39, 1.0); background-color: rgba(39,39,39, 1.0);
margin: 5px 0px;
} }
.draggable-card .handle { .draggable-card .handle {
@ -24,6 +25,10 @@
width: 40px !important; width: 40px !important;
} }
.top-level-folder .folder-icon {
margin-right: 10px;
}
/* Second Level */ /* Second Level */
.v-list-group .column-item { .v-list-group .column-item {