Skip to content

Commit

Permalink
feat: add mandatory @context values
Browse files Browse the repository at this point in the history
* feat: add mandatory  values

* refactor: remove old context fields
  • Loading branch information
Oran-Dan authored Sep 11, 2024
1 parent 5943fd0 commit 2ed141c
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 32 deletions.
2 changes: 1 addition & 1 deletion json/ebsi-elm/vcdm2.0-europass-edc-schema/schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "file:///home/me/Documents/IPT/impierce-mapper/json/ebsi-elm/vcdm2.0-europass-edc-schema",
"$id": "file:///home/me/Documents/IPT/credential-converter/json/ebsi-elm/vcdm2.0-europass-edc-schema",
"title": "Europass EDC credential",
"description": "Schema for EDC credential based on ELM 3.2",
"type": "object",
Expand Down
2 changes: 1 addition & 1 deletion src/backend/desm_mapping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ pub fn apply_desm_mapping(state: &mut AppState) {

trace_dbg!(&transformations);

state.performed_mappings.extend( transformations.clone());
state.performed_mappings.extend(transformations.clone());
state.repository.apply_transformations(transformations, state.mapping);
}

Expand Down
18 changes: 18 additions & 0 deletions src/backend/preload_p2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,24 @@ pub fn preload_p2(state: &mut AppState) {
// todo: add applied transformation to completed fields
}
}

// Enter fixed values into '@context' field, as demanded by the respective json-schema
if state.mapping.output_format() == "ELM" {
let output_elm = state.repository.get_mut("ELM").unwrap().as_object_mut().unwrap();
output_elm.insert(
"@context".to_string(),
Value::Array(vec![json!("https://www.w3.org/ns/credentials/v2")]),
);
} else if state.mapping.output_format() == "OBv3" {
let output_obv3 = state.repository.get_mut("OBv3").unwrap().as_object_mut().unwrap();
output_obv3.insert(
"@context".to_string(),
Value::Array(vec![
json!("https://www.w3.org/ns/credentials/v2"),
json!("https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"),
]),
);
}
}

pub fn get_missing_data_fields(state: &mut AppState) {
Expand Down
5 changes: 3 additions & 2 deletions src/events/p2_p3_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,9 +266,10 @@ pub fn handle_enter(state: &mut AppState) -> bool {
} else {
update_pointer(state, true);
update_display_section(state, false);
if state.p2_p3_tabs == P2P3Tabs::InputFields { // todo: tmp fix until input fields also implemented similar to output fields.
if state.p2_p3_tabs == P2P3Tabs::InputFields {
// todo: tmp fix until input fields also implemented similar to output fields.
state.p2_p3_tabs.next();
}
}
}
}
}
Expand Down
74 changes: 46 additions & 28 deletions src/render/popups.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,25 @@ pub fn render_popup_mapping(mut area: Rect, buf: &mut Buffer, state: &mut AppSta
output_value_title = format!(" {} ", translate("output_field_info"));
let selected_key = state.output_display_subset[state.selected_output_field].0.clone();
if state.page == Pages::RequiredDataP2 {
output_value_txt = to_string_pretty(state.resolved_subsets.get(&state.required_field_pointer).unwrap().get(&selected_key).unwrap()).unwrap();
}
else if state.page == Pages::OptionalDataP3 {
output_value_txt = to_string_pretty(state.resolved_subsets.get(&state.optional_field_pointer).unwrap().get(&selected_key).unwrap()).unwrap();
output_value_txt = to_string_pretty(
state
.resolved_subsets
.get(&state.required_field_pointer)
.unwrap()
.get(&selected_key)
.unwrap(),
)
.unwrap();
} else if state.page == Pages::OptionalDataP3 {
output_value_txt = to_string_pretty(
state
.resolved_subsets
.get(&state.optional_field_pointer)
.unwrap()
.get(&selected_key)
.unwrap(),
)
.unwrap();
}
}

Expand Down Expand Up @@ -78,8 +93,7 @@ pub fn render_popup_mapping(mut area: Rect, buf: &mut Buffer, state: &mut AppSta
state.popup_amount_lines_value =
state.input_fields[state.selected_input_field].1.len() / (right.width as usize - 2);
state.popup_amount_lines_output_path =
(state.output_pointer.clone() + "/" + &state.output_display_subset[state.selected_output_field].0)
.len()
(state.output_pointer.clone() + "/" + &state.output_display_subset[state.selected_output_field].0).len()
/ (right.width as usize - 2);
state.popup_amount_lines_result =
length_with_newline(&output_value_txt, right.width as usize - 2) / (right.width as usize - 2);
Expand Down Expand Up @@ -116,16 +130,16 @@ pub fn render_popup_mapping(mut area: Rect, buf: &mut Buffer, state: &mut AppSta
}

Paragraph::new(output_pointer)
.wrap(Wrap { trim: false })
.remove_modifier(Modifier::BOLD)
.scroll((state.popup_offset_output_path, 0))
.render(
right_top.inner(&Margin {
horizontal: 1,
vertical: 1,
}),
buf,
);
.wrap(Wrap { trim: false })
.remove_modifier(Modifier::BOLD)
.scroll((state.popup_offset_output_path, 0))
.render(
right_top.inner(&Margin {
horizontal: 1,
vertical: 1,
}),
buf,
);

Paragraph::new(output_value_txt)
.wrap(Wrap { trim: false })
Expand All @@ -142,8 +156,11 @@ pub fn render_popup_mapping(mut area: Rect, buf: &mut Buffer, state: &mut AppSta
let confirm_txt = format!(" {} ", translate("confirm"));
let [_top, confirm_area] =
Layout::vertical([Constraint::Percentage(100), Constraint::Length(1)]).areas(right_bottom);
let [_left, confirm_area] =
Layout::horizontal([Constraint::Percentage(100), Constraint::Length(confirm_txt.len() as u16)]).areas(confirm_area);
let [_left, confirm_area] = Layout::horizontal([
Constraint::Percentage(100),
Constraint::Length(confirm_txt.len() as u16),
])
.areas(confirm_area);

state.confirm_button = confirm_area;
Paragraph::new(confirm_txt)
Expand Down Expand Up @@ -292,17 +309,18 @@ pub fn render_popup_lose_progress_warning(mut area: Rect, buf: &mut Buffer) {
);
}


/////// HELPERS ///////

fn length_with_newline(s: &str, width: usize) -> usize {
let mut i = 0;
s.chars().map(|c| {
i += 1;
if c == '\n' {
width - (i % width) + 2
} else {
1
}
}).sum()
}
s.chars()
.map(|c| {
i += 1;
if c == '\n' {
width - (i % width) + 2
} else {
1
}
})
.sum()
}

0 comments on commit 2ed141c

Please sign in to comment.