atac 0.17.0

Arguably a Terminal API Client. Feature-full, free, open-source, offline and account-less.
use std::ops::Deref;
use ratatui::Frame;
use ratatui::layout::{Alignment, Constraint, Layout, Rect};
use ratatui::layout::Direction::Vertical;
use ratatui::prelude::{Color, Style};
use ratatui::style::Color::Yellow;
use ratatui::widgets::{Block, Borders};

use crate::app::app::App;
use crate::tui::app_states::AppState;

impl App<'_> {
    pub(super) fn render_request_script(&mut self, frame: &mut Frame, area: Rect) {
        let scripts_layout = Layout::new(
            Vertical,
            vec![
                Constraint::Percentage(50),
                Constraint::Percentage(50)
            ]
        )
            .split(area);

        self.script_console.pre_request_text_area.set_line_number_style(Style::new().fg(Color::DarkGray));
        self.script_console.post_request_text_area.set_line_number_style(Style::new().fg(Color::DarkGray));

        let pre_request_script_text_area = &mut self.script_console.pre_request_text_area;
        let post_request_script_text_area = &mut self.script_console.post_request_text_area;

        let title = match self.script_console.script_selection {
            0 => " Pre-request ",
            1 => " Post-request ",
            _ => ""
        };
        
        if self.state == AppState::SelectedRequest {
            match self.script_console.script_selection {
                0 => {
                    pre_request_script_text_area.set_style(Style::new().fg(Yellow));
                    post_request_script_text_area.set_style(Style::new());
                },
                1 => {
                    pre_request_script_text_area.set_style(Style::new());
                    post_request_script_text_area.set_style(Style::new().fg(Yellow));
                }
                _ => {}
            };
        }
        else {
            pre_request_script_text_area.set_style(Style::new());
            post_request_script_text_area.set_style(Style::new());
        }

        pre_request_script_text_area.set_block(
            Block::default()
                .borders(Borders::BOTTOM)
                .title_bottom(title)
                .title_alignment(Alignment::Center)
        );

        frame.render_widget(pre_request_script_text_area.deref(), scripts_layout[0]);
        frame.render_widget(post_request_script_text_area.deref(), scripts_layout[1]);
    }
}