Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -46,6 +46,9 @@
|
||||
<q-item clickable @click="selectAllModules">
|
||||
<q-item-section>Tümünü Seç</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="clearAllModules">
|
||||
<q-item-section>Tümünü Temizle</q-item-section>
|
||||
</q-item>
|
||||
<q-separator />
|
||||
<q-item
|
||||
v-for="m in store.modules"
|
||||
@@ -78,6 +81,9 @@
|
||||
<q-item clickable @click="selectAllActionsForActive">
|
||||
<q-item-section>Tümünü Seç</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable @click="clearAllActionsForActive">
|
||||
<q-item-section>Tümünü Temizle</q-item-section>
|
||||
</q-item>
|
||||
<q-separator />
|
||||
<q-item
|
||||
v-for="a in actionsForActiveModule"
|
||||
@@ -180,6 +186,7 @@ const canUpdateUser = canUpdate('user')
|
||||
const selectedModules = ref([])
|
||||
const selectedActionsByModule = ref({})
|
||||
const activeModuleCode = ref('')
|
||||
const allowEmptySelection = ref(false)
|
||||
|
||||
const actionLabelMap = {
|
||||
update: 'Güncelleme',
|
||||
@@ -284,9 +291,15 @@ function syncSelections () {
|
||||
}
|
||||
|
||||
const selected = selectedModules.value.filter((m) => availableModules.includes(m))
|
||||
selectedModules.value = selected.length ? selected : [...availableModules]
|
||||
if (selected.length) {
|
||||
selectedModules.value = selected
|
||||
} else {
|
||||
selectedModules.value = allowEmptySelection.value ? [] : [...availableModules]
|
||||
}
|
||||
|
||||
if (!selectedModules.value.includes(activeModuleCode.value)) {
|
||||
if (!selectedModules.value.length) {
|
||||
activeModuleCode.value = ''
|
||||
} else if (!selectedModules.value.includes(activeModuleCode.value)) {
|
||||
activeModuleCode.value = selectedModules.value[0]
|
||||
}
|
||||
|
||||
@@ -295,7 +308,7 @@ function syncSelections () {
|
||||
const allActions = actionsByModule.value[m] || []
|
||||
const prev = selectedActionsByModule.value[m] || []
|
||||
const filtered = prev.filter((a) => allActions.includes(a))
|
||||
next[m] = filtered.length ? filtered : [...allActions]
|
||||
next[m] = filtered.length ? filtered : (allowEmptySelection.value ? [] : [...allActions])
|
||||
})
|
||||
selectedActionsByModule.value = next
|
||||
}
|
||||
@@ -313,6 +326,7 @@ function isModuleSelected (moduleCode) {
|
||||
}
|
||||
|
||||
function toggleModule (moduleCode, checked) {
|
||||
allowEmptySelection.value = false
|
||||
const set = new Set(selectedModules.value)
|
||||
if (checked) {
|
||||
set.add(moduleCode)
|
||||
@@ -321,9 +335,8 @@ function toggleModule (moduleCode, checked) {
|
||||
}
|
||||
selectedModules.value = [...set]
|
||||
if (!selectedModules.value.length) {
|
||||
selectedModules.value = [moduleCode]
|
||||
}
|
||||
if (!selectedModules.value.includes(activeModuleCode.value)) {
|
||||
activeModuleCode.value = ''
|
||||
} else if (!selectedModules.value.includes(activeModuleCode.value)) {
|
||||
activeModuleCode.value = selectedModules.value[0]
|
||||
}
|
||||
syncSelections()
|
||||
@@ -334,24 +347,31 @@ function onModuleRowClick (moduleCode) {
|
||||
}
|
||||
|
||||
function selectAllModules () {
|
||||
allowEmptySelection.value = false
|
||||
selectedModules.value = (store.modules || []).map((m) => m.value)
|
||||
syncSelections()
|
||||
}
|
||||
|
||||
function clearAllModules () {
|
||||
allowEmptySelection.value = true
|
||||
selectedModules.value = []
|
||||
selectedActionsByModule.value = {}
|
||||
activeModuleCode.value = ''
|
||||
syncSelections()
|
||||
}
|
||||
|
||||
function isActionSelected (moduleCode, action) {
|
||||
return (selectedActionsByModule.value[moduleCode] || []).includes(action)
|
||||
}
|
||||
|
||||
function toggleAction (moduleCode, action, checked) {
|
||||
allowEmptySelection.value = false
|
||||
const current = new Set(selectedActionsByModule.value[moduleCode] || [])
|
||||
if (checked) {
|
||||
current.add(action)
|
||||
} else {
|
||||
current.delete(action)
|
||||
}
|
||||
if (current.size === 0) {
|
||||
current.add(action)
|
||||
}
|
||||
selectedActionsByModule.value = {
|
||||
...selectedActionsByModule.value,
|
||||
[moduleCode]: [...current]
|
||||
@@ -359,6 +379,7 @@ function toggleAction (moduleCode, action, checked) {
|
||||
}
|
||||
|
||||
function selectAllActionsForActive () {
|
||||
allowEmptySelection.value = false
|
||||
if (!activeModuleCode.value) return
|
||||
selectedActionsByModule.value = {
|
||||
...selectedActionsByModule.value,
|
||||
@@ -366,6 +387,15 @@ function selectAllActionsForActive () {
|
||||
}
|
||||
}
|
||||
|
||||
function clearAllActionsForActive () {
|
||||
allowEmptySelection.value = true
|
||||
if (!activeModuleCode.value) return
|
||||
selectedActionsByModule.value = {
|
||||
...selectedActionsByModule.value,
|
||||
[activeModuleCode.value]: []
|
||||
}
|
||||
}
|
||||
|
||||
const permissionColumns = computed(() => {
|
||||
const cols = []
|
||||
selectedModules.value.forEach((m) => {
|
||||
|
||||
Reference in New Issue
Block a user