Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sarun Mungthanya
SpnPatch-Laravel
Commits
1097ea6b
Commit
1097ea6b
authored
Aug 29, 2024
by
Sarun Mungthanya
Browse files
add master file format
parent
f8d82fd3
Changes
35
Show whitespace changes
Inline
Side-by-side
resources/js/pages/roleSelect.js
0 → 100644
View file @
1097ea6b
const
roleSelect
=
{
role
:
{
valueField
:
"
id
"
,
searchField
:
"
name
"
,
options
:
[],
// Initialize empty array for options
placeholder
:
""
,
placeholder
:
"
Select the role
"
,
plugins
:
[
'
remove_button
'
],
closeAfterSelect
:
true
,
onDelete
:
function
(
values
)
{
},
render
:
{
option
:
function
(
data
,
escape
)
{
if
(
!
data
.
name
)
{
console
.
error
(
"
Invalid data for option:
"
,
data
);
return
""
;
}
return
`<div class="flex space-x-3">
<div class="flex flex-col">
<span>
${
escape
(
data
.
name
)}
</span>
</div>
</div>`
;
},
item
:
function
(
data
,
escape
)
{
if
(
!
data
.
name
)
{
console
.
error
(
"
Invalid data for item:
"
,
data
);
return
""
;
}
return
`<span class="badge rounded-full bg-primary dark:bg-accent text-white px-2 py-2 mb-2 mr-2">
<span class="mx-2">
${
escape
(
data
.
name
)}
</span>
</span>`
;
},
},
},
};
const
fetchRoles
=
(
roleSelect
)
=>
{
return
fetch
(
'
/get-roles
'
)
.
then
(
response
=>
response
.
json
())
.
then
(
data
=>
{
if
(
!
data
.
roles
||
!
Array
.
isArray
(
data
.
roles
))
{
console
.
error
(
"
Invalid response format:
"
,
data
);
return
;
}
roleSelect
.
role
.
options
=
data
.
roles
;
})
.
catch
(
error
=>
console
.
error
(
'
Error fetching role data:
'
,
error
));
};
export
{
roleSelect
,
fetchRoles
};
\ No newline at end of file
resources/js/pages/userSelect copy.js
0 → 100644
View file @
1097ea6b
const
userSelect
=
{
user
:
{
valueField
:
"
id
"
,
searchField
:
"
username
"
,
options
:
[],
// Initialize empty array for options
placeholder
:
"
Select the user
"
,
plugins
:
[
'
remove_button
'
],
closeAfterSelect
:
true
,
onDelete
:
function
(
values
)
{
},
render
:
{
option
:
function
(
data
,
escape
)
{
if
(
!
data
.
username
||
!
data
.
email
)
{
console
.
error
(
"
Invalid data for option:
"
,
data
);
return
""
;
}
return
`<div class="flex space-x-3">
<div class="flex flex-col">
<span>
${
escape
(
data
.
username
)}
</span>
<span class="text-xs opacity-80">
${
escape
(
data
.
email
)}
</span>
</div>
</div>`
;
},
item
:
function
(
data
,
escape
)
{
if
(
!
data
.
username
)
{
console
.
error
(
"
Invalid data for item:
"
,
data
);
return
""
;
}
return
`<span class="badge rounded-full bg-primary dark:bg-accent text-white px-2 py-2 mb-2 mr-2">
<span class="mx-2">
${
escape
(
data
.
username
)}
</span>
</span>`
;
},
},
},
};
const
fetchUsers
=
(
userSelect
)
=>
{
return
fetch
(
'
/get-users
'
)
.
then
(
response
=>
response
.
json
())
.
then
(
data
=>
{
if
(
!
data
.
users
||
!
Array
.
isArray
(
data
.
users
))
{
console
.
error
(
"
Invalid response format:
"
,
data
);
return
;
}
userSelect
.
user
.
options
=
data
.
users
;
})
.
catch
(
error
=>
console
.
error
(
'
Error fetching user data:
'
,
error
));
};
export
{
userSelect
,
fetchUsers
};
\ No newline at end of file
resources/js/pages/userSelect.js
View file @
1097ea6b
...
...
@@ -9,7 +9,8 @@ const userSelect = {
},
render
:
{
option
:
function
(
data
,
escape
)
{
if
(
!
data
.
name
||
!
data
.
email
)
{
if
(
!
data
.
name
)
{
// console.log(data)
console
.
error
(
"
Invalid data for option:
"
,
data
);
return
""
;
}
...
...
resources/views/livewire/main-container.blade.php
View file @
1097ea6b
...
...
@@ -37,6 +37,10 @@
<livewire:pages.exchangerate.exchangerate-index
/>
@elseif ($currentContent === 'DischargePort')
<livewire:pages.dischargeport.dischargeport-index
/>
@elseif ($currentContent === 'MasterFile')
<livewire:pages.masterfile.masterfile-index
/>
@elseif ($currentContent === 'FormatFileMaster')
<livewire:pages.format-file-master.file-index
/>
@else
@livewire('code-comparer')
@endif
...
...
resources/views/livewire/navbar.blade.php
View file @
1097ea6b
...
...
@@ -7,7 +7,7 @@
@
mouseleave=
"timer = setTimeout(() => open = false, 100)"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
<a
href=
"/server-license"
>
Server License Management
</a>
<ul
x-cloak
x-show=
"open"
@
click=
"open = false"
@
mouseenter=
"clearTimeout(timer)"
{{--
<ul
x-cloak
x-show=
"open"
@
click=
"open = false"
@
mouseenter=
"clearTimeout(timer)"
@
mouseleave=
"timer = setTimeout(() => open = false, 100)"
class=
"absolute left-0 mt-2 w-48 bg-white shadow-lg"
>
<li><a
href=
"#"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Submenu 1
</a>
...
...
@@ -16,11 +16,24 @@
</li>
<li><a
href=
"#"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Submenu 3
</a>
</li>
</ul>
</ul>
--}}
</li>
<li
x-data=
"{ open: false }"
<li
x-data=
"{ open: false, timer: null }"
@
click.away=
"open = false"
@
mouseenter=
"open = true; clearTimeout(timer)"
@
mouseleave=
"timer = setTimeout(() => open = false, 100)"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
<a
href=
"/patch"
>
Patch
</a>
<span
class=
"cursor-pointer"
@
click.stop
>
Patch
</span>
<ul
x-cloak
x-show=
"open"
@
click.stop=
"open = false"
@
mouseleave=
"open = false"
class=
"absolute left-0 mt-2 w-48 bg-white shadow-lg"
>
<li><a
href=
"/patch"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Create
Patch
</a></li>
<li><a
href=
"/master-file"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Create
MasterFile
</a></li>
<li><a
href=
"/exchange-rate"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Create
Exchangerate
</a></li>
<li><a
href=
"/discharge-port"
class=
"block px-4 py-2 text-gray-700 hover:bg-stone-100"
>
Create
Discharge Port
</a></li>
</ul>
</li>
<li
x-data=
"{ open: false, timer: null }"
@
click.away=
"open = false"
@
mouseenter=
"open = true; clearTimeout(timer)"
@
mouseleave=
"timer = setTimeout(() => open = false, 100)"
...
...
@@ -39,16 +52,13 @@
</li>
<li
x-data=
"{ open: false }"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
<a
href=
"/
parameter"
>
Parame
ter
</a>
<a
href=
"/
format-file-master"
>
Format File Mas
ter
</a>
</li>
<li
x-data=
"{ open: false }"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
<a
href=
"/exchange-rate"
>
Create Patch Exchangerate
</a>
</li>
<li
x-data=
"{ open: false }"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
<a
href=
"/discharge-port"
>
Create Discharge Port
</a>
<a
href=
"/parameter"
>
Parameter
</a>
</li>
<li
x-data=
"{ open: false, timer: null }"
@
click.away=
"open = false"
@
mouseenter=
"open = true; clearTimeout(timer)"
@
mouseleave=
"timer = setTimeout(() => open = false, 100)"
class=
"relative px-2 py-1 rounded text-gray-700 hover:bg-primary-focus hover:text-white"
>
...
...
resources/views/livewire/pages/format-file-master/file-create.blade.php
0 → 100644
View file @
1097ea6b
<div
class=
"grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6"
>
<form
wire:submit.prevent=
"save"
>
@csrf
<div
class=
"card pb-4"
>
<div
class=
"my-3 flex h-8 items-center justify-between px-4 sm:px-5"
>
<h2
class=
"font-medium tracking-wide text-slate-700 line-clamp-1 dark:text-navy-100 lg:text-base"
>
<i
class=
"fa-solid fa-edit text-primary"
></i>
Create
</h2>
</div>
<div
class=
"w-3/4 px-3 space-y-3 m-auto mb-4"
>
<div
class=
"flex items-center"
>
<label
class=
"w-2/12 mr-2"
>
<span>
Name :
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"name"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
""
name=
"name"
type=
"text"
value=
"{{ old('name') }}"
/>
@error('name')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
<div
class=
"flex items-center"
>
@if ($file)
<div
class=
"mt-2 text-sm text-slate-600 dark:text-slate-300 mr-4"
>
Uploaded File: {{ $file->getClientOriginalName() }}
</div>
@endif
<span
wire:loading
>
<svg
class=
"animate-spin h-5 w-5 text-primary m-3"
xmlns=
"http://www.w3.org/2000/svg"
fill=
"none"
viewBox=
"0 0 24 24"
>
<circle
class=
"opacity-25"
cx=
"12"
cy=
"12"
r=
"10"
stroke=
"currentColor"
stroke-width=
"4"
></circle>
<path
class=
"opacity-75"
fill=
"currentColor"
d=
"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.964 7.964 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
>
</path>
</svg>
</span>
<label
for=
"file-upload"
class=
"btn bg-slate-150 font-medium text-slate-800 hover:bg-slate-200 focus:bg-slate-200 active:bg-slate-200/80 dark:bg-navy-500 dark:text-navy-50 dark:hover:bg-navy-450 dark:focus:bg-navy-450 dark:active:bg-navy-450/90"
aria-label=
"Upload File"
>
<input
tabindex=
"-1"
id=
"file-upload"
type=
"file"
wire:model=
"file"
class=
"pointer-events-none absolute inset-0 h-full w-full opacity-0"
/>
<div
class=
"flex items-center space-x-2"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
class=
"size-5"
fill=
"none"
viewBox=
"0 0 24 24"
stroke=
"currentColor"
>
<path
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"2"
d=
"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"
/>
</svg>
<span>
Choose File
</span>
</div>
@error('file')
<span
class=
"error"
>
{{ $message }}
</span>
@enderror
</label>
</div>
</div>
<div
class=
"grid grid-cols-12 justify-center space-x-2 pt-4"
>
<a
href=
"/format-file-master"
class=
"col-start-4 btn border border-slate-300 font-medium text-slate-800 hover:bg-slate-150 focus:bg-slate-150 active:bg-slate-150/80 dark:border-navy-450 dark:text-navy-50 dark:hover:bg-navy-500 dark:focus:bg-navy-500 dark:active:bg-navy-500/90"
>
Cancel
</a>
<button
type=
"submit"
class=
"btn ml-3 bg-primary font-medium text-white hover:bg-primary-focus focus:bg-primary-focus active:bg-primary-focus/90 dark:bg-accent dark:hover:bg-accent-focus dark:focus:bg-accent-focus dark:active:bg-accent/90"
>
Save
</button>
</div>
</div>
</form>
</div>
resources/views/livewire/pages/format-file-master/file-index.blade.php
0 → 100644
View file @
1097ea6b
<div
class=
"border-0 shadow-none"
>
`
<div
wire:loading.class=
""
wire:loading.class.remove=
"hidden"
wire:target=
"save"
class=
"absolute inset-0 items-center justify-center z-50 bg-slate-50 dark:bg-navy-900 hidden"
>
<div
class=
"flex justify-center items-center "
>
<div
class=
"items-center h-100vh"
style=
"align-content: center;"
>
<div
class=
"animate-spin rounded-full h-32 w-32 border-t-2 border-b-2 border-blue-500"
></div>
</div>
</div>
</div>
<div
class=
"m-2"
>
@if ($action === 'list')
@if ($message)
<div
class=
"alert alert-success"
>
<div
wire:ignore
x-data=
"{ show: true }"
x-init=
"setTimeout(() => show = false, 3000)"
x-show.transition.duration.500ms=
"show"
class=
"fixed top-5 right-5 z-50 bg-green-500 text-white py-2 px-4 rounded-md shadow-lg"
>
{{ $message }}
</div>
</div>
@endif
<div
class=
"grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6 bg-main-container rounded-md"
>
<div
class=
"pb-4"
>
<div
class=
"my-3 flex h-8 items-center justify-between px-4 sm:px-5"
>
<h2
class=
"text-2xl text-black "
>
Master File Format
</h2>
</div>
<div
class=
"flex justify-between"
>
<div
class=
"px-2 ml-4"
>
<button
type=
"button"
class=
"py-2 px-3 bg-primary rounded-md text-white hover:bg-primary-focus"
wire:click=
"showAddForm"
>
Add
</button>
</div>
<div
class=
"inline-flex flex-initial"
>
<div
x-data=
"{ isInputActive: true }"
>
<div
class=
"flex gap-4 px-5 items-center"
>
<button
@
click=
"isInputActive = !isInputActive"
class=
"btn h-8 w-10 rounded-full p-0 hover:bg-primary-focus hover:text-main-container active:text-main-container focus:text-main-container primary-focus hover:text-main-container active:text-main-container focus:text-main-container dark:hover:bg-navy-300/20 dark:focus:bg-navy-300/20 dark:active:bg-navy-300/25"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
class=
"h-4.5 w-4.5"
fill=
"none"
viewBox=
"0 0 24 24"
stroke=
"currentColor"
>
<path
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"1.5"
d=
"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
/>
</svg>
</button>
<span
class=
"w-64"
x-show=
"isInputActive === true"
>
<input
class=
"form-input h-9 peer w-full rounded-lg border border-slate-300 bg-transparent px-3 py-2 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"Search Keyword"
type=
"text"
wire:model.defer=
"keyword"
/>
</span>
<span
class=
"w-52"
x-show=
"isInputActive === true"
>
<select
wire:model.defer=
"searchSelected"
class=
"form-select h-9 w-full rounded-lg border border-slate-300 bg-main-container px-3 py-2 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:bg-navy-700 dark:hover:border-navy-400 dark:focus:border-accent"
>
@foreach ($searchBy as $key => $by)
<option
value=
"{{ $key }}"
>
{{ $by }}
</option>
@endforeach
</select>
</span>
<button
type=
"button"
class=
"bg-primary text-white px-4 py-2 rounded hover:bg-primary-focus"
wire:click=
"search"
>
Search
</button>
</div>
</div>
</div>
</div>
<div
class=
"mx-3 mt-3 px-4"
>
<div
class=
"is-scrollbar-hidden min-w-full table-responsive"
x-data=
"pages.tables.initExample1"
>
<table
class=
"is-hoverable table w-full text-left border-b"
>
<thead>
<tr>
<th
class=
"whitespace-nowrap rounded-tl-lg bg-slate-300 px-4 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-5"
>
#
</th>
<th
class=
"whitespace-nowrap bg-slate-300 px-2 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-2"
>
Name
</th>
<th
class=
"whitespace-nowrap bg-slate-300 px-2 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-2"
>
File
</th>
<th
class=
"whitespace-nowrap bg-slate-300 px-2 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-2"
>
Date
</th>
<th
class=
"whitespace-nowrap bg-slate-300 px-2 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-2"
>
Timestamp
</th>
<th
class=
"whitespace-nowrap rounded-tr-lg bg-slate-300 px-2 py-3 font-semibold uppercase text-black dark:bg-navy-800 dark:text-navy-100 lg:px-2"
>
Action
</th>
</tr>
</thead>
<tbody>
@foreach ($results as $formatFile)
<tr
class=
"border-y border-transparent border-b-slate-200 dark:border-b-navy-500"
>
<td
class=
"whitespace-nowrap px-4 py-3 sm:px-5"
>
<label
class=
"inline-flex items-center space-x-2"
>
<input
class=
"form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent"
type=
"checkbox"
wire:model.defer=
"selectedPatch"
value=
"{{ $formatFile->formatservice_ID }}"
/>
</label>
</td>
<td
class=
"whitespace-nowrap px-1 py-3 sm:px-2"
>
{{ $formatFile->name }}
</td>
<td
class=
"whitespace-nowrap px-1 py-3 sm:px-2"
>
{{ \Illuminate\Support\Str::limit($formatFile->file, 100) }}
</td>
<td
class=
"whitespace-nowrap px-1 py-3 sm:px-2"
>
{{ $formatFile->date }}
</td>
<td
class=
"whitespace-nowrap px-1 py-3 sm:px-2"
>
{{ $formatFile->timestamp }}
</td>
<td
class=
"whitespace-nowrap px-1 py-3 sm:px-2"
>
<div
class=
"flex justify-center space-x-2"
>
<a
wire:click=
"showpatchEditForm({{ $formatFile->formatservice_ID }})"
class=
"btn h-8 w-8 p-0 hover:text-main-container active:text-main-container hover:primary-focus focus:primary-focus active:bg-info/25"
>
<i
class=
"fa fa-edit"
></i>
</a>
<a
wire:click=
"showDeleteModal({{ $formatFile->formatservice_ID }})"
class=
"btn h-8 w-8 p-0 hover:text-main-container active:text-main-container hover:primary-focus focus:primary-focus active:bg-info/25"
>
<i
class=
"fa fa-trash"
></i>
</a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<livewire:delete-modal
/>
{{ $results->links('livewire.paginate-custom') }}
</div>
</div>
</div>
@elseif($action === 'add')
<livewire:pages.format-file-master.file-create
/>
@elseif($action === 'edit')
<livewire:pages.format-file-master.file-edit
:editId=
"$editId"
/>
@endif
@push('script')
<script>
console
.
log
(
"
ddd
"
)
</script>
@endpush
</div>
</div>
resources/views/livewire/pages/format-file-master/format-file-edit.blade.php
0 → 100644
View file @
1097ea6b
<div
class=
"grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6"
x-data=
"{ changePassword: @entangle('changePassword'), tomGReady: false }"
x-show=
"tomGReady"
>
<form
wire:submit.prevent=
"submitEditForm"
>
@csrf
<div
class=
"card pb-4"
>
<div
class=
"my-3 flex h-8 items-center justify-between px-4 sm:px-5"
>
<h2
class=
"font-medium tracking-wide text-slate-700 line-clamp-1 dark:text-navy-100 lg:text-base"
>
<i
class=
"fa-solid fa-edit text-primary"
></i>
Edit User
</h2>
</div>
<div
class=
"w-3/4 px-3 space-y-3 m-auto mb-4"
>
<div
class=
"flex items-center"
>
<label
class=
"w-2/12 mr-2"
>
<span>
Name:
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"name"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"Name"
name=
"name"
type=
"text"
/>
@error('name')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
<div
class=
"flex items-center"
>
<label
class=
"w-2/12 mr-2"
>
<span>
Email:
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"email"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"Email"
name=
"email"
type=
"email"
/>
@error('email')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
<div
class=
"flex items-center "
wire:ignore
>
<span
class=
"w-2/12 mr-2"
>
Add Groups:
</span>
<span
class=
"relative flex w-full"
>
<input
class=
"mt-1.5 relative flex w-1/2"
wire:ignore
x-data=
"{ groupLists: @entangle('group_lists') }"
x-init=
"groupLists = @js($userGroups);
const tempGroup = pages.groupSelect;
pages.fetchGroups(tempGroup).then(() => {
$el._x_tom = new Tom($el, {
...tempGroup.group,
onChange: (value) => {
groupLists = value;
}
});
$el._x_tom.setValue(groupLists);
tomGReady = true
})"
type=
"text"
>
</span>
</div>
<!-- Toggle Button for Change Password -->
<div
class=
"flex items-center"
>
<button
type=
"button"
@
click=
"changePassword = !changePassword"
class=
"btn border bg-gray-300 border-gray-300 font-medium text-gray-800 hover:text-white focus:text-white hover:bg-gray-500 focus:bg-gray-500 active:bg-gray-150/80 dark:border-navy-450 dark:text-navy-50 dark:hover:bg-navy-500 dark:focus:bg-navy-500 dark:active:bg-navy-500/90"
>
Change Password
</button>
</div>
<!-- Password Fields (Hidden by Default) -->
<div
x-show=
"changePassword"
>
<div
class=
"flex items-center mt-4"
>
<label
class=
"w-2/12 mr-2"
>
<span>
Current Password:
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"current_password"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"Current Password"
name=
"current_password"
type=
"password"
/>
@error('current_password')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
<div
class=
"flex items-center mt-4"
>
<label
class=
"w-2/12 mr-2"
>
<span>
New Password:
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"new_password"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"New Password"
name=
"new_password"
type=
"password"
/>
@error('new_password')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
<div
class=
"flex items-center mt-4"
>
<label
class=
"w-2/12 mr-2"
>
<span>
Confirm New Password:
</span>
</label>
<span
class=
"relative flex w-full"
>
<input
wire:model.defer=
"new_password_confirmation"
class=
"form-input w-2/4 rounded-lg border border-slate-300 bg-transparent px-3 py-2 text-xs pl-4 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
placeholder=
"Confirm New Password"
name=
"new_password_confirmation"
type=
"password"
/>
@error('new_password_confirmation')
<span
class=
"text-red-500 text-md self-center ml-4"
>
{{ $message }}
</span>
@enderror
</span>
</div>
</div>
</div>
<div
class=
"grid grid-cols-12 justify-center space-x-2 pt-4"
>
<span
wire:click=
"goBack"
class=
"col-start-4 btn border border-slate-300 font-medium text-slate-800 hover:bg-slate-150 focus:bg-slate-150 active:bg-slate-150/80 dark:border-navy-450 dark:text-navy-50 dark:hover:bg-navy-500 dark:focus:bg-navy-500 dark:active:bg-navy-500/90"
>
Cancel
</span>
<button
type=
"submit"
class=
"btn ml-3 bg-primary font-medium text-white hover:bg-primary-focus focus:bg-primary-focus active:bg-primary-focus/90 dark:bg-accent dark:hover:bg-accent-focus dark:focus:bg-accent-focus dark:active:bg-accent/90"
>
Save
</button>
</div>
</div>
</form>
</div>
resources/views/livewire/pages/format-file-master/patch-create.blade.php
0 → 100644
View file @
1097ea6b
<div
class=
"bg-main-container"
>
<link
href=
"{{ asset('css/pages/patch.css') }}"
rel=
"stylesheet"
>
<div
class=
"max-w-full mx-auto px-5 "
>
<h2
class=
"text-2xl text-black "
>
Patch Management
</h2>
<a
type=
"button"
href=
"/patch"
class=
"btn mx-auto m-3 text-white bg-primary px-3 py-2"
>
Back
</a>
@if (session()->has('message'))
<div
class=
"alert alert-success"
>
{{ session('message') }}
</div>
@endif
<div
class=
"flex flex-wrap -mx-3 "
>
<div
class=
"w-full md:w-1/2 px-3 mb-6 "
>
<div
x-data=
"{
searchQuery: 'SPN64Bits',
selectedBranch: @entangle('selectedBranch'),
selectedProject: @entangle('selectedProject'),
projects: @entangle('projects').defer,
branches: @entangle('branches').defer,
fileChanges: @entangle('fileChanges').defer,
isLoading: false,
fetchProjects() {
this.isLoading = true;
this.selectedProject = '60';
this.$wire.set('searchProject', this.searchQuery);
},
fetchBranches() {
if (this.selectedProject) {
this.$wire.set('selectedProject', this.selectedProject);
}
}
}"
@
projects-fetched.window=
"isLoading = false"
@
files-fetched.window=
"isLoading = false"
x-init=
"fetchProjects"
class=
"p-6 bg-white shadow-lg rounded-lg "
>
</style>
<div
class=
""
>
<div
class=
"flex mb-3"
>
<label
for=
"searchProject"
class=
"form-label text-lg mr-2"
>
Search Project:
</label>
<input
type=
"text"
@
input.debounce.500ms=
"fetchProjects"
class=
"form-input h-8 ml-2 rounded-lg border border-slate-300 bg-transparent px-3 py-2 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent"
id=
"searchProject"
placeholder=
"Enter project name"
x-model=
"searchQuery"
>
</div>
</div>
{{--
<div
x-show=
"!isLoading && projects.length > 0"
class=
"grid grid-cols-3"
>
--}}
<div
x-show=
"true"
class=
""
>
<div
class=
"flex mb-3"
>
<label
for=
"project"
class=
"form-label text-lg mr-2"
>
Select Project:
</label>
<div
x-show=
"isLoading"
class=
"mx-auto mt-2"
>
<span>
Loading...
</span>
</div>
<select
x-model=
"selectedProject"
x-show=
"!isLoading"
@
change=
"fetchBranches"
id=
"project"
class=
"ml-2 w-64 h-8 mt-1 border border-gray-300 rounded-md"
>
<option
value=
""
>
Choose Project
</option>
<template
x-for=
"project in projects"
:key=
"project.id"
>
<option
:value=
"project.id"
x-text=
"project.name"
></option>
</template>
</select>
</div>
</div>
{{--
<template
x-if=
"selectedProject"
>
--}}
{{--
<template
x-if=
"true"
>
<div
class=
"mb-3"
>
<label
for=
"branch"
class=
"form-label w-64 text-lg mr-2"
>
Select Branch:
</label>
<select
x-model=
"selectedBranch"
id=
"branch"
class=
"ml-2 w-64 h-8 mt-1 border border-gray-300 rounded-md"
>
<option
value=
""
>
Choose Branch
</option>
<template
x-for=
"branch in branches"
:key=
"branch.name"
>
<option
:value=
"branch.name"
x-text=
"branch.name"
></option>
</template>
</select>
</div>
</template>
--}}
<div
class=
"mb-3"
>
<input
type=
"text"
value=
"c5d80f79"
wire:model.defer=
"startCommit"
placeholder=
"Start Commit"
class=
"placeholder:text-sm text-lg mb-2 form-input rounded-lg border border-slate-300 px-2"
>
<input
type=
"text"
value=
"254e87"
wire:model.defer=
"endCommit"
placeholder=
"End Commit"
class=
"placeholder:text-sm text-lg mb-2 form-input rounded-lg border border-slate-300 px-2"
>
<div
class=
"text-center"
>
<button
type=
"button"
wire:click=
"getChangedFiles"
class=
"btn mx-auto mt-3 text-white bg-primary px-3 py-2"
>
Get
Changed
Files
</button>
</div>
</div>
<div
wire:loading.class=
"flex"
wire:loading.class.remove=
"hidden"
class=
"flex inset-0 items-center justify-center z-50 bg-slate-50 dark:bg-navy-900 hidden"
>
<div
class=
"app-preloader grid h-full w-full place-content-center"
>
<div
class=
"app-preloader-inner relative inline-block h-48 w-48"
></div>
</div>
</div>
{{--
<template
x-if=
"Object.keys(fileChanges).length > 0"
>
<div
class=
"mt-5 bg-gray-100 p-4 rounded-lg shadow"
>
<h3
class=
"text-lg mb-3"
>
Changed Files
</h3>
<div
class=
"tree"
>
<ul
x-html=
"renderTree(fileChanges)"
></ul>
</div>
</div>
</template>
--}}
<div
class=
"mt-5 bg-gray-100 p-4 rounded-lg shadow"
>
<h3
class=
"text-lg mb-3"
>
Changed Files
</h3>
<div
class=
"file-tree"
>
<ul
class=
'pl-4 mt-1'
>
@foreach ($fileChanges as $name => $item)
@include('livewire.pages.patch.tree-item', [
'name' => $name,
'item' => $item,
])
@endforeach
</ul>
</div>
</div>
</div>
</div>
<div
class=
"w-full md:w-1/2 px-3 mb-6"
>
<div
class=
"p-6 bg-white shadow-md rounded-lg rounded-lg "
>
<h2
class=
"text-2xl text-black font-bold mb-4"
>
Create Patch
</h2>
<div
class=
"mb-4"
>
<label
for=
"patch_name"
class=
"block text-gray-700"
>
Patch name
</label>
<input
type=
"text"
id=
"patch_name"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
wire:model.defer=
"PATCHNAME"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"patch_date"
class=
"block text-gray-700"
>
Patch date
</label>
<input
type=
"datetime-local"
id=
"patch_date"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
wire:model.defer=
"PDATE"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"php_version"
class=
"block text-gray-700"
>
PHP Version
</label>
<select
id=
"php_version"
wire:model.defer=
"PHP_VERSION"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
<option
value=
"0"
>
ALL
</option>
<option
value=
"1"
>
32Bits (PHP 5.2)
</option>
<option
value=
"2"
>
64Bits (PHP 5.6)
</option>
<option
value=
"3"
>
64Bits (PHP 8.0)
</option>
</select>
</div>
<div
class=
"mb-4"
>
<label
for=
"patch_level"
class=
"block text-gray-700"
>
Patch level
</label>
<input
type=
"text"
id=
"patch_level"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
wire:model.defer=
"PLEVEL"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"code"
class=
"block text-gray-700"
>
Patch Code
</label>
<input
type=
"text"
id=
"code"
wire:model.defer=
"PCODE"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"major_version"
class=
"block text-gray-700"
>
Major version
</label>
<input
type=
"text"
id=
"major_version"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
wire:model.defer=
"MAJOR_VERSION"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"pdesc"
class=
"block text-gray-700"
>
Patch Desciption
</label>
<input
type=
"text"
id=
"pdesc"
wire:model.defer=
"PDESC"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"remark"
class=
"block text-gray-700"
>
Remark
</label>
<input
type=
"text"
id=
"remark"
wire:model.defer=
"Remark"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"owner"
class=
"block text-gray-700"
>
Owner
</label>
<input
type=
"text"
id=
"owner"
wire:model.defer=
"POWNER"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
value=
"aom"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"papprovedate"
class=
"block text-gray-700"
>
Papprovedate
</label>
<input
type=
"datetime-local"
id=
"papprovedate"
wire:model.defer=
"PAPPROVEDATE"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
value=
"2024-03-27T15:00"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"ptype"
class=
"block text-gray-700"
>
Ptype
</label>
<input
type=
"text"
id=
"ptype"
wire:model.defer=
"PTYPE"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"specific_customer"
class=
"block text-gray-700"
>
Specific Customer
</label>
<input
type=
"text"
id=
"specific_customer"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"patchcode"
class=
"block text-gray-700"
>
Patchcode
</label>
<textarea
id=
"patchcode"
wire:model.defer=
"PATCHCODE"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
rows=
"5"
>
pathcode
</textarea>
</div>
<div
class=
"mb-4"
>
<label
for=
"uninstall"
class=
"block text-gray-700"
>
Uninstall
</label>
<input
type=
"text"
id=
"uninstall"
wire:model.defer=
"UNINSTALL"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
value=
"$b=1"
>
</div>
<div
class=
"mb-4"
>
<label
for=
"patchcode_server"
class=
"block text-gray-700"
>
Patchcode_server
</label>
<textarea
id=
"patchcode_server"
wire:model.defer=
"PATCHCODE_SERVER"
class=
"w-full mt-1 p-2 border border-gray-300 rounded-md"
rows=
"5"
></textarea>
</div>
<div
class=
"flex justify-center"
>
<button
type=
"button"
wire:click=
"save"
class=
"bg-stone-700 text-white px-4 py-2 rounded-md hover:bg-blue-600"
>
Save
</button>
</div>
</div>
</div>
</div>
<livewire:pages.patch.modal-edit-code>
</div>
resources/views/livewire/pages/group/group-index.blade.php
View file @
1097ea6b
...
...
@@ -122,7 +122,7 @@
</th>
<th
class=
"whitespace-nowrap bg-slate-200 px-4 py-3 font-semibold uppercase text-slate-800 dark:bg-navy-800 dark:text-navy-100 lg:px-5"
>
group
Role
</th>
<th
class=
"whitespace-nowrap bg-slate-200 px-4 py-3 font-semibold uppercase text-slate-800 dark:bg-navy-800 dark:text-navy-100 lg:px-5"
>
...
...
resources/views/livewire/pages/role/role-create.blade.php
View file @
1097ea6b
...
...
@@ -42,32 +42,8 @@
</div>
<div
class=
"tabs flex flex-col"
>
<div
x-data=
"{ activeTab: 'Import' }"
class=
"tabs flex flex-col"
>
<div
class=
"is-scrollbar-hidden overflow-x-auto bg-slate-200 text-slate-600 dark:bg-navy-800 dark:text-navy-200 p-2"
>
<div
class=
"tabs-list flex"
>
<button
@
click=
"activeTab = 'Center'"
type=
"button"
:class=
"activeTab === 'Center' ? 'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Center
</button>
<button
@
click=
"activeTab = 'Import'"
type=
"button"
:class=
"activeTab === 'Import' ?
'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Import
</button>
<button
@
click=
"activeTab = 'Export'"
type=
"button"
:class=
"activeTab === 'Export' ?
'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Export
</button>
</div>
</div>
<div
x-show=
"activeTab === 'Center'"
class=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<div
class=
"tab-content pt-4 px-2 mt-2 pb-2"
>
<div
x-transition:enter=
"transition-all duration-500 ease-in-out"
x-transition:enter-start=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x-transition:enter-end=
"opacity-100 [transform:translate3d(0,0,0)]"
>
...
...
@@ -81,6 +57,12 @@
'Group Management',
'Company Management',
'Company Type Management',
'Server License Management',
'Patch Management',
'Send Patch Management',
'Parameter Management',
'Patch Exchange Rate Management',
'Patch Discharge Port Management',
];
@endphp
...
...
@@ -145,158 +127,10 @@
</div>
</div>
</div>
<div
x-show=
"activeTab === 'Import'"
class=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<div
x-transition:enter=
"transition-all duration-500 ease-in-out"
x-transition:enter-start=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x-transition:enter-end=
"opacity-100 [transform:translate3d(0,0,0)]"
>
<div
class=
"grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-5 lg:grid-cols-3 lg:gap-6 xl:grid-cols-3"
>
@php
$currentGroup = '';
$tabGroup2 = [
'File Management Import',
'Header Management Import',
'Detail Management Import',
'Item Management Import',
'Flight Management Import',
];
@endphp
@foreach ($permissions as $permission)
@if (!in_array($permission['permission_group_name'], $tabGroup2))
@continue
@endif
@if ($permission['permission_group_name'] !== $currentGroup)
@if ($currentGroup !== '')
</div>
</div>
@endif
<div
x-data=
"{
allChecked: false,
permissionList: @entangle('permission_lists'),
toggleAll(group) {
this.allChecked = !this.allChecked;
document.querySelectorAll(`.permissionGroup[data-group='${group}'] input[type='checkbox']`).forEach(checkbox => {
checkbox.checked = this.allChecked;
if (this.allChecked) {
if (!this.permissionListAlpine.includes(checkbox.value)) {
this.permissionListAlpine.push(checkbox.value);
}
} else {
this.permissionListAlpine = this.permissionListAlpine.filter(id => id != checkbox.value);
}
});
},
toggleIndividual(event) {
event.stopPropagation();
this.allChecked = this.permissionListAlpine.length === @json($permissions->count());
}
}"
class=
"card grow items-center p-4 sm:p-5 cursor-pointer permissionGroup"
data-group=
"{{ $permission['permission_group_name'] }}"
@
click=
"toggleAll('{{ $permission['permission_group_name'] }}')"
>
<h3
class=
"pt-3 text-lg font-medium text-slate-700 dark:text-navy-100"
>
{{ $permission['permission_group_name'] }}
</h3>
<div
class=
"my-4 h-px w-full bg-slate-200 dark:bg-navy-500"
></div>
<div
class=
"grow space-y-4 permission-list"
>
@endif
<div
class=
"flex items-center space-x-4"
>
<label
class=
"inline-flex items-center space-x-2"
@
click=
"toggleIndividual($event)"
>
<input
class=
"form-switch h-5 w-10 rounded-full bg-slate-300 before:rounded-full before:bg-slate-50 checked:!bg-primary checked:before:bg-white dark:bg-navy-900 dark:before:bg-navy-300 dark:checked:before:bg-white"
type=
"checkbox"
x-model=
"permissionListAlpine"
value=
"{{ $permission['id'] }}"
/>
<span>
{{ $permission['name'] }}
</span>
</label>
</div>
@php $currentGroup = $permission['permission_group_name']; @endphp
@endforeach
@if ($currentGroup !== '')
</div>
@endif
</div>
</div>
</div>
</div>
<div
x-show=
"activeTab === 'Export'"
class=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<div
x-transition:enter=
"transition-all duration-500 ease-in-out"
x-transition:enter-start=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x-transition:enter-end=
"opacity-100 [transform:translate3d(0,0,0)]"
>
<div
class=
"grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-5 lg:grid-cols-3 lg:gap-6 xl:grid-cols-3"
>
@php
$currentGroup = '';
$tabGroup3 = [
'File Management Export',
'Header Management Export',
'Detail Management Export',
'Item Management Export',
'Flight Management Export',
];
@endphp
@foreach ($permissions as $permission)
@if (!in_array($permission['permission_group_name'], $tabGroup3))
@continue
@endif
@if ($permission['permission_group_name'] !== $currentGroup)
@if ($currentGroup !== '')
</div>
</div>
@endif
<div
x-data=
"{
allChecked: false,
permissionList: @entangle('permission_lists'),
toggleAll(group) {
this.allChecked = !this.allChecked;
document.querySelectorAll(`.permissionGroup[data-group='${group}'] input[type='checkbox']`).forEach(checkbox => {
checkbox.checked = this.allChecked;
if (this.allChecked) {
if (!this.permissionListAlpine.includes(checkbox.value)) {
this.permissionListAlpine.push(checkbox.value);
}
} else {
this.permissionListAlpine = this.permissionListAlpine.filter(id => id != checkbox.value);
}
});
},
toggleIndividual(event) {
event.stopPropagation();
this.allChecked = this.permissionListAlpine.length === @json($permissions->count());
}
}"
class=
"card grow items-center p-4 sm:p-5 cursor-pointer permissionGroup"
data-group=
"{{ $permission['permission_group_name'] }}"
@
click=
"toggleAll('{{ $permission['permission_group_name'] }}')"
>
<h3
class=
"pt-3 text-lg font-medium text-slate-700 dark:text-navy-100"
>
{{ $permission['permission_group_name'] }}
</h3>
<div
class=
"my-4 h-px w-full bg-slate-200 dark:bg-navy-500"
></div>
<div
class=
"grow space-y-4 permission-list"
>
@endif
<div
class=
"flex items-center space-x-4"
>
<label
class=
"inline-flex items-center space-x-2"
@
click=
"toggleIndividual($event)"
>
<input
class=
"form-switch h-5 w-10 rounded-full bg-slate-300 before:rounded-full before:bg-slate-50 checked:!bg-primary checked:before:bg-white dark:bg-navy-900 dark:before:bg-navy-300 dark:checked:before:bg-white"
type=
"checkbox"
x-model=
"permissionListAlpine"
value=
"{{ $permission['id'] }}"
/>
<span>
{{ $permission['name'] }}
</span>
</label>
</div>
@php $currentGroup = $permission['permission_group_name']; @endphp
@endforeach
@if ($currentGroup !== '')
</div>
@endif
</div>
</div>
</div>
</div>
</div>
</form>
<div
class=
"grid grid-cols-6 justify-center space-x-2 pt-4"
>
</form>
<div
class=
"grid grid-cols-6 justify-center space-x-2 pt-4"
>
<span
wire:click=
"goBack"
class=
"col-start-3 btn border border-slate-300 font-medium text-slate-800 hover:bg-slate-150 focus:bg-slate-150 active:bg-slate-150/80 dark:border-navy-450 dark:text-navy-50 dark:hover:bg-navy-500 dark:focus:bg-navy-500 dark:active:bg-navy-500/90"
>
Cancel
...
...
@@ -305,5 +139,5 @@
class=
"btn ml-3 bg-primary font-medium text-white hover:bg-primary-focus focus:bg-primary-focus active:bg-primary-focus/90 dark:bg-accent dark:hover:bg-accent-focus dark:focus:bg-accent-focus dark:active:bg-accent/90"
>
Save
</button>
</div>
</div>
</div>
resources/views/livewire/pages/role/role-edit.blade.php
View file @
1097ea6b
...
...
@@ -2,13 +2,12 @@
$jsonPermissionLists
=
json_encode
(
$permission_lists
??
[]);
@
endphp
<
div
class
=
"grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6"
x
-
data
=
"{
<
div
class
=
"grid grid-cols-1 gap-4 sm:gap-5 lg:gap-6"
x
-
data
=
"{
permissionListAlpine: {!!
$jsonPermissionLists
!!},
submit() {
@this.call('submitEditForm', this.permissionListAlpine);
}
}"
>
}"
>
<
form
wire
:
submit
.
prevent
=
""
>
@
csrf
...
...
@@ -47,32 +46,8 @@
</
div
>
<
div
class
=
"tabs flex flex-col"
>
<
div
x
-
data
=
"{ activeTab: 'Import' }"
class
=
"tabs flex flex-col"
>
<
div
class
=
"is-scrollbar-hidden overflow-x-auto bg-slate-200 text-slate-600 dark:bg-navy-800 dark:text-navy-200 p-2"
>
<
div
class
=
"tabs-list flex"
>
<
button
@
click
=
"activeTab = 'Center'"
type
=
"button"
:
class
=
"activeTab === 'Center' ? 'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class
=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Center
</
button
>
<
button
@
click
=
"activeTab = 'Import'"
type
=
"button"
:
class
=
"activeTab === 'Import' ?
'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class
=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Import
</
button
>
<
button
@
click
=
"activeTab = 'Export'"
type
=
"button"
:
class
=
"activeTab === 'Export' ?
'bg-white shadow dark:bg-navy-500 dark:text-navy-100' :
'hover:text-slate-800 focus:text-slate-800 dark:hover:text-navy-100 dark:focus:text-navy-100'"
class
=
"btn shrink-0 space-x-2 px-3 py-1.5 font-medium"
>
Export
</
button
>
</
div
>
</
div
>
<
div
x
-
show
=
"activeTab === 'Center'"
class
=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<
div
class
=
"tab-content pt-4 px-2 mt-2 pb-2"
>
<
div
x
-
transition
:
enter
=
"transition-all duration-500 ease-in-out"
x
-
transition
:
enter
-
start
=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x
-
transition
:
enter
-
end
=
"opacity-100 [transform:translate3d(0,0,0)]"
>
...
...
@@ -86,6 +61,12 @@
'Group Management'
,
'Company Management'
,
'Company Type Management'
,
'Server License Management'
,
'Patch Management'
,
'Send Patch Management'
,
'Parameter Management'
,
'Patch Exchange Rate Management'
,
'Patch Discharge Port Management'
,
];
@
endphp
...
...
@@ -150,158 +131,10 @@
</
div
>
</
div
>
</
div
>
<
div
x
-
show
=
"activeTab === 'Import'"
class
=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<
div
x
-
transition
:
enter
=
"transition-all duration-500 ease-in-out"
x
-
transition
:
enter
-
start
=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x
-
transition
:
enter
-
end
=
"opacity-100 [transform:translate3d(0,0,0)]"
>
<
div
class
=
"grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-5 lg:grid-cols-3 lg:gap-6 xl:grid-cols-3"
>
@
php
$currentGroup
=
''
;
$tabGroup2
=
[
'File Management Import'
,
'Header Management Import'
,
'Detail Management Import'
,
'Item Management Import'
,
'Flight Management Import'
,
];
@
endphp
@
foreach
(
$permissions
as
$permission
)
@
if
(
!
in_array
(
$permission
[
'permission_group_name'
],
$tabGroup2
))
@
continue
@
endif
@
if
(
$permission
[
'permission_group_name'
]
!==
$currentGroup
)
@
if
(
$currentGroup
!==
''
)
</
div
>
</
div
>
@
endif
<
div
x
-
data
=
"{
allChecked: false,
permissionList: @entangle('permission_lists'),
toggleAll(group) {
this.allChecked = !this.allChecked;
document.querySelectorAll(`.permissionGroup[data-group='${group}'] input[type='checkbox']`).forEach(checkbox => {
checkbox.checked = this.allChecked;
if (this.allChecked) {
if (!this.permissionListAlpine.includes(checkbox.value)) {
this.permissionListAlpine.push(checkbox.value);
}
} else {
this.permissionListAlpine = this.permissionListAlpine.filter(id => id != checkbox.value);
}
});
},
toggleIndividual(event) {
event.stopPropagation();
this.allChecked = this.permissionListAlpine.length === @json(
$permissions->count
());
}
}"
class
=
"card grow items-center p-4 sm:p-5 cursor-pointer permissionGroup"
data
-
group
=
"{{
$permission['permission_group_name']
}}"
@
click
=
"toggleAll('{{
$permission['permission_group_name']
}}')"
>
<
h3
class
=
"pt-3 text-lg font-medium text-slate-700 dark:text-navy-100"
>
{{
$permission
[
'permission_group_name'
]
}}
</
h3
>
<
div
class
=
"my-4 h-px w-full bg-slate-200 dark:bg-navy-500"
></
div
>
<
div
class
=
"grow space-y-4 permission-list"
>
@
endif
<
div
class
=
"flex items-center space-x-4"
>
<
label
class
=
"inline-flex items-center space-x-2"
@
click
=
"toggleIndividual(
$event
)"
>
<
input
class
=
"form-switch h-5 w-10 rounded-full bg-slate-300 before:rounded-full before:bg-slate-50 checked:!bg-primary checked:before:bg-white dark:bg-navy-900 dark:before:bg-navy-300 dark:checked:before:bg-white"
type
=
"checkbox"
x
-
model
=
"permissionListAlpine"
value
=
"{{
$permission['id']
}}"
/>
<
span
>
{{
$permission
[
'name'
]
}}
</
span
>
</
label
>
</
div
>
@
php
$currentGroup
=
$permission
[
'permission_group_name'
];
@
endphp
@
endforeach
@
if
(
$currentGroup
!==
''
)
</
div
>
@
endif
</
div
>
</
div
>
</
div
>
</
div
>
<
div
x
-
show
=
"activeTab === 'Export'"
class
=
"tab-content pt-4 bg-slate-200 px-2 mt-2 pb-2"
>
<
div
x
-
transition
:
enter
=
"transition-all duration-500 ease-in-out"
x
-
transition
:
enter
-
start
=
"opacity-0 [transform:translate3d(1rem,0,0)]"
x
-
transition
:
enter
-
end
=
"opacity-100 [transform:translate3d(0,0,0)]"
>
<
div
class
=
"grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-5 lg:grid-cols-3 lg:gap-6 xl:grid-cols-3"
>
@
php
$currentGroup
=
''
;
$tabGroup3
=
[
'File Management Export'
,
'Header Management Export'
,
'Detail Management Export'
,
'Item Management Export'
,
'Flight Management Export'
,
];
@
endphp
@
foreach
(
$permissions
as
$permission
)
@
if
(
!
in_array
(
$permission
[
'permission_group_name'
],
$tabGroup3
))
@
continue
@
endif
@
if
(
$permission
[
'permission_group_name'
]
!==
$currentGroup
)
@
if
(
$currentGroup
!==
''
)
</
div
>
</
div
>
@
endif
<
div
x
-
data
=
"{
allChecked: false,
permissionList: @entangle('permission_lists'),
toggleAll(group) {
this.allChecked = !this.allChecked;
document.querySelectorAll(`.permissionGroup[data-group='${group}'] input[type='checkbox']`).forEach(checkbox => {
checkbox.checked = this.allChecked;
if (this.allChecked) {
if (!this.permissionListAlpine.includes(checkbox.value)) {
this.permissionListAlpine.push(checkbox.value);
}
} else {
this.permissionListAlpine = this.permissionListAlpine.filter(id => id != checkbox.value);
}
});
},
toggleIndividual(event) {
event.stopPropagation();
this.allChecked = this.permissionListAlpine.length === @json(
$permissions->count
());
}
}"
class
=
"card grow items-center p-4 sm:p-5 cursor-pointer permissionGroup"
data
-
group
=
"{{
$permission['permission_group_name']
}}"
@
click
=
"toggleAll('{{
$permission['permission_group_name']
}}')"
>
<
h3
class
=
"pt-3 text-lg font-medium text-slate-700 dark:text-navy-100"
>
{{
$permission
[
'permission_group_name'
]
}}
</
h3
>
<
div
class
=
"my-4 h-px w-full bg-slate-200 dark:bg-navy-500"
></
div
>
<
div
class
=
"grow space-y-4 permission-list"
>
@
endif
<
div
class
=
"flex items-center space-x-4"
>
<
label
class
=
"inline-flex items-center space-x-2"
@
click
=
"toggleIndividual(
$event
)"
>
<
input
class
=
"form-switch h-5 w-10 rounded-full bg-slate-300 before:rounded-full before:bg-slate-50 checked:!bg-primary checked:before:bg-white dark:bg-navy-900 dark:before:bg-navy-300 dark:checked:before:bg-white"
type
=
"checkbox"
x
-
model
=
"permissionListAlpine"
value
=
"{{
$permission['id']
}}"
/>
<
span
>
{{
$permission
[
'name'
]
}}
</
span
>
</
label
>
</
div
>
@
php
$currentGroup
=
$permission
[
'permission_group_name'
];
@
endphp
@
endforeach
@
if
(
$currentGroup
!==
''
)
</
div
>
@
endif
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
form
>
<
div
class
=
"grid grid-cols-6 justify-center space-x-2 pt-4"
>
</
form
>
<
div
class
=
"grid grid-cols-6 justify-center space-x-2 pt-4"
>
<
span
wire
:
click
=
"goBack"
class
=
"col-start-3 btn border border-slate-300 font-medium text-slate-800 hover:bg-slate-150 focus:bg-slate-150 active:bg-slate-150/80 dark:border-navy-450 dark:text-navy-50 dark:hover:bg-navy-500 dark:focus:bg-navy-500 dark:active:bg-navy-500/90"
>
Cancel
...
...
@@ -310,5 +143,5 @@
class
=
"btn ml-3 bg-primary font-medium text-white hover:bg-primary-focus focus:bg-primary-focus active:bg-primary-focus/90 dark:bg-accent dark:hover:bg-accent-focus dark:focus:bg-accent-focus dark:active:bg-accent/90"
>
Save
</
button
>
</
div
>
</
div
>
</
div
>
resources/views/livewire/pages/user/user-index.blade.php
View file @
1097ea6b
...
...
@@ -150,7 +150,7 @@
value=
"{{ $user->id }}"
/>
</label>
</td>
<td
class=
"whitespace-nowrap px-4 py-3 sm:px-5"
>
{{ $user->name }}
</td>
<td
class=
"whitespace-nowrap px-4 py-3 sm:px-5"
>
{{ $user->
user
name }}
</td>
<td
class=
"whitespace-nowrap px-4 py-3 sm:px-5"
>
{{ $user->email }}
</td>
<td
class=
"whitespace-nowrap px-4 py-3 sm:px-5"
>
@php
...
...
routes/web.php
View file @
1097ea6b
...
...
@@ -18,10 +18,14 @@ use App\Http\Controllers\ExchangeRateController;
use
App\Http\Controllers\ConsigneeController
;
use
App\Http\Controllers\DeletePatchController
;
use
App\Http\Controllers\DischargePortController
;
use
App\Http\Controllers\FormatFileMasterContrller
;
use
App\Http\Controllers\MasterFileController
;
use
App\Http\Controllers\ParameterController
;
use
App\Http\Controllers\PatchController
;
use
App\Http\Controllers\SelectListController
;
use
App\Http\Controllers\SendPatchController
;
use
App\Http\Controllers\ServerLicenseController
;
use
App\Http\Controllers\TransferDataController
;
use
App\Http\Livewire\Pages\Role\RoleIndex
;
use
App\Http\Livewire\Pages\SendPatch\SendPatch
;
/*
...
...
@@ -37,7 +41,7 @@ use App\Http\Livewire\Pages\SendPatch\SendPatch;
// $test = ConfServerLicense::limit(3)->get();
// dd($test);
Route
::
get
(
'/transfer-user'
,
[
TransferDataController
::
class
,
'transferUserData'
]);
Route
::
middleware
(
'guest'
)
->
group
(
function
()
{
Route
::
get
(
'/login'
,
[
\
App\Http\Controllers\AuthController
::
class
,
'loginView'
])
->
name
(
'loginView'
);
Route
::
post
(
'/login'
,
[
\
App\Http\Controllers\AuthController
::
class
,
'login'
])
->
name
(
'login'
);
...
...
@@ -52,40 +56,30 @@ Route::middleware('auth')->group(function () {
Route
::
get
(
'/get-serverlicense'
,
[
ServerLicenseController
::
class
,
'getAllServerKey'
]);
Route
::
get
(
'/patch'
,
[
PatchController
::
class
,
'index'
])
->
name
(
'patch.index'
);
Route
::
get
(
'/master-file'
,
[
MasterFileController
::
class
,
'index'
])
->
name
(
'master-file.index'
);
Route
::
get
(
'/format-file-master'
,
[
FormatFileMasterContrller
::
class
,
'index'
])
->
name
(
'format-file-master.index'
);
Route
::
get
(
'/send-patch'
,
[
SendPatchController
::
class
,
'index'
]);
Route
::
get
(
'/send-multi-patch'
,
[
SendPatchController
::
class
,
'indexMulti'
]);
Route
::
get
(
'/delete-multi-patch'
,
[
DeletePatchController
::
class
,
'indexMulti'
]);
Route
::
get
(
'/server-license'
,
[
ServerLicenseController
::
class
,
'index'
])
->
name
(
'server-license.index'
);
Route
::
get
(
'/user'
,
[
UserController
::
class
,
'index'
])
->
name
(
'user.index'
);
Route
::
get
(
'/company'
,
[
CompanyController
::
class
,
'index'
])
->
name
(
'company.index'
);
Route
::
get
(
'/group'
,
[
GroupController
::
class
,
'index'
])
->
name
(
'group.index'
);
Route
::
get
(
'/role'
,
[
RoleController
::
class
,
'index'
])
->
name
(
'role.index'
);
Route
::
get
(
'/user'
,
[
UserController
::
class
,
'index'
])
->
name
(
'user.index'
);
Route
::
get
(
'/company'
,
[
CompanyController
::
class
,
'index'
])
->
name
(
'company.index'
);
Route
::
get
(
'/group'
,
[
GroupController
::
class
,
'index'
])
->
name
(
'group.index'
);
Route
::
get
(
'/role'
,
[
RoleController
::
class
,
'index'
])
->
name
(
'role.index'
);
Route
::
get
(
'/exchange-rate'
,
[
ExchangeRateController
::
class
,
'index'
]);
Route
::
get
(
'/parameter'
,
[
ParameterController
::
class
,
'index'
]);
Route
::
get
(
'/discharge-port'
,
[
DischargePortController
::
class
,
'index'
]);
Route
::
get
(
'/get-users'
,
[
SelectListController
::
class
,
'getUsers'
]);
Route
::
get
(
'/get-roles'
,
[
SelectListController
::
class
,
'getRoles'
]);
Route
::
get
(
'/get-groups'
,
[
SelectListController
::
class
,
'getGroups'
]);
// Route::get('role', [RoleController::class ,'index'])->name('role-index');
// Route::get('/role', [RoleIndex::class])->name('role-index');
// Route::get('/generateModels', [GenModelController::class, 'generateModels']);
});
sonar-project.properties
0 → 100644
View file @
1097ea6b
sonar.projectKey
=
SpnPatch
sonar.projectName
=
SpnPatch
sonar.projectVersion
=
1.0
sonar.sources
=
.
sonar.host.url
=
http://localhost:9000
sonar.login
=
sqp_917ecaf164588e499aca30eaac9dd1e9f4f3765a
sonar.exclusions
=
vendor/**,storage/**,bootstrap/cache/**,public/**
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment