-
+
+
Remove {{ options.editor_data.title }} {{ modalRemoveTitle }}?
-
+
Cancel
diff --git a/resources/js/Components/DocumentUploadDialog.vue b/resources/js/Components/DocumentUploadDialog.vue
new file mode 100644
index 0000000..606b6d7
--- /dev/null
+++ b/resources/js/Components/DocumentUploadDialog.vue
@@ -0,0 +1,116 @@
+
+
+
+
+ Dodaj dokument
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Uploaded.
+
Cancel
+
Upload
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/Components/DocumentViewerDialog.vue b/resources/js/Components/DocumentViewerDialog.vue
new file mode 100644
index 0000000..c07671b
--- /dev/null
+++ b/resources/js/Components/DocumentViewerDialog.vue
@@ -0,0 +1,26 @@
+
+
+
+
+ {{ props.title }}
+
+
+
+
No document to display.
+
+
+
+ Close
+
+
+
diff --git a/resources/js/Components/DocumentsTable.vue b/resources/js/Components/DocumentsTable.vue
new file mode 100644
index 0000000..452e492
--- /dev/null
+++ b/resources/js/Components/DocumentsTable.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+ Name
+ Type
+ Size
+ Added
+ Drugo
+
+
+
+
+
+
+
+
+ Public
+
+
+
+
+
+ {{ fileTypeInfo(doc).label }}
+
+
+ {{ formatSize(doc.size) }}
+ {{ new Date(doc.created_at).toLocaleString() }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ doc.description }}
+
+
+
+
+
+
+
No documents.
+
+
diff --git a/resources/js/Components/PersonUpdateForm.vue b/resources/js/Components/PersonUpdateForm.vue
index 277288b..1705db0 100644
--- a/resources/js/Components/PersonUpdateForm.vue
+++ b/resources/js/Components/PersonUpdateForm.vue
@@ -1,5 +1,5 @@
-
@@ -135,5 +135,5 @@ const updatePerson = () => {
-
+
\ No newline at end of file
diff --git a/resources/js/Components/PhoneCreateForm.vue b/resources/js/Components/PhoneCreateForm.vue
index 5599c97..64c906b 100644
--- a/resources/js/Components/PhoneCreateForm.vue
+++ b/resources/js/Components/PhoneCreateForm.vue
@@ -1,6 +1,6 @@
-
@@ -189,5 +189,5 @@ const submit = () => {
-
+
\ No newline at end of file
diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue
index 63b6171..d231212 100644
--- a/resources/js/Layouts/AppLayout.vue
+++ b/resources/js/Layouts/AppLayout.vue
@@ -1,12 +1,10 @@
@@ -29,228 +114,180 @@ const logout = () => {
-
-
+
+
+
+
+
+
+
+ Dokumenti
+
+ Dodaj
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Client/Index.vue b/resources/js/Pages/Client/Index.vue
index 0340218..ed9da1c 100644
--- a/resources/js/Pages/Client/Index.vue
+++ b/resources/js/Pages/Client/Index.vue
@@ -8,7 +8,7 @@ import InputLabel from '@/Components/InputLabel.vue';
import TextInput from '@/Components/TextInput.vue';
import { Link, useForm } from '@inertiajs/vue3';
import ActionMessage from '@/Components/ActionMessage.vue';
-import Drawer from '@/Components/Drawer.vue';
+import DialogModal from '@/Components/DialogModal.vue';
import Pagination from '@/Components/Pagination.vue';
import SearchInput from '@/Components/SearchInput.vue';
@@ -117,7 +117,7 @@ const storeClient = () => {
-
@@ -250,5 +250,5 @@ const storeClient = () => {
-
+
diff --git a/resources/js/Pages/Client/Partials/FormCreateCase.vue b/resources/js/Pages/Client/Partials/FormCreateCase.vue
index 4684c5d..91020d4 100644
--- a/resources/js/Pages/Client/Partials/FormCreateCase.vue
+++ b/resources/js/Pages/Client/Partials/FormCreateCase.vue
@@ -1,5 +1,5 @@
-
@@ -197,5 +197,5 @@ const storeCase = () => {
-
+
\ No newline at end of file
diff --git a/resources/js/Pages/Client/Partials/FormUpdateClient.vue b/resources/js/Pages/Client/Partials/FormUpdateClient.vue
index acfc99d..b1fc282 100644
--- a/resources/js/Pages/Client/Partials/FormUpdateClient.vue
+++ b/resources/js/Pages/Client/Partials/FormUpdateClient.vue
@@ -1,6 +1,6 @@
-
@@ -114,5 +114,5 @@ onMounted(() => {
-
+
\ No newline at end of file
diff --git a/resources/js/Pages/Imports/Create.vue b/resources/js/Pages/Imports/Create.vue
new file mode 100644
index 0000000..9e7eb04
--- /dev/null
+++ b/resources/js/Pages/Imports/Create.vue
@@ -0,0 +1,537 @@
+
+
+
+
+
+ New Import
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ option.name }}
+ ({{ option.source_type }})
+
+
{{ option.client_id ? 'Client' : 'Global' }}
+
+
+
+
+ {{ option.name }}
+ ({{ option.source_type }})
+ {{ option.client_id ? 'Client' : 'Global' }}
+
+
+
+
Only global templates are shown until a client is selected.
+
+
+
+
+
+
+
+
+
+
+
+
+ Upload a file first to enable saving mappings.
+
+
+ Select an Entity and Field for at least one detected column (or uncheck Skip) and then click Save Mappings.
+
+
+
+
Detected Columns ({{ detected.has_header ? 'header' : 'positional' }})
+
+
Mappings saved ({{ mappingSavedCount }}).
+
{{ mappingError }}
+
+
+
+
Import Result
+
{{ processResult }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js/Pages/Imports/Import.vue b/resources/js/Pages/Imports/Import.vue
new file mode 100644
index 0000000..25ab91e
--- /dev/null
+++ b/resources/js/Pages/Imports/Import.vue
@@ -0,0 +1,805 @@
+
+
+
+
+
+
+
Continue Import
+
+ Client: {{ selectedClientOption?.name || selectedClientOption?.uuid || '—' }}
+
+ Template:
+ {{ selectedTemplateOption?.name || '—' }}
+ locked
+
+
+
+
+
+
+
+
+
+
Status: Completed
+
Finished: {{ props.import?.finished_at ? new Date(props.import.finished_at).toLocaleString() : '—' }}
+
Total: {{ props.import?.total_rows ?? '—' }}
+
Imported: {{ props.import?.imported_rows ?? '—' }}
+
Invalid: {{ props.import?.invalid_rows ?? '—' }}
+
Valid: {{ props.import?.valid_rows ?? '—' }}
+
+
+
+
+
+
+
Client is set during upload.
+
+
+
+
+
+
+
+ {{ option.name }}
+ ({{ option.source_type }})
+
+
{{ option.client_id ? 'Client' : 'Global' }}
+
+
+
+
+ {{ option.name }}
+ ({{ option.source_type }})
+ {{ option.client_id ? 'Client' : 'Global' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ Import not found.
+
+
+ Apply a template or select Entity and Field for one or more columns, then click Save Mappings to enable processing.
+
+
+
+
Current Saved Mappings
+
+
+
+
+ | Source column |
+ Target field |
+ Transform |
+ Mode |
+
+
+
+
+ | {{ m.source_column }} |
+ {{ m.target_field }} |
+ {{ m.transform || '—' }} |
+ {{ m.apply_mode || 'both' }} |
+
+
+
+
+
+
+
+
+ Detected Columns ({{ detected.has_header ? 'header' : 'positional' }})
+ detected: {{ detected.columns.length }}, rows: {{ displayRows.length }}
+
+ Detected Columns
+
+
{{ detectedNote }}
+
+
Mappings saved ({{ mappingSavedCount }}).
+
{{ mappingError }}
+
+
+
+
Detected Columns
+
No columns detected. {{ detectedNote || 'Preview is available for CSV/TXT files. You can still apply a template or use the saved mappings below.' }}
+
+
+
+
Import Result
+
{{ processResult }}
+
+
+
+
+
Logs
+
+
+
+
+
+
+
+
+
+
+ | Time |
+ Level |
+ Event |
+ Message |
+ Row |
+
+
+
+
+ | {{ new Date(ev.created_at).toLocaleString() }} |
+
+ {{ ev.level }}
+ |
+ {{ ev.event }} |
+
+ {{ ev.message }}
+ {{ ev.context }}
+ |
+ {{ ev.import_row_id ?? '—' }} |
+
+
+ | No events yet |
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Imports/Index.vue b/resources/js/Pages/Imports/Index.vue
new file mode 100644
index 0000000..40764c4
--- /dev/null
+++ b/resources/js/Pages/Imports/Index.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
Uvozi
+ Novi uvoz
+
+
+
+
+
+
+
+
+
+
+ | Datum |
+ Datoteka |
+ Status |
+ Naročnik |
+ Predloga |
+ Akcije |
+
+
+
+
+ | {{ new Date(imp.created_at).toLocaleString() }} |
+ {{ imp.original_name }} |
+ {{ imp.status }} |
+ {{ imp.client?.uuid ?? '—' }} |
+ {{ imp.template?.name ?? '—' }} |
+
+ Poglej
+ Nadaljuj
+ Zaključen
+ |
+
+
+
+
+
+
+
+ Prikaz {{ imports.meta.from }}–{{ imports.meta.to }} od {{ imports.meta.total }}
+
+
+ Nazaj
+ Naprej
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Imports/Templates/Create.vue b/resources/js/Pages/Imports/Templates/Create.vue
new file mode 100644
index 0000000..b76edaa
--- /dev/null
+++ b/resources/js/Pages/Imports/Templates/Create.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+ Create Import Template
+
+
+
+
+
+
+
+
+
+
Leave empty to make this template global (visible to all clients).
+
+
+
+
+
Choose which tables this template targets. You can still define per-column mappings later.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Imports/Templates/Edit.vue b/resources/js/Pages/Imports/Templates/Edit.vue
new file mode 100644
index 0000000..68bcc95
--- /dev/null
+++ b/resources/js/Pages/Imports/Templates/Edit.vue
@@ -0,0 +1,495 @@
+
+
+
+
+
+
+
Uredi uvozno predlogo
+
+ Nazaj
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ni mogoče spremeniti naročnika, ker ta predloga že vsebuje preslikave.
+
+
+
+
+
+
+
+
+
+
+
+
Vzorčni glavi stolpcev
+
+
+
+
+
+
+
+
Bulk dodajanje preslikav
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nedodeljene preslikave ({{ unassigned.length }})
+
+
+
+
+
Source
+
{{ m.source_column }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ entityOptions.find(e=>e.key===entity)?.label || entity }}
+ Klikni za razširitev
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Ni definiranih preslikav za to entiteto.
+
+
+
+
+
+
+
+
Ni nedodeljenih virov. Uporabi Bulk ali najprej dodaj vire.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dodaj več stolpcev naenkrat (ločeno z vejicami ali novimi vrsticami). Če polje ne izbereš, bo target nastavljen na entity + ime stolpca.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Izbrišem predlogo?
+
Tega dejanja ni mogoče razveljaviti. Vse preslikave te predloge bodo izbrisane.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Imports/Templates/Index.vue b/resources/js/Pages/Imports/Templates/Index.vue
new file mode 100644
index 0000000..79428c7
--- /dev/null
+++ b/resources/js/Pages/Imports/Templates/Index.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+ Uvozne predloge
+
+
+
+
+
+
+
Skupaj: {{ props.templates?.length || 0 }}
+
Nova predloga
+
+
+
+
+
+
{{ t.name }}
+
{{ t.description }}
+
{{ t.client?.name || 'Global' }} • {{ t.source_type.toUpperCase() }}
+
+
+ {{ t.is_active ? 'Active' : 'Inactive' }}
+ Uredi
+
+
+
+
+
+
+
+
+
+
+
+
+
Izbrišem predlogo?
+
Tega dejanja ni mogoče razveljaviti. Vse preslikave te predloge bodo izbrisane.
+
+
+
+
+
+
+
+
diff --git a/resources/js/Pages/Settings/Partials/ActionTable.vue b/resources/js/Pages/Settings/Partials/ActionTable.vue
index 32e0603..736e815 100644
--- a/resources/js/Pages/Settings/Partials/ActionTable.vue
+++ b/resources/js/Pages/Settings/Partials/ActionTable.vue
@@ -1,7 +1,7 @@