Skip to content

Commit f61ee66

Browse files
committed
Fix display of sub parsing option when json does not start with array
Add scrollbar and fit display to content
1 parent 9791d7e commit f61ee66

File tree

3 files changed

+51
-47
lines changed

3 files changed

+51
-47
lines changed

src/main.rs

+29-25
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use eframe::egui::Context;
2828
use eframe::Theme::Light;
2929
use eframe::egui::{Align, Align2, Button, Color32, ComboBox, CursorIcon, Id, Key, KeyboardShortcut, Label, LayerId, Layout, Modifiers, Order, RichText, Sense, Separator, TextEdit, TextStyle, Vec2, Widget};
3030
use eframe::epaint::text::TextWrapMode;
31-
use egui::TextBuffer;
31+
use egui::{ScrollArea, TextBuffer};
3232
use json_flat_parser::{FlatJsonValue, JSONParser, ParseOptions, PointerKey, ValueType};
3333
use crate::array_table::{ArrayTable, ScrollToRowMode};
3434
use crate::components::icon;
@@ -670,34 +670,38 @@ impl<'array> eframe::App for MyApp<'array> {
670670
if self.selected_file.is_some() {
671671
if self.parsing_invalid {
672672
let mut rect = ui.max_rect();
673-
rect.min.y = rect.max.y / 2.0 - 20.0;
673+
rect.min.y = 20.0_f32.max(rect.max.y / 2.0 - (20.0 * self.parsing_invalid_pointers.len() as f32));
674674
ui.allocate_ui_at_rect(rect,
675675
|ui| {
676676
ui.vertical_centered(|ui| {
677-
ui.heading("Provided json is not an array but an object");
678-
ui.heading("Select which array you want to parse");
679-
self.parsing_invalid_pointers.iter().for_each(|pointer| {
680-
if self.selected_pointer.is_some() && self.selected_pointer.as_ref().unwrap().eq(pointer) {
681-
let _ = ui.radio(true, pointer.as_str());
682-
} else if ui.radio(false, pointer.as_str()).clicked() {
683-
self.selected_pointer = Some(pointer.clone());
677+
let scroll_area = ScrollArea::vertical();
678+
scroll_area.show(ui, |ui| {
679+
ui.heading("Provided json is not an array but an object");
680+
ui.heading("Select which array you want to parse");
681+
self.parsing_invalid_pointers.iter().for_each(|pointer| {
682+
if self.selected_pointer.is_some() && self.selected_pointer.as_ref().unwrap().eq(pointer) {
683+
let _ = ui.radio(true, pointer.as_str());
684+
} else if ui.radio(false, pointer.as_str()).clicked() {
685+
self.selected_pointer = Some(pointer.clone());
686+
}
687+
});
688+
let sense = if self.selected_pointer.is_none() {
689+
Sense::hover()
690+
} else {
691+
Sense::click()
692+
};
693+
if Button::new("Parse again").sense(sense).ui(ui).clicked() {
694+
self.open_json();
684695
}
685-
});
686-
let sense = if self.selected_pointer.is_none() {
687-
Sense::hover()
688-
} else {
689-
Sense::click()
690-
};
691-
if Button::new("Parse again").sense(sense).ui(ui).clicked() {
692-
self.open_json();
693-
}
694-
if Button::new("Select another file").sense(Sense::click()).ui(ui).clicked() {
695-
self.selected_file = None;
696-
self.selected_pointer = None;
697-
self.should_parse_again = true;
698-
self.parsing_invalid = false;
699-
self.parsing_invalid_pointers.clear();
700-
}
696+
if Button::new("Select another file").sense(Sense::click()).ui(ui).clicked() {
697+
self.selected_file = None;
698+
self.selected_pointer = None;
699+
self.should_parse_again = true;
700+
self.parsing_invalid = false;
701+
self.parsing_invalid_pointers.clear();
702+
}
703+
})
704+
701705
});
702706
});
703707
} else if self.should_parse_again {

web/json-editor.js

+22-22
Original file line numberDiff line numberDiff line change
@@ -228,17 +228,21 @@ function makeMutClosure(arg0, arg1, dtor, f) {
228228
return real;
229229
}
230230
function __wbg_adapter_30(arg0, arg1) {
231-
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hbc75091b6f58ff72(arg0, arg1);
231+
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h74737bf27be6a68d(arg0, arg1);
232232
}
233233

234234
function __wbg_adapter_33(arg0, arg1) {
235-
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hbfada1d1b0a239b4(arg0, arg1);
235+
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2fa579b7fe9d2383(arg0, arg1);
236236
}
237237

238-
function __wbg_adapter_36(arg0, arg1) {
238+
function __wbg_adapter_36(arg0, arg1, arg2) {
239+
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h4b05e8900b164163(arg0, arg1, addHeapObject(arg2));
240+
}
241+
242+
function __wbg_adapter_41(arg0, arg1) {
239243
try {
240244
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
241-
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hddfc176e5cc90d9b(retptr, arg0, arg1);
245+
wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7c7cf4c50e407ba0(retptr, arg0, arg1);
242246
var r0 = getInt32Memory0()[retptr / 4 + 0];
243247
var r1 = getInt32Memory0()[retptr / 4 + 1];
244248
if (r1) {
@@ -249,12 +253,8 @@ function __wbg_adapter_36(arg0, arg1) {
249253
}
250254
}
251255

252-
function __wbg_adapter_39(arg0, arg1, arg2) {
253-
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h31081c91b37f7ba7(arg0, arg1, addHeapObject(arg2));
254-
}
255-
256256
function __wbg_adapter_44(arg0, arg1, arg2) {
257-
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0d9bc00278ace920(arg0, arg1, addHeapObject(arg2));
257+
wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h038ec6e71456579f(arg0, arg1, addHeapObject(arg2));
258258
}
259259

260260
function handleError(f, args) {
@@ -265,7 +265,7 @@ function handleError(f, args) {
265265
}
266266
}
267267
function __wbg_adapter_600(arg0, arg1, arg2, arg3) {
268-
wasm.wasm_bindgen__convert__closures__invoke2_mut__h7439be1c96e8a18f(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
268+
wasm.wasm_bindgen__convert__closures__invoke2_mut__h250dfac5848801b3(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
269269
}
270270

271271
const WebHandleFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -1729,28 +1729,28 @@ function __wbg_get_imports() {
17291729
const ret = wasm.memory;
17301730
return addHeapObject(ret);
17311731
};
1732-
imports.wbg.__wbindgen_closure_wrapper931 = function(arg0, arg1, arg2) {
1733-
const ret = makeMutClosure(arg0, arg1, 201, __wbg_adapter_30);
1732+
imports.wbg.__wbindgen_closure_wrapper951 = function(arg0, arg1, arg2) {
1733+
const ret = makeMutClosure(arg0, arg1, 190, __wbg_adapter_30);
17341734
return addHeapObject(ret);
17351735
};
1736-
imports.wbg.__wbindgen_closure_wrapper1091 = function(arg0, arg1, arg2) {
1737-
const ret = makeMutClosure(arg0, arg1, 263, __wbg_adapter_33);
1736+
imports.wbg.__wbindgen_closure_wrapper1095 = function(arg0, arg1, arg2) {
1737+
const ret = makeMutClosure(arg0, arg1, 262, __wbg_adapter_33);
17381738
return addHeapObject(ret);
17391739
};
1740-
imports.wbg.__wbindgen_closure_wrapper1646 = function(arg0, arg1, arg2) {
1741-
const ret = makeMutClosure(arg0, arg1, 465, __wbg_adapter_36);
1740+
imports.wbg.__wbindgen_closure_wrapper1693 = function(arg0, arg1, arg2) {
1741+
const ret = makeMutClosure(arg0, arg1, 470, __wbg_adapter_36);
17421742
return addHeapObject(ret);
17431743
};
1744-
imports.wbg.__wbindgen_closure_wrapper1648 = function(arg0, arg1, arg2) {
1745-
const ret = makeMutClosure(arg0, arg1, 465, __wbg_adapter_39);
1744+
imports.wbg.__wbindgen_closure_wrapper1695 = function(arg0, arg1, arg2) {
1745+
const ret = makeMutClosure(arg0, arg1, 470, __wbg_adapter_36);
17461746
return addHeapObject(ret);
17471747
};
1748-
imports.wbg.__wbindgen_closure_wrapper1650 = function(arg0, arg1, arg2) {
1749-
const ret = makeMutClosure(arg0, arg1, 465, __wbg_adapter_39);
1748+
imports.wbg.__wbindgen_closure_wrapper1697 = function(arg0, arg1, arg2) {
1749+
const ret = makeMutClosure(arg0, arg1, 470, __wbg_adapter_41);
17501750
return addHeapObject(ret);
17511751
};
1752-
imports.wbg.__wbindgen_closure_wrapper2021 = function(arg0, arg1, arg2) {
1753-
const ret = makeMutClosure(arg0, arg1, 485, __wbg_adapter_44);
1752+
imports.wbg.__wbindgen_closure_wrapper2025 = function(arg0, arg1, arg2) {
1753+
const ret = makeMutClosure(arg0, arg1, 484, __wbg_adapter_44);
17541754
return addHeapObject(ret);
17551755
};
17561756

web/json-editor_bg.wasm

4.43 KB
Binary file not shown.

0 commit comments

Comments
 (0)