Merged PR 236: Create video query for picklist
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
28
src/service/KSVideoService.js
Normal file
28
src/service/KSVideoService.js
Normal 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);
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user