68 lines
3.9 KiB
JavaScript
68 lines
3.9 KiB
JavaScript
import XLSX from 'xlsx';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
// Template Kriteria Pelanggaran
|
|
const violationRulesData = [
|
|
{ Kode: 'A1', Deskripsi: 'Membawa/menggunakan senjata tajam/api', Kategori: 'Perilaku', Skor: 100, Sanksi: '' },
|
|
{ Kode: 'A2', Deskripsi: 'Membawa/menggunakan narkoba/miras', Kategori: 'Perilaku', Skor: 100, Sanksi: '' },
|
|
{ Kode: 'A3', Deskripsi: 'Berkelahi/tawuran', Kategori: 'Perilaku', Skor: 100, Sanksi: '' },
|
|
{ Kode: 'A4', Deskripsi: 'Merusak sarana sekolah', Kategori: 'Perilaku', Skor: 50, Sanksi: 'Mengganti sarana' },
|
|
{ Kode: 'A5', Deskripsi: 'Membuat gaduh di kelas', Kategori: 'Perilaku', Skor: 25, Sanksi: '' },
|
|
{ Kode: 'B1', Deskripsi: 'Absen tanpa keterangan (Alpha)', Kategori: 'Kerajinan', Skor: 5, Sanksi: '' },
|
|
{ Kode: 'B2', Deskripsi: 'Terlambat hadir ke sekolah', Kategori: 'Kerajinan', Skor: 5, Sanksi: '' },
|
|
{ Kode: 'B3', Deskripsi: 'Absen ulangan tanpa izin', Kategori: 'Kerajinan', Skor: 10, Sanksi: '' },
|
|
{ Kode: 'C1', Deskripsi: 'Seragam tidak sesuai ketentuan', Kategori: 'Kerapian', Skor: 20, Sanksi: '' },
|
|
{ Kode: 'C2', Deskripsi: 'Rambut gondrong/tidak rapi', Kategori: 'Kerapian', Skor: 10, Sanksi: '' },
|
|
];
|
|
|
|
const wsViolation = XLSX.utils.json_to_sheet(violationRulesData);
|
|
wsViolation['!cols'] = [
|
|
{ wch: 8 }, // Kode
|
|
{ wch: 50 }, // Deskripsi
|
|
{ wch: 15 }, // Kategori
|
|
{ wch: 8 }, // Skor
|
|
{ wch: 25 }, // Sanksi
|
|
];
|
|
|
|
const wbViolation = XLSX.utils.book_new();
|
|
XLSX.utils.book_append_sheet(wbViolation, wsViolation, 'Kriteria Pelanggaran');
|
|
XLSX.writeFile(wbViolation, path.join(__dirname, 'Template-Import-Kriteria-Pelanggaran.xlsx'));
|
|
console.log('✅ Template Kriteria Pelanggaran created!');
|
|
|
|
// Template Kriteria Prestasi
|
|
const achievementCriteriaData = [
|
|
{ Tingkat: 'Internasional', Prestasi: 'Juara I', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 50 },
|
|
{ Tingkat: 'Internasional', Prestasi: 'Juara II', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 45 },
|
|
{ Tingkat: 'Internasional', Prestasi: 'Juara III', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 40 },
|
|
{ Tingkat: 'Nasional', Prestasi: 'Juara I', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 40 },
|
|
{ Tingkat: 'Nasional', Prestasi: 'Juara II', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 35 },
|
|
{ Tingkat: 'Nasional', Prestasi: 'Juara III', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 30 },
|
|
{ Tingkat: 'Provinsi', Prestasi: 'Juara I', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 30 },
|
|
{ Tingkat: 'Provinsi', Prestasi: 'Juara II', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 25 },
|
|
{ Tingkat: 'Kabupaten/Kota', Prestasi: 'Juara I', Jenis: 'Perorangan', 'Ukuran Kelompok': '', Skor: 20 },
|
|
{ Tingkat: 'Kabupaten/Kota', Prestasi: 'Juara I', Jenis: 'Kelompok', 'Ukuran Kelompok': '1-3 orang', Skor: 18 },
|
|
{ Tingkat: 'Kabupaten/Kota', Prestasi: 'Juara I', Jenis: 'Kelompok', 'Ukuran Kelompok': '4-6 orang', Skor: 16 },
|
|
{ Tingkat: 'Kabupaten/Kota', Prestasi: 'Juara I', Jenis: 'Kelompok', 'Ukuran Kelompok': '7-12 orang', Skor: 14 },
|
|
{ Tingkat: 'Kabupaten/Kota', Prestasi: 'Juara I', Jenis: 'Kelompok', 'Ukuran Kelompok': 'Lebih dari 12 orang', Skor: 12 },
|
|
];
|
|
|
|
const wsAchievement = XLSX.utils.json_to_sheet(achievementCriteriaData);
|
|
wsAchievement['!cols'] = [
|
|
{ wch: 18 }, // Tingkat
|
|
{ wch: 15 }, // Prestasi
|
|
{ wch: 12 }, // Jenis
|
|
{ wch: 22 }, // Ukuran Kelompok
|
|
{ wch: 8 }, // Skor
|
|
];
|
|
|
|
const wbAchievement = XLSX.utils.book_new();
|
|
XLSX.utils.book_append_sheet(wbAchievement, wsAchievement, 'Kriteria Prestasi');
|
|
XLSX.writeFile(wbAchievement, path.join(__dirname, 'Template-Import-Kriteria-Prestasi.xlsx'));
|
|
console.log('✅ Template Kriteria Prestasi created!');
|
|
|
|
console.log('\n📁 Templates saved to public/templates/ folder');
|