{{ t(getGreetingTime() === 'Morning' ? 'dash_morning' : getGreetingTime() === 'Afternoon' ? 'dash_afternoon' : 'dash_evening', getGreetingTime()) }}, {{ userProfile?.fullname || t('lbl_commander', 'Commander') }} {{ t('emoji_wave', '👋') }}
{{ t('dash_node', 'GENESIS CLOUD NODE') }} {{ t('sym_bullet', '•') }} {{ getFormattedToday() }}
{{ t('dash_sec_posture', 'Identity & Security Posture') }}
{{ t('lbl_fido2_title', 'Hardware Biometrics (FIDO2)') }}
{{ userProfile?.has_biometric ? t('lbl_fido2_active_desc', 'Device registered. You can temporarily disable this authentication method.') : t('lbl_fido2_desc', 'Action Needed: Register this device for 1-click secure login.') }}
{{ t('lbl_sso_title', 'Social Identity Providers') }}
{{ t('lbl_sso_desc_manage', 'Manage external Omni-Channel accounts for 1-click access.') }}
{{ t('dash_audit_ledger', 'Real-time Audit Ledger') }}
{{ parseJsonText(log.menu_name) }}
{{ t('sym_hash', '#') }}{{ log.record.substring(0, 8) }}{{ parseJsonText(activeMenuTitle) }} ({{ currentStatusFilter === 'All' ? t('lbl_all_data', 'ALL DATA') : currentStatusFilter }})
|
|
|
{{ parseJsonText(col.labelbagian) }}
{{ getSortIcon(col.bagian) }}
|
|---|---|---|
| ★ |
|
{{ formErrors['new_' + col.bagian] }}
{{ newRecord[col.bagian] || t('lbl_id', 'ID') }}
{{ parseJsonText(newRecord[col.bagian+'_label']) || t('form_select_default', '-- Select --') }}
{{newRecord[col.bagian+'_filename']|| t('lbl_no_file', 'No File') }}
{ handleMultilingualInput(newRecord, col.bagian, e.target.value); validateDynamicRegex(col, newRecord, 'new_' + col.bagian); typeof runFunctionIsi === 'function' && runFunctionIsi(newRecord) }"
@change="clearDependencies(col.bagian, newRecord)"
@keyup.enter="saveInlineNew"
class="w-full border border-blue-300 rounded px-1 pr-5 h-5 text-[11px] font-medium outline-none focus:border-blue-500 transition-colors"
:class="(col.readonlybagian === 1 || isColReadOnly(col.bagian)) ? 'bg-slate-100 opacity-70 cursor-not-allowed' : 'bg-white'"
:placeholder="parseJsonText(col.titlebagian) || parseJsonText(col.labelbagian)"
/>
{{ newRecord[col.bagian] || t('lbl_default_color', '#000000') }}
|
|
|
|
{{ formErrors['edit_' + row.id + '_' + col.bagian] }}
{{ row[col.bagian] || t('lbl_no_file', 'No File') }}
{{ row[col.bagian] || t('lbl_id', 'ID') }}
{{ parseJsonText(row[col.bagian + '_label']) || t('lbl_strip', '---') }}
{ handleMultilingualInput(row, col.bagian, e.target.value); validateDynamicRegex(col, row, 'edit_' + row.id + '_' + col.bagian); typeof runFunctionIsi === 'function' && runFunctionIsi(row) }"
@change="clearDependencies(col.bagian, row)"
@blur="saveInline(row, col.bagian)"
@keyup.enter="$event.target.blur()"
class="w-full border border-blue-400 rounded-sm px-1.5 py-0 pr-5 text-[11px] min-h-[26px] font-semibold outline-none transition-colors relative z-0 focus:border-blue-500"
:class="col.readonlybagian === 1 || (!isRowEditable(row.status) && row.status) || isColReadOnly(col.bagian) ? 'bg-slate-100 opacity-70 cursor-not-allowed' : 'bg-white'"
:placeholder="parseJsonText(col.titlebagian) || (t('ph_type', 'Ketik ') + parseJsonText(col.labelbagian) + t('ph_dots', '...'))"
/>
{{ row[col.bagian] || t('lbl_default_color', '#000000') }}
|
|
{{ t('form_no_child', `This parent table has no detail data hierarchy (Child Data).`) }} |
||
| {{ t('lbl_total', 'TOTAL') }} | {{ formatDisplay(calculateTotal(col.bagian), col.bentukbagian) }} |