コード例 #1
0
        public static void RegisterFormScripts(IDynamicScriptManager scriptManager,
                                               ITypeSource typeSource, IPropertyItemProvider propertyProvider, IServiceProvider serviceProvider)
        {
            if (scriptManager == null)
            {
                throw new ArgumentNullException(nameof(scriptManager));
            }

            if (typeSource == null)
            {
                throw new ArgumentNullException(nameof(typeSource));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            var scripts = new List <Func <string> >();

            foreach (var type in typeSource.GetTypesWithAttribute(typeof(FormScriptAttribute)))
            {
                var attr   = type.GetCustomAttribute <FormScriptAttribute>();
                var key    = attr.Key ?? type.FullName;
                var script = new FormScript(key, type, propertyProvider, serviceProvider);
                scriptManager.Register(script);
                scripts.Add(script.GetScript);
            }

            scriptManager.Register("FormBundle", new ConcatenatedScript(scripts));
        }
コード例 #2
0
 protected PropertyItemsScript(string scriptName, Type type,
                               IPropertyItemProvider propertyProvider, IServiceProvider serviceProvider)
 {
     this.type            = type ?? throw new ArgumentNullException(nameof(type));
     this.serviceProvider = serviceProvider ??
                            throw new ArgumentNullException(nameof(serviceProvider));
     this.propertyProvider = propertyProvider ??
                             throw new ArgumentNullException(nameof(PropertyItemsScript.propertyProvider));
     this.scriptName = scriptName;
 }
コード例 #3
0
ファイル: ReportController.cs プロジェクト: olenake/Serene
        public ActionResult Retrieve(ReportRetrieveRequest request,
                                     [FromServices] IPropertyItemProvider propertyItemProvider)
        {
            if (propertyItemProvider is null)
            {
                throw new ArgumentNullException(nameof(propertyItemProvider));
            }

            return(this.ExecuteMethod(() => new ReportRepository(Context, ReportRegistry)
                                      .Retrieve(request, HttpContext.RequestServices, propertyItemProvider)));
        }
コード例 #4
0
        public ReportRetrieveResult Retrieve(ReportRetrieveRequest request,
                                             IServiceProvider serviceProvider, IPropertyItemProvider propertyItemProvider)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (request.ReportKey.IsEmptyOrNull())
            {
                throw new ArgumentNullException(nameof(request.ReportKey));
            }

            if (propertyItemProvider is null)
            {
                throw new ArgumentNullException(nameof(propertyItemProvider));
            }

            var reportInfo = ReportRegistry.GetReport(request.ReportKey);

            if (reportInfo == null)
            {
                throw new ArgumentOutOfRangeException(nameof(request.ReportKey));
            }

            if (reportInfo.Permission != null)
            {
                Permissions.ValidatePermission(reportInfo.Permission, Localizer);
            }

            var response = new ReportRetrieveResult
            {
                Properties = propertyItemProvider.GetPropertyItemsFor(reportInfo.Type).ToList(),
                ReportKey  = reportInfo.Key,
                Title      = reportInfo.Title
            };
            var reportInstance = ActivatorUtilities.CreateInstance(serviceProvider, reportInfo.Type);

            response.InitialSettings  = reportInstance;
            response.IsDataOnlyReport = reportInstance is IDataOnlyReport;
            response.IsExternalReport = reportInstance is IExternalReport;

            return(response);
        }
コード例 #5
0
ファイル: ColumnsScript.cs プロジェクト: lalonardoni/Serenity
 public ColumnsScript(string name, Type columnsType, IPropertyItemProvider propertyProvider,
                      IServiceProvider serviceProvider)
     : base("Columns." + CheckName(name), columnsType,
            propertyProvider, serviceProvider)
 {
 }
コード例 #6
0
ファイル: FormScript.cs プロジェクト: lalonardoni/Serenity
 public FormScript(string name, Type formType, IPropertyItemProvider propertyProvider,
                   IServiceProvider serviceProvider)
     : base("Form." + CheckName(name), formType, propertyProvider, serviceProvider)
 {
 }