Skip to content

Commit

Permalink
JNG-6188 transform dialog modifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
noherczeg committed Feb 25, 2025
1 parent edb5c7a commit 771295b
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ operation JSL!Modifiable getDetail(): JSL!DetailModifier {
return self.modifiers.selectOne(m | m.isTypeOf(JSL!DetailModifier));
}

@cached
operation JSL!Modifiable isOpenInDialog(): Boolean {
return self.modifiers.exists (m | m.isTypeOf(JSL!DialogModifier) and not m.`false`);
}

@cached
operation JSL!Modifiable getOpposite(): JSL!Modifier {
return (self.modifiers.selectOne(m | m.type == "opposite" or m.type == "opposite-add"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ rule AccessViewPageDefinition

t.dataElement = relation.equivalent("RelationType");

if (s.referenceType.isOpenInDialog()) {
t.openInDialog = true;
}

/*
log.info("===================");
log.info(t.name + ":");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ rule AccessTableViewPageDefinition
t.dataElement = s.actorAccess.target.equivalent("RelationType");
t.dataElement.memberType = UI!ui::data::MemberType#ACCESS;

if (s.getUpdateViewModifier().view.isOpenInDialog()) {
t.openInDialog = true;
}

/*
log.info("===================");
log.info(t.name + ":");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ rule ViewLinkPageDefinition

t.dataElement = s.transferRelation.target.equivalent("RelationType");

if (s.referenceType.isOpenInDialog()) {
t.openInDialog = true;
}

/*
log.info("===================");
log.info(t.name + ":");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ rule ViewTableViewPageDefinition

t.dataElement = s.transferRelation.target.equivalent("RelationType");

if (s.getUpdateViewModifier().view.isOpenInDialog()) {
t.openInDialog = true;
}

/*
log.info("===================");
log.info(t.name + ":");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@
import java.util.Set;
import java.util.stream.Collectors;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.*;

@Slf4j
public class JslModel2UiNavigationTest extends AbstractTest {
Expand Down Expand Up @@ -315,4 +314,123 @@ menu NavigationApp(NavigationActor a){
assertTrue(myJumpersCollectionOpenPageAction.getIsOpenPageAction());
assertEquals(pages.stream().filter(p -> p.getName().equals("NavigationTestModel::RelatedView::myJumpers::ViewPage")).findFirst().orElse(null), myJumpersCollectionOpenPageAction.getTargetPageDefinition());
}

@Test
void testDialogs() throws Exception {
jslModel = JslParser.getModelFromStrings("DialogTestModel", List.of("""
model DialogTestModel;
import judo::types;
widget numeric NumericWidget;
widget string StringWidget;
entity User {
identifier String email required;
field Integer numeric;
field Related related;
relation Related[] relatedCollection;
}
transfer UserTransfer(User u) {
relation RelatedTransfer related <= u.related eager;
relation RelatedTransfer[] relatedCollection <= u.relatedCollection update create;
}
entity Related {
field String first;
field Integer second;
field Jumper theJumper;
relation Jumper[] theJumpersCollection;
}
transfer RelatedTransfer(Related r) {
field String first <= r.first;
field Integer second <= r.second;
relation JumperTransfer theJumper <= r.theJumper;
relation JumperTransfer[] theJumpersCollection <= r.theJumpersCollection update create;
event create onCreate;
event update onUpdate;
}
entity Jumper {
field String first;
}
transfer JumperTransfer(Jumper j) {
field String first <= j.first;
event create onCreate;
event update onUpdate;
}
view UserView(UserTransfer u) dialog:true {
group level1 {
link RelatedView related <= u.related icon:"related" label:"Related" width:6;
table RelatedRow[] relatedCollection <= u.relatedCollection icon:"relatedCollection" label:"Related Collection" view:RelatedView;
}
}
row RelatedRow(RelatedTransfer r) {
column String first <= r.first label:"First";
column Integer second <= r.second label:"Second";
}
view RelatedView(RelatedTransfer r) dialog:true {
widget StringWidget first <= r.first label: "First";
widget NumericWidget second <= r.second label: "Second";
link JumperView myJumper <= r.theJumper icon:"jumping" label:"My Jumper" width:6;
table JumperRow[] myJumpers <= r.theJumpersCollection icon:"jumping-all" label:"My Jumpers" width:6 view:JumperView;
}
view JumperView(JumperTransfer j) {
widget StringWidget first <= j.first label: "First";
}
row JumperRow(JumperTransfer j) {
column String first <= j.first label: "First";
}
actor NavigationActor {
access UserTransfer user <= User.any();
}
menu NavigationApp(NavigationActor a){
link UserView user <= a.user label:"User" icon:"tools";
}
"""));

transform();

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

assertEquals(1, apps.size());

Application application = apps.get(0);

List<PageDefinition> pages = application.getPages();

assertEquals(List.of(
"DialogTestModel::NavigationApp::DashboardPage",
"DialogTestModel::NavigationApp::user::AccessViewPage",
"DialogTestModel::RelatedView::myJumper::ViewPage",
"DialogTestModel::RelatedView::myJumpers::ViewPage",
"DialogTestModel::UserView::level1::related::ViewPage",
"DialogTestModel::UserView::level1::relatedCollection::ViewPage"
), pages.stream().map(PageDefinition::getName).sorted().collect(Collectors.toList()));

PageDefinition userAccessView = pages.stream().filter(p -> p.getName().equals("DialogTestModel::NavigationApp::user::AccessViewPage")).findFirst().orElseThrow();
PageDefinition myJumperView = pages.stream().filter(p -> p.getName().equals("DialogTestModel::RelatedView::myJumper::ViewPage")).findFirst().orElseThrow();
PageDefinition myJumpersView = pages.stream().filter(p -> p.getName().equals("DialogTestModel::RelatedView::myJumpers::ViewPage")).findFirst().orElseThrow();
PageDefinition userViewRelatedView = pages.stream().filter(p -> p.getName().equals("DialogTestModel::UserView::level1::related::ViewPage")).findFirst().orElseThrow();
PageDefinition userViewRelatedCollectionView = pages.stream().filter(p -> p.getName().equals("DialogTestModel::UserView::level1::relatedCollection::ViewPage")).findFirst().orElseThrow();

assertTrue(userAccessView.isOpenInDialog());
assertFalse(myJumperView.isOpenInDialog());
assertFalse(myJumpersView.isOpenInDialog());
assertTrue(userViewRelatedView.isOpenInDialog());
assertTrue(userViewRelatedCollectionView.isOpenInDialog());
}
}

0 comments on commit 771295b

Please sign in to comment.