Merge branch 'development' into fix/project-flock

This commit is contained in:
ValdiANS
2026-02-02 11:14:54 +07:00
3 changed files with 78 additions and 46 deletions
+31 -7
View File
@@ -16,24 +16,47 @@ default:
.build_template: &build_template .build_template: &build_template
stage: build stage: build
image: node:20-alpine image: node:20-alpine
cache: cache:
key: npm-cache key: npm-cache
paths: paths:
- node_modules/ - node_modules/
variables: variables:
NPM_CONFIG_PRODUCTION: 'false' NODE_ENV: ""
NODE_ENV: '' NPM_CONFIG_PRODUCTION: "false"
script: script:
- echo "Installing dependencies..." # Install dependencies
- echo "📦 Installing dependencies..."
- npm ci --no-audit --no-fund - npm ci --no-audit --no-fund
- echo "Build env used:"
# Print env used
- echo "✅ Build env used:"
- echo "NEXT_PUBLIC_LTI_URL=$NEXT_PUBLIC_LTI_URL" - echo "NEXT_PUBLIC_LTI_URL=$NEXT_PUBLIC_LTI_URL"
- echo "NEXT_PUBLIC_SSO_LOGIN_URL=$NEXT_PUBLIC_SSO_LOGIN_URL" - echo "NEXT_PUBLIC_SSO_LOGIN_URL=$NEXT_PUBLIC_SSO_LOGIN_URL"
- echo "NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL" - echo "NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL"
- echo "Building Next.js static export..."
# Clean old output
- echo "🧹 Cleaning old build..."
- rm -rf .next out
# Build Next.js
- echo "🏗️ Running Next.js build..."
- npx next build - npx next build
# Export static site
- echo "📤 Exporting static site..."
- npx next export
# Validate export result
- echo "🔍 Validating export output..."
- test -f out/index.html || (echo "❌ out/index.html missing" && exit 1)
- test -d out/_next/static || (echo "❌ out/_next/static missing" && exit 1)
# Build metadata
- echo "📝 Writing build-info.json..."
- | - |
mkdir -p out
cat <<EOF > out/build-info.json cat <<EOF > out/build-info.json
{ {
"commit": "$CI_COMMIT_SHORT_SHA", "commit": "$CI_COMMIT_SHORT_SHA",
@@ -44,8 +67,9 @@ default:
"NEXT_PUBLIC_API_BASE_URL": "$NEXT_PUBLIC_API_BASE_URL" "NEXT_PUBLIC_API_BASE_URL": "$NEXT_PUBLIC_API_BASE_URL"
} }
EOF EOF
artifacts: artifacts:
name: 'out-$CI_COMMIT_SHORT_SHA' name: "out-$CI_COMMIT_SHORT_SHA"
paths: paths:
- out/ - out/
expire_in: 1 week expire_in: 1 week
@@ -36,6 +36,7 @@ import { ColumnDef } from '@tanstack/react-table';
import { useSelect } from '@/components/input/SelectInput'; import { useSelect } from '@/components/input/SelectInput';
import { KandangApi } from '@/services/api/master-data'; import { KandangApi } from '@/services/api/master-data';
import DebouncedTextInput from '@/components/input/DebouncedTextInput'; import DebouncedTextInput from '@/components/input/DebouncedTextInput';
import RequirePermission from '@/components/helper/RequirePermission';
interface Kandang { interface Kandang {
id: string; id: string;
@@ -389,6 +390,7 @@ export function ListDailyChecklistContent() {
</Button> </Button>
{row.original.status === 'DRAFT' && ( {row.original.status === 'DRAFT' && (
<RequirePermission permissions='lti.daily_checklist.create'>
<Button <Button
size='sm' size='sm'
variant='outline' variant='outline'
@@ -398,10 +400,11 @@ export function ListDailyChecklistContent() {
<Edit className='w-4 h-4 mr-1' /> <Edit className='w-4 h-4 mr-1' />
Edit Edit
</Button> </Button>
</RequirePermission>
)} )}
{row.original.status === 'SUBMITTED' && ( {row.original.status === 'SUBMITTED' && (
<> <RequirePermission permissions='lti.daily_checklist.create'>
<Button <Button
size='sm' size='sm'
onClick={() => handleApprove(row.original)} onClick={() => handleApprove(row.original)}
@@ -419,10 +422,11 @@ export function ListDailyChecklistContent() {
<XCircle className='w-4 h-4 mr-1' /> <XCircle className='w-4 h-4 mr-1' />
Reject Reject
</Button> </Button>
</> </RequirePermission>
)} )}
{row.original.status === 'DRAFT' && ( {row.original.status === 'DRAFT' && (
<RequirePermission permissions='lti.daily_checklist.create'>
<Button <Button
size='sm' size='sm'
variant='destructive' variant='destructive'
@@ -432,6 +436,7 @@ export function ListDailyChecklistContent() {
<Trash2 className='w-4 h-4 mr-1' /> <Trash2 className='w-4 h-4 mr-1' />
Hapus Hapus
</Button> </Button>
</RequirePermission>
)} )}
</div> </div>
), ),
@@ -23,6 +23,7 @@ import { isResponseError } from '@/lib/api-helper';
import Link from 'next/link'; import Link from 'next/link';
import { Icon } from '@iconify/react'; import { Icon } from '@iconify/react';
import { Document } from '@/types/api/api-general'; import { Document } from '@/types/api/api-general';
import RequirePermission from '@/components/helper/RequirePermission';
interface ChecklistDetailRow { interface ChecklistDetailRow {
checklist_id: string; checklist_id: string;
@@ -593,6 +594,7 @@ export function DetailDailyChecklistContent() {
</p> </p>
</div> </div>
{header.status === 'SUBMITTED' && ( {header.status === 'SUBMITTED' && (
<RequirePermission permissions='lti.daily_checklist.create'>
<div className='flex gap-2'> <div className='flex gap-2'>
<Button <Button
onClick={handleApprove} onClick={handleApprove}
@@ -612,6 +614,7 @@ export function DetailDailyChecklistContent() {
Reject Reject
</Button> </Button>
</div> </div>
</RequirePermission>
)} )}
</div> </div>