50 lines · 1.7 KB · Rust
RawDownload
use std::time::Instant; use ui::{div, prelude::*}; use crate::{CsvPreviewView, settings::FontType}; impl Render for CsvPreviewView {    fn render(&mut self, _window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {        let theme = cx.theme();         self.performance_metrics.rendered_indices.clear();        let render_prep_start = Instant::now();        let table_with_settings = v_flex()            .size_full()            .p_4()            .bg(theme.colors().editor_background)            .track_focus(&self.focus_handle)            .child({                if self.engine.contents.number_of_cols == 0 {                    div()                        .flex()                        .items_center()                        .justify_center()                        .h_32()                        .text_ui(cx)                        .map(|div| match self.settings.font_type {                            FontType::Ui => div.font_ui(cx),                            FontType::Monospace => div.font_buffer(cx),                        })                        .text_color(cx.theme().colors().text_muted)                        .child("No CSV content to display")                        .into_any_element()                } else {                    self.create_table(&self.column_widths.widths, cx)                }            });         let render_prep_duration = render_prep_start.elapsed();        self.performance_metrics.timings.insert(            "render_prep",            (render_prep_duration, std::time::Instant::now()),        );         div()            .relative()            .w_full()            .h_full()            .child(table_with_settings)    }}