Skip to content

Commit

Permalink
JNG-6207 add missing action transformations
Browse files Browse the repository at this point in the history
  • Loading branch information
noherczeg committed Mar 3, 2025
1 parent 583455e commit 9739dd0
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,13 @@ rule AccessViewPageDefinition
}
}

for (actionDeclaration in s.referenceType.getAllActionDeclarations()) {
var viewAction = actionDeclaration.equivalentDiscriminated("ViewAction", s.getId());
viewAction.ownerDataElement = t.dataElement; // TODO JNG-6224 add plus if-else's here for tabular reference field actions
viewAction.targetDataElement = actionDeclaration.transferAction.target.equivalent("OperationType");
t.actions.add(viewAction);
}

t.actions.add(s.equivalent("AccessViewBackAction"));
if (relation.isRefreshAllowed()) {
t.actions.add(s.equivalent("AccessViewRefreshAction"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ rule AccessTableViewPageDefinition

for (actionDeclaration in s.getUpdateViewModifier().view.getAllActionDeclarations()) {
var viewAction = actionDeclaration.equivalentDiscriminated("ViewAction", s.getId());
viewAction.ownerDataElement = t.dataElement; // TODO: add plus if-else's here for tabular reference field actions
viewAction.ownerDataElement = t.dataElement; // TODO JNG-6224 add plus if-else's here for tabular reference field actions
viewAction.targetDataElement = actionDeclaration.transferAction.target.equivalent("OperationType");
t.actions.add(viewAction);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ rule ViewLinkPageDefinition
}
}

for (actionDeclaration in s.referenceType.getAllActionDeclarations()) {
var viewAction = actionDeclaration.equivalentDiscriminated("ViewAction", s.getId());
viewAction.ownerDataElement = t.dataElement; // TODO JNG-6224 add plus if-else's here for tabular reference field actions
viewAction.targetDataElement = actionDeclaration.transferAction.target.equivalent("OperationType");
t.actions.add(viewAction);
}

t.actions.add(s.equivalent("ViewLinkPageDefinitionBackAction"));
if (s.transferRelation.target.isRefreshAllowed()) {
t.actions.add(s.equivalent("ViewLinkPageDefinitionRefreshAction"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,13 @@ rule ViewTableViewPageDefinition
}
}

for (actionDeclaration in s.getUpdateViewModifier().view.getAllActionDeclarations()) {
var viewAction = actionDeclaration.equivalentDiscriminated("ViewAction", s.getId());
viewAction.ownerDataElement = t.dataElement; // TODO JNG-6224 add plus if-else's here for tabular reference field actions
viewAction.targetDataElement = actionDeclaration.transferAction.target.equivalent("OperationType");
t.actions.add(viewAction);
}

t.actions.add(s.equivalent("ViewTableViewPageDefinitionBackAction"));
if (s.transferRelation.target.isRefreshAllowed()) {
t.actions.add(s.equivalent("ViewTableViewPageDefinitionRefreshAction"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,12 @@ row Table2(Transfer2 t2) {
actor A {
access Transfer1[] t1s <= Entity1.all() create update;
access Transfer1 t1 <= Entity1.any() create update;
}
menu M(A a) {
table Table1[] v1s <= a.t1s view:View1 form:Form1;
link View1 v1 <= a.t1 label:"V1";
}
""".formatted(name);
}
Expand All @@ -155,6 +157,7 @@ void testTableOperations() throws Exception {

assertEquals(List.of(
"A::TableOperations::M::DashboardPage",
"A::TableOperations::M::v1::AccessViewPage",
"A::TableOperations::M::v1s::AccessFormPage",
"A::TableOperations::M::v1s::AccessTablePage",
"A::TableOperations::M::v1s::AccessTableViewPage",
Expand All @@ -168,7 +171,7 @@ void testTableOperations() throws Exception {
"A::TableOperations::View1::myActions::myAction5::OperationOutput"
), application.getPages().stream().map(NamedElement::getFQName).sorted().toList());

PageDefinition view1Page = application.getPages().stream().filter(p -> p.getFQName().equals("A::TableOperations::M::v1s::AccessTableViewPage")).findFirst().orElseThrow();
PageDefinition accessTableView1Page = application.getPages().stream().filter(p -> p.getFQName().equals("A::TableOperations::M::v1s::AccessTableViewPage")).findFirst().orElseThrow();

assertEquals(List.of(
"A::TableOperations::M::v1s::AccessTableViewPage::TableOperations::View1::myAction1::Action",
Expand All @@ -182,7 +185,7 @@ void testTableOperations() throws Exception {
"A::TableOperations::M::v1s::AccessTableViewPage::v1s::Cancel",
"A::TableOperations::M::v1s::AccessTableViewPage::v1s::Refresh",
"A::TableOperations::M::v1s::AccessTableViewPage::v1s::Update"
), view1Page.getActions().stream().map(NamedElement::getFQName).sorted().toList());
), accessTableView1Page.getActions().stream().map(NamedElement::getFQName).sorted().toList());

assertEquals(List.of(
"A::TableOperations::Form1::Create::PageContainer",
Expand All @@ -194,7 +197,7 @@ void testTableOperations() throws Exception {
"A::TableOperations::View2::View::PageContainer"
), application.getPageContainers().stream().map(NamedElement::getFQName).sorted().toList());

PageContainer view1Container = view1Page.getContainer();
PageContainer view1Container = accessTableView1Page.getContainer();

assertEquals(List.of(
"A::TableOperations::View1::View::PageContainer::TableOperations::View1::PageActions::TableOperations::View1::Back::TableOperations::View1::Back",
Expand Down Expand Up @@ -230,6 +233,70 @@ void testTableOperations() throws Exception {
assertEquals(myAction5ActionDefinition, myAction5.getActionDefinition());
assertEquals("my action 5", myAction5.getLabel());
assertEquals("horse", myAction5.getIcon().getIconName());
}

@Test
void testLinkOperations() throws Exception {
jslModel = JslParser.getModelFromStrings("LinkOperations", List.of(createModelString("LinkOperations")));

transform();

List<Application> apps = uiModelWrapper.getStreamOfUiApplication().toList();

assertEquals(1, apps.size());

Application application = apps.get(0);

PageDefinition accessLinkView1Page = application.getPages().stream().filter(p -> p.getFQName().equals("A::LinkOperations::M::v1::AccessViewPage")).findFirst().orElseThrow();

assertEquals(List.of(
"A::LinkOperations::M::v1::AccessViewPage::LinkOperations::View1::myAction1::Action",
"A::LinkOperations::M::v1::AccessViewPage::LinkOperations::View1::myAction2::Action",
"A::LinkOperations::M::v1::AccessViewPage::LinkOperations::View1::myAction3::Action",
"A::LinkOperations::M::v1::AccessViewPage::LinkOperations::View1::myActions::myAction4::Action",
"A::LinkOperations::M::v1::AccessViewPage::LinkOperations::View1::myActions::myAction5::Action",
"A::LinkOperations::M::v1::AccessViewPage::table2::Filter",
"A::LinkOperations::M::v1::AccessViewPage::table2::Refresh",
"A::LinkOperations::M::v1::AccessViewPage::v1::Back",
"A::LinkOperations::M::v1::AccessViewPage::v1::Refresh",
"A::LinkOperations::M::v1::AccessViewPage::v1::Update"
), accessLinkView1Page.getActions().stream().map(NamedElement::getFQName).sorted().toList());

PageContainer view1Container = accessLinkView1Page.getContainer();

assertEquals(List.of(
"A::LinkOperations::View1::View::PageContainer::LinkOperations::View1::PageActions::LinkOperations::View1::Back::LinkOperations::View1::Back",
"A::LinkOperations::View1::View::PageContainer::LinkOperations::View1::PageActions::LinkOperations::View1::Cancel::LinkOperations::View1::Cancel",
"A::LinkOperations::View1::View::PageContainer::LinkOperations::View1::PageActions::LinkOperations::View1::Delete::LinkOperations::View1::Delete",
"A::LinkOperations::View1::View::PageContainer::LinkOperations::View1::PageActions::LinkOperations::View1::Refresh::LinkOperations::View1::Refresh",
"A::LinkOperations::View1::View::PageContainer::LinkOperations::View1::PageActions::LinkOperations::View1::Update::LinkOperations::View1::Update",
"A::LinkOperations::View1::View::PageContainer::View1::myAction1::LinkOperations::View1::myAction1::Call",
"A::LinkOperations::View1::View::PageContainer::View1::myAction2::LinkOperations::View1::myAction2::Open::Selector",
"A::LinkOperations::View1::View::PageContainer::View1::myAction3::LinkOperations::View1::myAction3::Open::Operation::Form",
"A::LinkOperations::View1::View::PageContainer::View1::myActions::myAction4::LinkOperations::View1::myActions::myAction4::Open::Selector",
"A::LinkOperations::View1::View::PageContainer::View1::myActions::myAction5::LinkOperations::View1::myActions::myAction5::Open::Operation::Form",
"A::LinkOperations::View1::View::PageContainer::View1::table2::table2::InlineViewTableButtonGroup::table2::Filter::table2::Filter",
"A::LinkOperations::View1::View::PageContainer::View1::table2::table2::InlineViewTableButtonGroup::table2::Refresh::table2::Refresh"
), view1Container.getAllActionDefinitions().stream().map(a -> ((ActionDefinition) a).getFQName()).toList());

ButtonGroup myActions = (ButtonGroup) ((Flex) view1Container.getChildren().get(0)).getChildren().stream().filter(c -> c.getName().equals("myActions")).findFirst().orElseThrow();

assertEquals("myActions", myActions.getName());
assertEquals("hello", myActions.getLabel());
assertEquals("bello", myActions.getIcon().getIconName());

Button myAction4 = myActions.getButtons().stream().filter(c -> c.getName().equals("myAction4")).findFirst().orElseThrow();
ActionDefinition myAction4ActionDefinition = (ActionDefinition) view1Container.getAllActionDefinitions().stream().filter(a -> ((ActionDefinition) a).getFQName().equals("A::LinkOperations::View1::View::PageContainer::View1::myActions::myAction4::LinkOperations::View1::myActions::myAction4::Open::Selector")).findFirst().orElseThrow();

assertEquals(myAction4ActionDefinition, myAction4.getActionDefinition());
assertEquals("my action 4", myAction4.getLabel());
assertNull(myAction4.getIcon());

Button myAction5 = myActions.getButtons().stream().filter(c -> c.getName().equals("myAction5")).findFirst().orElseThrow();
ActionDefinition myAction5ActionDefinition = (ActionDefinition) view1Container.getAllActionDefinitions().stream().filter(a -> ((ActionDefinition) a).getFQName().equals("A::LinkOperations::View1::View::PageContainer::View1::myActions::myAction5::LinkOperations::View1::myActions::myAction5::Open::Operation::Form")).findFirst().orElseThrow();

assertEquals(myAction5ActionDefinition, myAction5.getActionDefinition());
assertEquals("my action 5", myAction5.getLabel());
assertEquals("horse", myAction5.getIcon().getIconName());
}
}

0 comments on commit 9739dd0

Please sign in to comment.