Merged PR 236: Create video query for picklist

This commit is contained in:
2026-01-19 16:49:43 +00:00
4 changed files with 80 additions and 4 deletions

View File

@@ -294,6 +294,16 @@ const getFileIcon = (document) => {
const onSelectionChange = (event) => { const onSelectionChange = (event) => {
emit('change', event.value); emit('change', event.value);
}; };
const removeFolder = (folderToRemove) => {
if (props.disabled) return;
const currentValue = Array.isArray(selectedValue.value) ? selectedValue.value : [];
const newValue = currentValue.filter(folder => folder.id !== folderToRemove.id);
selectedValue.value = newValue;
emit('change', newValue);
};
</script> </script>
<style scoped> <style scoped>
@@ -416,6 +426,30 @@ const onSelectionChange = (event) => {
background-color: #f8f9fa; background-color: #f8f9fa;
} }
/* Stili specifici per ks-folders */
.ks-folders-panel .p-multiselect-item {
min-height: 60px;
}
.ks-folders-panel .pi-folder {
font-size: 1.3rem;
}
/* Stili per le chips delle folders */
.folder-chip {
background-color: #f3e8ff;
color: #7c3aed;
border: 1px solid #c4b5fd;
}
.folder-chip .pi-folder {
color: #7c3aed;
}
.folder-chip:hover {
background-color: #e9d5ff;
}
/* Stili per le icone dei file */ /* Stili per le icone dei file */
.ks-documents-panel .pi { .ks-documents-panel .pi {
font-size: 1.2rem; font-size: 1.2rem;

View File

@@ -0,0 +1,28 @@
import axios from 'axios';
export const KSVideoService = {
/**
* Recupera tutti i KSVideo per il progetto selezionato dall'utente corrente
* @returns {Promise} Promise con la lista di KSVideo
*/
getKSVideos() {
return axios.get('/ksVideos');
},
/**
* Recupera tutti i KSVideo completati per il progetto selezionato dall'utente corrente
* @returns {Promise} Promise con la lista di KSVideo completati
*/
getCompletedKSVideos() {
return axios.get('/ksVideos/completed');
},
/**
* Recupera tutti i KSVideo per un progetto specifico
* @param {string} projectId - ID del progetto
* @returns {Promise} Promise con la lista di KSVideo
*/
getKSVideosByProject(projectId) {
return axios.post('/ksVideos/byProject', projectId);
}
};

View File

@@ -229,7 +229,12 @@ const filteredInputs = computed(() => {
const filtered = {}; const filtered = {};
for (const [key, value] of Object.entries(inputs.value)) { for (const [key, value] of Object.entries(inputs.value)) {
// Escludi tutti i campi che contengono "input_multiselect" e finiscono con "_id" // Escludi tutti i campi che contengono "input_multiselect" e finiscono con "_id"
if (!(key.includes('input_multiselect') && key.endsWith('_id'))) { // Escludi anche i campi "SelectedFolders_Name" e "SelectedFolders_Id"
const shouldExclude = (key.includes('input_multiselect') && key.endsWith('_id')) ||
key === 'selectedFolders_id' ||
key === 'selectedFolders_name';
if (!shouldExclude) {
filtered[key] = value; filtered[key] = value;
} }
} }

View File

@@ -6,6 +6,7 @@ import MarkdownViewer from '@/components/MarkdownViewer.vue';
import ScenarioFileUpload from '@/components/ScenarioFileUpload.vue'; import ScenarioFileUpload from '@/components/ScenarioFileUpload.vue';
import WorkflowResponsePanel from '@/components/WorkflowResponsePanel.vue'; import WorkflowResponsePanel from '@/components/WorkflowResponsePanel.vue';
import { KSDocumentService } from '@/service/KSDocumentService'; import { KSDocumentService } from '@/service/KSDocumentService';
import { KSVideoService } from '@/service/KSVideoService';
import { FileUploadStore } from '@/stores/FileUploadStore'; import { FileUploadStore } from '@/stores/FileUploadStore';
import { KsVideoGroupStore } from '@/stores/KsVideoGroupStore'; import { KsVideoGroupStore } from '@/stores/KsVideoGroupStore';
import { LoadingStore } from '@/stores/LoadingStore'; import { LoadingStore } from '@/stores/LoadingStore';
@@ -215,10 +216,18 @@ const extractFoldersFromItems = (items) => {
const loadKsFolders = async () => { const loadKsFolders = async () => {
try { try {
const docsResponse = await KSDocumentService.getKSDocuments(); // Carica sia documenti che video con query separate
const documents = docsResponse.data || []; const [docsResponse, videosResponse] = await Promise.all([
KSDocumentService.getKSDocuments(),
KSVideoService.getKSVideos()
]);
const allItems = [...documents, ...videoGroups.value]; const documents = docsResponse.data || [];
const videos = videosResponse.data || [];
// Combina documenti e video per l'estrazione dei folder
// Facciamo distinct sui ksKnowledgePath
const allItems = [...documents, ...videos];
const { folders, folderMap } = extractFoldersFromItems(allItems); const { folders, folderMap } = extractFoldersFromItems(allItems);
// Calcola il numero di subfolder per ogni folder // Calcola il numero di subfolder per ogni folder