commit fix bugs
This commit is contained in:
@@ -610,7 +610,7 @@ export default {
|
|||||||
// Add global functions for table operations
|
// Add global functions for table operations
|
||||||
if (!window.copyTable) {
|
if (!window.copyTable) {
|
||||||
window.copyTable = (tableId) => {
|
window.copyTable = (tableId) => {
|
||||||
const wrapper = markdownContainer.value.querySelector(`[data-table-id="${tableId}"]`);
|
const wrapper = document.querySelector(`[data-table-id="${tableId}"]`);
|
||||||
const table = wrapper?.querySelector('table');
|
const table = wrapper?.querySelector('table');
|
||||||
if (!table) return;
|
if (!table) return;
|
||||||
|
|
||||||
@@ -637,7 +637,7 @@ export default {
|
|||||||
|
|
||||||
if (!window.exportTableToCSV) {
|
if (!window.exportTableToCSV) {
|
||||||
window.exportTableToCSV = (tableId) => {
|
window.exportTableToCSV = (tableId) => {
|
||||||
const wrapper = markdownContainer.value.querySelector(`[data-table-id="${tableId}"]`);
|
const wrapper = document.querySelector(`[data-table-id="${tableId}"]`);
|
||||||
const table = wrapper?.querySelector('table');
|
const table = wrapper?.querySelector('table');
|
||||||
if (!table) return;
|
if (!table) return;
|
||||||
|
|
||||||
@@ -656,7 +656,9 @@ export default {
|
|||||||
csv += rowData.join(',') + '\n';
|
csv += rowData.join(',') + '\n';
|
||||||
});
|
});
|
||||||
|
|
||||||
const blob = new Blob([csv], { type: 'text/csv' });
|
// Add UTF-8 BOM for proper character encoding
|
||||||
|
const BOM = '\uFEFF';
|
||||||
|
const blob = new Blob([BOM + csv], { type: 'text/csv;charset=utf-8;' });
|
||||||
const url = window.URL.createObjectURL(blob);
|
const url = window.URL.createObjectURL(blob);
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
a.href = url;
|
a.href = url;
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ const formatSize = (bytes) => {
|
|||||||
</label>
|
</label>
|
||||||
<div>
|
<div>
|
||||||
<FileUpload
|
<FileUpload
|
||||||
:name="inputName"
|
name="MultiFileUpload"
|
||||||
:customUpload="false"
|
:customUpload="false"
|
||||||
:url="uploadUrl"
|
:url="uploadUrl"
|
||||||
@upload="handleUpload"
|
@upload="handleUpload"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="config-panel hidden">
|
<div class="config-panel hidden">
|
||||||
<div class="config-panel-content">
|
<div class="config-panel-content">
|
||||||
<span class="config-panel-label">Welcome </span>
|
<span class="config-panel-label">Welcome </span>
|
||||||
<span v-if="user">
|
<span v-if="user" class="user-name">
|
||||||
{{ user.name + " " + user.surname }}
|
{{ user.name + " " + user.surname }}
|
||||||
</span>
|
</span>
|
||||||
<!-- <button @click="redirectProject()" class="p-button p-button-outlined">Projects</button> -->
|
<!-- <button @click="redirectProject()" class="p-button p-button-outlined">Projects</button> -->
|
||||||
@@ -15,10 +15,10 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
|
||||||
|
import { ScenarioStore } from '@/stores/ScenarioStore';
|
||||||
import { useAuth } from '@websanova/vue-auth/src/v3.js';
|
import { useAuth } from '@websanova/vue-auth/src/v3.js';
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { ScenarioStore } from '@/stores/ScenarioStore';
|
|
||||||
|
|
||||||
|
|
||||||
const auth = useAuth();
|
const auth = useAuth();
|
||||||
@@ -41,3 +41,10 @@ function logout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.config-panel-label,
|
||||||
|
.user-name {
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ watch(() => userPrefStore.getSelApp, appUpdated, { immediate: true });
|
|||||||
<div v-if="loadingStore.isLoading">
|
<div v-if="loadingStore.isLoading">
|
||||||
<!--<ProgressSpinner v-if="loadingStore.loadingType=='data'" style="width: 25px; height: 25px; margin-top: 6px" strokeWidth="2" fill="transparent"/>-->
|
<!--<ProgressSpinner v-if="loadingStore.loadingType=='data'" style="width: 25px; height: 25px; margin-top: 6px" strokeWidth="2" fill="transparent"/>-->
|
||||||
<JellyfishLoader v-if="loadingStore.loadingType == 'ai'" scale="0.5" color="#a100ff" style="width: 25px; height: 10px; margin-right: 25px; margin-top: -5px" />
|
<JellyfishLoader v-if="loadingStore.loadingType == 'ai'" scale="0.5" color="#a100ff" style="width: 25px; height: 10px; margin-right: 25px; margin-top: -5px" />
|
||||||
<RiseLoader v-if="loadingStore.loadingType == 'data'" color="#a100ff" style="scale: 0.5; height: 10px; margin-top: 5px" />
|
<RiseLoader v-if="loadingStore.loadingType == 'data'" color="#ffffff" style="scale: 0.5; height: 10px; margin-top: 5px" />
|
||||||
</div>
|
</div>
|
||||||
<!-- <button @click="router.push('/mdcanvas')" class="layout-topbar-action" >
|
<!-- <button @click="router.push('/mdcanvas')" class="layout-topbar-action" >
|
||||||
<i class="pi pi-pencil"></i>
|
<i class="pi pi-pencil"></i>
|
||||||
@@ -117,19 +117,12 @@ watch(() => userPrefStore.getSelApp, appUpdated, { immediate: true });
|
|||||||
</div>
|
</div>
|
||||||
<Dropdown v-model="selectedApp" :options="userPrefStore.availableApp" optionLabel="fe_name" placeholder="Select an Application" class="dropdown-list menu-list" @change="updateApplication()" :disabled="isDropdownDisabled" />
|
<Dropdown v-model="selectedApp" :options="userPrefStore.availableApp" optionLabel="fe_name" placeholder="Select an Application" class="dropdown-list menu-list" @change="updateApplication()" :disabled="isDropdownDisabled" />
|
||||||
|
|
||||||
<button
|
<div class="layout-topbar-menu">
|
||||||
class="layout-topbar-menu-button layout-topbar-action"
|
|
||||||
v-styleclass="{ selector: '@next', enterFromClass: 'hidden', enterActiveClass: 'animate-scalein', leaveToClass: 'hidden', leaveActiveClass: 'animate-fadeout', hideOnOutsideClick: true }"
|
|
||||||
>
|
|
||||||
<i class="pi pi-ellipsis-v"></i>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="layout-topbar-menu hidden lg:block">
|
|
||||||
<div class="layout-topbar-menu-content">
|
<div class="layout-topbar-menu-content">
|
||||||
<button
|
<button
|
||||||
v-styleclass="{ selector: '@next', enterFromClass: 'hidden', enterActiveClass: 'animate-scalein', leaveToClass: 'hidden', leaveActiveClass: 'animate-fadeout', hideOnOutsideClick: true }"
|
v-styleclass="{ selector: '@next', enterFromClass: 'hidden', enterActiveClass: 'animate-scalein', leaveToClass: 'hidden', leaveActiveClass: 'animate-fadeout', hideOnOutsideClick: true }"
|
||||||
type="button"
|
type="button"
|
||||||
class="layout-topbar-action"
|
class="layout-topbar-action user-menu-button"
|
||||||
>
|
>
|
||||||
<i class="pi pi-user"></i>
|
<i class="pi pi-user"></i>
|
||||||
</button>
|
</button>
|
||||||
@@ -197,4 +190,8 @@ watch(() => userPrefStore.getSelApp, appUpdated, { immediate: true });
|
|||||||
border-color: rgba(255, 255, 255, 0.5);
|
border-color: rgba(255, 255, 255, 0.5);
|
||||||
box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15);
|
box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.user-menu-button i {
|
||||||
|
color: #ffffff !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -78,9 +78,9 @@ import ProgressSpinner from 'primevue/progressspinner';
|
|||||||
import { computed, onMounted, reactive, ref } from 'vue';
|
import { computed, onMounted, reactive, ref } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { LoadingStore } from '../../stores/LoadingStore.js';
|
import { LoadingStore } from '../../stores/LoadingStore.js';
|
||||||
import { UserPrefStore } from '../../stores/UserPrefStore.js';
|
|
||||||
import { ScenarioStore } from '../../stores/ScenarioStore.js';
|
|
||||||
import { ScenarioExecutionStore } from '../../stores/ScenarioExecutionStore.js';
|
import { ScenarioExecutionStore } from '../../stores/ScenarioExecutionStore.js';
|
||||||
|
import { ScenarioStore } from '../../stores/ScenarioStore.js';
|
||||||
|
import { UserPrefStore } from '../../stores/UserPrefStore.js';
|
||||||
|
|
||||||
|
|
||||||
const loadingStore = LoadingStore()
|
const loadingStore = LoadingStore()
|
||||||
@@ -116,7 +116,7 @@ const scenario_execution_store = ScenarioExecutionStore();
|
|||||||
return data.search
|
return data.search
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.split(" ")
|
.split(" ")
|
||||||
.every((v) => item.name.toLowerCase().includes(v));
|
.every((v) => item.fe_name.toLowerCase().includes(v));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return data.projects;
|
return data.projects;
|
||||||
|
|||||||
@@ -76,6 +76,16 @@ const isInputFilled = computed(() => {
|
|||||||
return inputValue && Array.isArray(inputValue) && inputValue.length > 0;
|
return inputValue && Array.isArray(inputValue) && inputValue.length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For file uploads, check if the file has been uploaded
|
||||||
|
if (input.type === 'singlefile' || input.type === 'singlefile_acceptall') {
|
||||||
|
return inputValue !== undefined && inputValue !== '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// For multifile, it's optional so always return true
|
||||||
|
if (input.type === 'multifile') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return inputValue !== undefined && inputValue !== '';
|
return inputValue !== undefined && inputValue !== '';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -191,8 +201,13 @@ const onDynamicPickerChange = (inputName, value) => {
|
|||||||
|
|
||||||
// ============= File Upload Handlers =============
|
// ============= File Upload Handlers =============
|
||||||
const handleFileUpload = (data) => {
|
const handleFileUpload = (data) => {
|
||||||
|
console.log('handleFileUpload - data.fileName:', data.fileName);
|
||||||
|
console.log('handleFileUpload - data.response:', data.response);
|
||||||
|
console.log('handleFileUpload - data.inputName:', data.inputName);
|
||||||
|
|
||||||
if (data.inputName === 'SingleFileUpload') {
|
if (data.inputName === 'SingleFileUpload') {
|
||||||
formData.value['SingleFileUpload'] = data.fileName;
|
formData.value['SingleFileUpload'] = data.fileName;
|
||||||
|
formData.value['Folder'] = data.response;
|
||||||
numberPrFiles.value += 1;
|
numberPrFiles.value += 1;
|
||||||
} else {
|
} else {
|
||||||
formData.value['MultiFileUpload'] = data.response;
|
formData.value['MultiFileUpload'] = data.response;
|
||||||
|
|||||||
Reference in New Issue
Block a user