navigation

This commit is contained in:
GMrrc 2024-11-15 16:07:38 +01:00
parent 9aec836b45
commit ec0afbb28c
3 changed files with 45 additions and 10 deletions

View File

@ -903,7 +903,9 @@ __webpack_require__.r(__webpack_exports__);
name: 'FileTable', name: 'FileTable',
data() { data() {
return { return {
files: [] // Liste des fichiers et dossiers récupérés files: [],
// Liste des fichiers et dossiers récupérés
current_dir: '/'
}; };
}, },
async mounted() { async mounted() {
@ -916,7 +918,7 @@ __webpack_require__.r(__webpack_exports__);
const client = (0,_nextcloud_files_dav__WEBPACK_IMPORTED_MODULE_0__.getClient)(); const client = (0,_nextcloud_files_dav__WEBPACK_IMPORTED_MODULE_0__.getClient)();
// Récupération des fichiers et dossiers à la racine // Récupération des fichiers et dossiers à la racine
const directoryItems = await client.getDirectoryContents('/files/admin'); //changer admin par le nom de l'utilisateur courant const directoryItems = await client.getDirectoryContents('/files/admin' + this.current_dir); //changer admin par le nom de l'utilisateur courant
// Mise à jour de la liste des fichiers et dossiers // Mise à jour de la liste des fichiers et dossiers
this.files = directoryItems.map(file => ({ this.files = directoryItems.map(file => ({
@ -935,6 +937,16 @@ __webpack_require__.r(__webpack_exports__);
if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`; if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`;
if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`; if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`;
return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`; return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`;
},
async handleClick(file) {
if (file.type === 'directory') {
// Si c'est un dossier, on change le répertoire courant et on fetch son contenu
this.current_dir = this.current_dir === '/' ? '/' + file.basename : this.current_dir + '/' + file.basename;
await this.fetchFiles();
} else {
// Si c'est un fichier, on ouvre le lien de téléchargement
window.open(file.href, '_blank');
}
} }
} }
}); });
@ -986,10 +998,11 @@ var render = function render() {
return _c("table", [_vm._m(0), _vm._v(" "), _c("tbody", _vm._l(_vm.files, function (file) { return _c("table", [_vm._m(0), _vm._v(" "), _c("tbody", _vm._l(_vm.files, function (file) {
return _c("tr", { return _c("tr", {
key: file.filename key: file.filename
}, [_c("td", [_c("a", { }, [_c("td", [_c("div", {
attrs: { on: {
href: file.href, click: function ($event) {
target: "_blank" return _vm.handleClick(file);
}
} }
}, [_vm._v(_vm._s(file.basename))])]), _vm._v(" "), _c("td", [_vm._v(_vm._s(file.type === "directory" ? "Dossier" : "Fichier"))]), _vm._v(" "), _c("td", [_vm._v(_vm._s(file.type === "directory" ? "-" : _vm.formatFileSize(file.size)))])]); }, [_vm._v(_vm._s(file.basename))])]), _vm._v(" "), _c("td", [_vm._v(_vm._s(file.type === "directory" ? "Dossier" : "Fichier"))]), _vm._v(" "), _c("td", [_vm._v(_vm._s(file.type === "directory" ? "-" : _vm.formatFileSize(file.size)))])]);
}), 0)]); }), 0)]);
@ -1346,6 +1359,11 @@ td a[data-v-36ad32b2] {
color: #4CAF50; color: #4CAF50;
text-decoration: none; text-decoration: none;
} }
/* Ajout du style pour le hover */
td div[data-v-36ad32b2] {
cursor: pointer; /* Change le curseur en main lors du survol */
}
`, ""]); `, ""]);
// Exports // Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@
<tr v-for="file in files" :key="file.filename"> <tr v-for="file in files" :key="file.filename">
<td> <td>
<!-- Affiche un lien cliquable vers le fichier ou le dossier --> <!-- Affiche un lien cliquable vers le fichier ou le dossier -->
<a :href="file.href" target="_blank">{{ file.basename }}</a> <div @click='handleClick(file)'>{{ file.basename }}</div>
</td> </td>
<td>{{ file.type === 'directory' ? 'Dossier' : 'Fichier' }}</td> <td>{{ file.type === 'directory' ? 'Dossier' : 'Fichier' }}</td>
<td>{{ file.type === 'directory' ? '-' : formatFileSize(file.size) }}</td> <td>{{ file.type === 'directory' ? '-' : formatFileSize(file.size) }}</td>
@ -28,7 +28,8 @@ export default {
name: 'FileTable', name: 'FileTable',
data() { data() {
return { return {
files: [] // Liste des fichiers et dossiers récupérés files: [], // Liste des fichiers et dossiers récupérés
current_dir : '/'
}; };
}, },
async mounted() { async mounted() {
@ -41,7 +42,7 @@ export default {
const client = getClient(); const client = getClient();
// Récupération des fichiers et dossiers à la racine // Récupération des fichiers et dossiers à la racine
const directoryItems = await client.getDirectoryContents('/files/admin'); //changer admin par le nom de l'utilisateur courant const directoryItems = await client.getDirectoryContents('/files/admin' + this.current_dir); //changer admin par le nom de l'utilisateur courant
// Mise à jour de la liste des fichiers et dossiers // Mise à jour de la liste des fichiers et dossiers
this.files = directoryItems.map(file => ({ this.files = directoryItems.map(file => ({
@ -60,8 +61,18 @@ export default {
if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`; if (size < 1024 * 1024) return `${(size / 1024).toFixed(2)} KB`;
if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`; if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`;
return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`; return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`;
},
async handleClick(file) {
if (file.type === 'directory') {
// Si c'est un dossier, on change le répertoire courant et on fetch son contenu
this.current_dir = this.current_dir === '/' ? '/' + file.basename : this.current_dir + '/' + file.basename;
await this.fetchFiles();
} else {
// Si c'est un fichier, on ouvre le lien de téléchargement
window.open(file.href, '_blank');
} }
} }
}
} }
</script> </script>
@ -91,4 +102,10 @@ export default {
color: #4CAF50; color: #4CAF50;
text-decoration: none; text-decoration: none;
} }
/* Ajout du style pour le hover */
td div {
cursor: pointer; /* Change le curseur en main lors du survol */
}
</style> </style>