Skip to content

Commit de6d36a

Browse files
committed
public folder removed from gitignore, file management upgrade
1 parent ceaaf42 commit de6d36a

21 files changed

+192
-486
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
.DS_Store
22
node_modules
33
/dist
4-
/public
54

65
# local env files
76
.env.local

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
"vue-i18n": "^8.5.0",
1616
"vue-resource": "^1.5.1",
1717
"vue-router": "^3.0.1",
18-
"vue-upload-component": "^2.8.16",
1918
"vue2-editor": "^2.6.6",
2019
"vuetify": "^1.3.0",
2120
"vuex": "^3.0.1"

src/crud/components/ChildrenTable.vue

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,6 @@ export default {
176176
type: Boolean,
177177
default: true
178178
},
179-
fileMode: {
180-
type: Boolean,
181-
default: false
182-
},
183179
meta: {
184180
type: Array,
185181
default: () => []

src/crud/components/Crud.vue

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
:itemElements="itemElements"
99
:deleteMode="deleteMode"
1010
:editButton="editButton"
11-
:fileMode="fileMode"
1211
:tableFields="tableFields"
1312
:primaryKey="primaryKey"
1413
:activeColumnName="activeColumnName"
@@ -76,10 +75,6 @@ export default {
7675
type: Object,
7776
default: () => {}
7877
},
79-
fileMode: {
80-
type: Boolean,
81-
default: false
82-
},
8378
watchForCreation: {
8479
type: Boolean,
8580
default: false

src/crud/components/DataTableClientSide.vue

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,13 @@
9595
:customButtons='customButtons'
9696
:deleteMode='deleteMode'
9797
:itemElements="itemElements"
98-
:fileMode="fileMode"
9998
:columnTextModes="columnTextModes"
10099
@edit="edit"
101100
@custom="custom"
102101
@suspend="suspend"
103102
@restore="restore"
104103
@destroy="destroy"
105104
@editItemElements="editItemElements"
106-
@download="download"
107-
@showImage="showImage"
108105
></data-table-row>
109106
</template>
110107
<template slot="pageText" slot-scope="{ pageStart, pageStop, itemsLength }">

src/crud/components/DataTableRow.vue

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -52,42 +52,34 @@
5252
</v-btn>
5353
<span>{{ $t('buttons.delete') }}</span>
5454
</v-tooltip>
55-
<!-- file mode -->
56-
<template v-if="fileMode">
57-
<v-tooltip top>
58-
<v-btn outline fab small class="xs white--text" color="blue" @click="download(props.item)" slot="activator">
59-
<v-icon>file_download</v-icon>
60-
</v-btn>
61-
<span>{{ $t('buttons.download') }}</span>
62-
</v-tooltip>
63-
<v-tooltip top v-if="isImage(props.item.type)">
64-
<v-btn outline fab small class="xs white--text" color="blue" @click="showImage(props.item)" slot="activator">
65-
<v-icon>search</v-icon>
66-
</v-btn>
67-
<span>{{ $t('buttons.show') }}</span>
68-
</v-tooltip>
69-
</template>
7055
</td>
7156
<!-- table fields -->
7257
<td v-if="key != 'meta'" v-for="(field, key) in props.item" :key="key">
7358
<span v-if="columnTextModes[key] == 'html'" v-html="field"></span>
7459
<span v-else-if="columnTextModes[key] == 'cropped'" class="cell-nowrap">{{ field | cropped }}</span>
7560
<span v-else-if="columnTextModes[key] == 'text'">{{ field }}</span>
61+
<span v-else-if="columnTextModes[key] == 'file'">
62+
<file-details :field="fileFieldToJSON(field)"></file-details>
63+
</span>
7664
</td>
7765
</tr>
7866
</template>
7967

8068
<script>
8169
import MessagesMixin from "../mixins/messages-datatable-row.js";
70+
import FileDetails from './FileDetails.vue'
71+
8272
export default {
8373
mixins: [MessagesMixin],
74+
components: {
75+
FileDetails
76+
},
8477
props: [
8578
'props',
8679
'editButton',
8780
'customButtons',
8881
'deleteMode',
8982
'itemElements',
90-
"fileMode",
9183
"columnTextModes"
9284
],
9385
filters: {
@@ -101,9 +93,12 @@ export default {
10193
rField = field
10294
}
10395
return rField
104-
}
96+
},
10597
},
10698
methods: {
99+
fileFieldToJSON(field) {
100+
return JSON.parse(field)
101+
},
107102
activityClass(isActive) {
108103
let className = ""
109104
if(['soft', 'both'].includes(this.deleteMode)){
@@ -133,13 +128,7 @@ export default {
133128
suspend(id) {this.$emit('suspend', id)},
134129
restore(id) {this.$emit('restore', id)},
135130
destroy(id) {this.$emit('destroy', id)},
136-
editItemElements(name, id) {this.$emit('editItemElements', name, id)},
137-
download(item) {this.$emit('download', item)},
138-
isImage(mime) {
139-
let supportedMimeTypes = ["image/jpeg", "image/png"];
140-
return supportedMimeTypes.includes(mime);
141-
},
142-
showImage(image) {this.$emit('showImage', image)},
131+
editItemElements(name, id) {this.$emit('editItemElements', name, id)}
143132
}
144133
};
145134
</script>

src/crud/components/DataTableServerSide.vue

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,13 @@
8080
:customButtons='customButtons'
8181
:deleteMode='deleteMode'
8282
:itemElements="itemElements"
83-
:fileMode="fileMode"
8483
:columnTextModes="columnTextModes"
8584
@edit="edit"
8685
@custom="custom"
8786
@suspend="suspend"
8887
@restore="restore"
8988
@destroy="destroy"
9089
@editItemElements="editItemElements"
91-
@download="download"
92-
@showImage="showImage"
9390
></data-table-row>
9491
</template>
9592
<template slot="pageText" slot-scope="{ pageStart, pageStop, itemsLength }">
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<template>
2+
<span style="display: flex;align-items: center">
3+
<v-tooltip top>
4+
<v-btn fab small class="xs white--text" color="secondary" slot="activator" @click="download(field)">
5+
<v-icon>save</v-icon>
6+
</v-btn>
7+
<span>{{ $t('buttons.download') }}</span>
8+
</v-tooltip>
9+
<v-tooltip top :style="{ visibility: isImage(field.mime) ? 'visible' : 'hidden' }">
10+
<v-btn fab small class="xs white--text" color="primary" slot="activator" @click="showImage(field)">
11+
<v-icon>search</v-icon>
12+
</v-btn>
13+
<span>{{ $t('buttons.show') }}</span>
14+
</v-tooltip>
15+
<div style="padding-left:30px;">
16+
<h4>{{ field.filename }}</h4>
17+
<p>{{ field.mime }}</p>
18+
<p>{{ field.size | fileSize }}</p>
19+
</div>
20+
</span>
21+
</template>
22+
23+
<script>
24+
import {
25+
mapState,
26+
mapMutations
27+
} from "vuex";
28+
import {
29+
humanFileSize,
30+
download
31+
} from '@/helpers/functions'
32+
33+
export default {
34+
props: [
35+
'field'
36+
],
37+
filters: {
38+
fileSize(size) {
39+
return humanFileSize(size)
40+
}
41+
},
42+
computed: {
43+
...mapState([
44+
"filesPath",
45+
]),
46+
},
47+
methods: {
48+
...mapMutations("crud", [
49+
"openImageContainer",
50+
]),
51+
download(item) {
52+
download(this.filesPath + item.path, item.filename);
53+
},
54+
isImage(mime) {
55+
let supportedMimeTypes = ["image/jpeg", "image/png", "image/gif"];
56+
return supportedMimeTypes.includes(mime);
57+
},
58+
showImage(image) {
59+
this.openImageContainer(image);
60+
},
61+
},
62+
i18n: {
63+
messages: {
64+
pl: {
65+
buttons: {
66+
download: "Pobierz",
67+
show: "Pokaż",
68+
},
69+
},
70+
en: {
71+
buttons: {
72+
download: "Download",
73+
show: "Show",
74+
},
75+
},
76+
}
77+
}
78+
}
79+
</script>

src/crud/components/ImageContainer.vue

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
</v-card-title>
66
<v-card-text>
77
<div>
8-
<h3 class="headline mb-0">{{ imageContainer.item.description }}</h3>
9-
<div>{{ imageContainer.item.filename }}</div>
10-
<div>{{ imageContainer.item.size }}</div>
8+
<h1>{{ imageContainer.item.filename }}</h1>
9+
<div>{{ imageContainer.item.mime }}</div>
10+
<div>{{ imageContainer.item.size | fileSize }}</div>
1111
</div>
1212
<img :src="image" style="max-height: 50vh;">
1313
</v-card-text>
@@ -21,6 +21,9 @@
2121
</template>
2222

2323
<script>
24+
import {
25+
humanFileSize
26+
} from '@/helpers/functions'
2427
import {
2528
mapState,
2629
mapMutations
@@ -35,7 +38,12 @@
3538
'imageContainer'
3639
]),
3740
image() {
38-
return this.imageContainer.item.meta ? this.filesPath + this.imageContainer.item.meta.path + '/' + this.imageContainer.item.filename : ''
41+
return this.filesPath + this.imageContainer.item.path + '/' + this.imageContainer.item.filename
42+
}
43+
},
44+
filters: {
45+
fileSize(size) {
46+
return humanFileSize(size)
3947
}
4048
},
4149
methods: {
@@ -58,5 +66,4 @@
5866
}
5967
}
6068
}
61-
62-
</script>
69+
</script>

0 commit comments

Comments
 (0)