UNPKG

@syedahoorainali/giaic

Version:

A vibrant Command-Line Interface for managing student records, built with TypeScript.

69 lines (55 loc) 2.47 kB
// @ts-nocheck import chalk from 'chalk'; import inquirer from 'inquirer'; import TableInput from 'inquirer-table-input'; import { Student } from '../utils.js'; inquirer.registerPrompt("table-input", TableInput); // Registering 'TableInput' prompt type with inquirer // Function to see and edit student details const seeAndEditStudents = async (students: Student[]) => { // Check if there are no students if (students.length === 0) { console.log(chalk.magentaBright('There are no candidates')); return students } // Convert the 'isPaid' property of each student to a string representation ('YES' or 'NO') const studentsData = students.map(singleStudent => [ singleStudent.rollNo, singleStudent.name, singleStudent.fatherName, singleStudent.course, String(singleStudent.balance), String(singleStudent.fees), singleStudent.isPaid ? 'YES' : 'NO' ]); // Define table column headings const headings = [ { name: chalk.cyan.bold("Roll No"), value: "rollNo" }, { name: chalk.cyan.bold("Name"), value: "name", editable: "text" }, { name: chalk.cyan.bold("Father Name"), value: "fatherName", editable: "text" }, { name: chalk.cyan.bold("Course"), value: "course", editable: "text" }, { name: chalk.cyan.bold("Balance"), value: "balance" }, { name: chalk.cyan.bold("Fees"), value: "fees", editable: "number" }, { name: chalk.cyan.bold("Paid"), value: "isPaid" }, ] const isValidData = studentsData.every(row => row.every(cell => typeof cell === 'string')); console.log(isValidData); if (!isValidData) { console.log(chalk.red('Invalid data')); return students } // Prompt the user to see and edit student details using a table interface const { updatedStudents } = await inquirer.prompt([{ type: "table-input", name: "updatedStudents", message: chalk.yellowBright("GIAIC Students"), infoMessage: chalk.grey('(Navigate and Edit)'), hideInfoWhenKeyPressed: true, selectedColor: chalk.yellow, editableColor: chalk.bgYellow.bold, editingColor: chalk.bgGreen.bold, columns: headings, rows: studentsData, }]); return updatedStudents.result; // Return the updated student data } export default seeAndEditStudents;