// Teaching example for IFS Cloud 26R1. Not compiled or executed in IFS.
// Replace DEMO and match the projection contract in client-example-setup.md.
client DemoRequest;
component DEMO;
layer Cust;
projection DemoRequestHandling;

navigator {
   entry TrainingRequests toplevel at index 900 {
      label = "Request training";
      entry TrainingRequestOverview;
   }
   entry TrainingRequestOverview {
      label = "Browse training requests";
      page Overview;
   }
}
page Overview using DemoRequestSet {
   label = "Training requests";
   list RequestList;
}
page RequestDetails using DemoRequestSet {
   label = "Training request details";
   selector RequestSelector;
   group RequestSummary;
}
selector RequestSelector for DemoRequest {
   static RequestId;
   static Title;
}
group RequestSummary for DemoRequest {
   static RequestId;
   static Title;
   static Closed;
   static EstimateHours;
}
list RequestList for DemoRequest {
   orderby = RequestId asc;
   multiselect = [false];
   static RequestId;
   static Title;
   static Closed;
   static EstimateHours;
   crudactions {
      new { enabled = [false]; }
      edit { enabled = [false]; }
      delete { enabled = [false]; }
   }
   command OpenRequest;
}
command OpenRequest for DemoRequest {
   label = "Open training request";
   mode = SingleRecord;
   execute {
      navigate "page/DemoRequest/RequestDetails?$filter=RequestId eq $[RequestId]";
   }
}
