private static IObservable <Unit> StoreDataSource(this XafApplication application) => application.WhenWeb().WhenCallBack(typeof(LookupCascadeService).FullName) .SelectMany(pattern => application.CreateClientDataSource()) .Do(_ => { WebWindow.CurrentRequestWindow.RegisterStartupScript($"StoreDatasource_{_.viewId}", $"StoreDatasource('{_.viewId}','{_.objects}','{_.storage}')"); }) .TraceLookupCascdeModule() .ToUnit();
public static IEnumerable <(string viewId, string objects, string storage)> CreateClientDataSource(this XafApplication application) { var modelClientDatasource = application.ReactiveModulesModel().LookupCascadeModel().Wait().ClientDatasource; var storage = modelClientDatasource.ClientStorage.ToString().FirstCharacterToLower(); var viewsIds = modelClientDatasource.LookupViews.Select(view => view.LookupListView.Id); return(viewsIds.ToObservable() .SelectMany(viewId => application.CreateClientDataSource((IModelListView)application.FindModelView(viewId))).ToEnumerable() .Select(_ => (_.viewId, _.objects, storage))); }