Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="html"></param>
        /// <param name="uiView"></param>
        /// <returns></returns>
        public static IHtmlString Qtip(this HtmlHelper html, UiViewState uiView)
        {
            IHtmlString result = MvcHtmlString.Empty;

            if (uiView == UiViewState.Empty)
            {
                return(result);
            }
            if (uiView != null && (!string.IsNullOrEmpty(uiView.Tooltip) || GetAcSession().IsDeveloper()))
            {
                var           urlHelper = new UrlHelper(html.ViewContext.RequestContext, html.RouteCollection);
                var           href      = urlHelper.Action("Tooltip", "UiView", new { area = "Ac", uiViewId = uiView.Id });
                var           s         = "<a class='tooltip pageTooltip' tabIndex='-1' href='{0}' rel='{0}' title='{1}'><b>?</b></a>";
                FunctionState function;
                html.CurrentHost().FunctionSet.TryGetFunction(uiView.Id, out function);
                string title = "未知页面";
                if (!function.Equals(FunctionState.Empty))
                {
                    title = function.Description;
                }
                result = html.Raw(string.Format(s, href, title));
            }

            return(result);
        }
Пример #2
0
 private void Init()
 {
     if (_initialized)
     {
         return;
     }
     lock (Locker)
     {
         if (_initialized)
         {
             return;
         }
         _acDomain.MessageDispatcher.DispatchMessage(new MemorySetInitingEvent(this));
         _viewDicByFunction.Clear();
         _viewDicById.Clear();
         var views = _acDomain.RetrieveRequiredService <IOriginalHostStateReader>().GetAllUiViews();
         foreach (var view in views)
         {
             var viewState = UiViewState.Create(_acDomain, view);
             _viewDicById.Add(view.Id, viewState);
             FunctionState function;
             if (!_acDomain.FunctionSet.TryGetFunction(view.Id, out function))
             {
                 throw new NotExistException("意外的功能标识" + view.Id);
             }
             if (!_viewDicByFunction.ContainsKey(function))
             {
                 _viewDicByFunction.Add(function, viewState);
             }
         }
         _initialized = true;
         _acDomain.MessageDispatcher.DispatchMessage(new MemorySetInitializedEvent(this));
     }
 }
Пример #3
0
        public static UiViewTr Create(UiViewState view)
        {
            if (view == null)
            {
                return(null);
            }
            FunctionState function;

            view.AcDomain.FunctionSet.TryGetFunction(view.Id, out function);
            AppSystemState appSystem;

            view.AcDomain.AppSystemSet.TryGetAppSystem(function.AppSystem.Id, out appSystem);
            return(new UiViewTr(view.AcDomain)
            {
                Code = function.Code,
                AppSystemCode = appSystem.Code,
                AppSystemId = appSystem.Id,
                AppSystemName = appSystem.Name,
                ResourceCode = function.Resource.Code,
                CreateOn = view.CreateOn,
                DeveloperId = function.DeveloperId,
                Icon = view.Icon,
                Id = view.Id,
                Description = function.Description
            });
        }
Пример #4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="page"></param>
 /// <param name="title"></param>
 public UiViewViewModel(UiViewState page, string title)
 {
     this.UiView = page;
     this.Id = page.Id;
     this.Tooltip = page.Tooltip;
     this.Icon = page.Icon;
     this.Title = title;
 }
Пример #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="page"></param>
 /// <param name="title"></param>
 public UiViewViewModel(UiViewState page, string title)
 {
     this.UiView  = page;
     this.Id      = page.Id;
     this.Tooltip = page.Tooltip;
     this.Icon    = page.Icon;
     this.Title   = title;
 }
Пример #6
0
            private void Handle(IAcSession acSession, IUiViewUpdateIo input, bool isCommand)
            {
                var         acDomain       = _set._acDomain;
                var         viewRepository = acDomain.RetrieveRequiredService <IRepository <UiView> >();
                UiViewState bkState;

                if (!acDomain.UiViewSet.TryGetUiView(input.Id, out bkState))
                {
                    throw new NotExistException();
                }
                UiView entity;
                var    stateChanged = false;

                lock (Locker)
                {
                    UiViewState state;
                    if (!acDomain.UiViewSet.TryGetUiView(input.Id, out state))
                    {
                        throw new NotExistException();
                    }
                    entity = viewRepository.GetByKey(input.Id);
                    if (entity == null)
                    {
                        throw new NotExistException();
                    }

                    entity.Update(input);

                    var newState = UiViewState.Create(acDomain, entity);
                    stateChanged = newState != bkState;
                    if (stateChanged)
                    {
                        Update(newState);
                    }
                    if (isCommand)
                    {
                        try
                        {
                            viewRepository.Update(entity);
                            viewRepository.Context.Commit();
                        }
                        catch
                        {
                            if (stateChanged)
                            {
                                Update(bkState);
                            }
                            viewRepository.Context.Rollback();
                            throw;
                        }
                    }
                }
                if (isCommand && stateChanged)
                {
                    acDomain.MessageDispatcher.DispatchMessage(new UiViewUpdatedEvent(acSession, entity, input, isPrivate: true));
                }
            }
Пример #7
0
        public bool TryGetUiView(Guid viewId, out UiViewState view)
        {
            if (!_initialized)
            {
                Init();
            }
            Debug.Assert(viewId != Guid.Empty);

            return(_viewDicById.TryGetValue(viewId, out view));
        }
Пример #8
0
            private void Update(UiViewState state)
            {
                var           acDomain          = _set._acDomain;
                var           viewDicByFunction = _set._viewDicByFunction;
                var           viewDicById       = _set._viewDicById;
                FunctionState function;

                acDomain.FunctionSet.TryGetFunction(state.Id, out function);
                viewDicById[state.Id]       = state;
                viewDicByFunction[function] = state;
            }
Пример #9
0
        public IReadOnlyList <UiViewButtonState> GetUiViewButtons(UiViewState view)
        {
            if (!_initialized)
            {
                Init();
            }
            if (view == null || view == UiViewState.Empty)
            {
                throw new ArgumentNullException("view");
            }

            return(_viewButtonSet.GetUiViewButtons(view));
        }
Пример #10
0
            public IReadOnlyList <UiViewButtonState> GetUiViewButtons(UiViewState view)
            {
                if (!_initialized)
                {
                    Init();
                }
                if (view == null || view == UiViewState.Empty)
                {
                    throw new ArgumentNullException("view");
                }

                return(!_viewButtonsByUiView.ContainsKey(view) ? new List <UiViewButtonState>() : _viewButtonsByUiView[view]);
            }
Пример #11
0
        public bool TryGetUiView(FunctionState function, out UiViewState view)
        {
            if (!_initialized)
            {
                Init();
            }
            if (function == null || function == FunctionState.Empty)
            {
                throw new ArgumentNullException("function");
            }

            return(_viewDicByFunction.TryGetValue(function, out view));
        }
Пример #12
0
 public static bool Permit(this UiViewState page)
 {
     return(GetAcSession().Permit(page));
 }
Пример #13
0
            private void Handle(IAcSession acSession, IUiViewCreateIo input, bool isCommand)
            {
                var acDomain          = _set._acDomain;
                var viewDicByFunction = _set._viewDicByFunction;
                var viewDicById       = _set._viewDicById;
                var viewRepository    = acDomain.RetrieveRequiredService <IRepository <UiView> >();

                if (!input.Id.HasValue)
                {
                    throw new ValidationException("标识是必须的");
                }
                UiView entity;

                lock (Locker)
                {
                    FunctionState function;
                    if (!acDomain.FunctionSet.TryGetFunction(input.Id.Value, out function))
                    {
                        throw new ValidationException("意外的功能标识,界面视图首先是个功能。请先添加界面视图对应的功能记录。");
                    }
                    UiViewState view;
                    if (acDomain.UiViewSet.TryGetUiView(input.Id.Value, out view))
                    {
                        throw new ValidationException("给定标识的界面视图已经存在");
                    }

                    entity = UiView.Create(input);

                    var state = UiViewState.Create(acDomain, entity);
                    if (!viewDicById.ContainsKey(state.Id))
                    {
                        viewDicById.Add(state.Id, state);
                    }
                    if (!viewDicByFunction.ContainsKey(function))
                    {
                        viewDicByFunction.Add(function, state);
                    }
                    if (isCommand)
                    {
                        try
                        {
                            viewRepository.Add(entity);
                            viewRepository.Context.Commit();
                        }
                        catch
                        {
                            if (viewDicById.ContainsKey(entity.Id))
                            {
                                viewDicById.Remove(entity.Id);
                            }
                            if (viewDicByFunction.ContainsKey(function))
                            {
                                viewDicByFunction.Remove(function);
                            }
                            viewRepository.Context.Rollback();
                            throw;
                        }
                    }
                }
                if (isCommand)
                {
                    acDomain.MessageDispatcher.DispatchMessage(new UiViewAddedEvent(acSession, entity, input, isPrivate: true));
                }
            }
Пример #14
0
 public static UiViewTr Create(UiViewState view)
 {
     if (view == null)
     {
         return null;
     }
     FunctionState function;
     view.AcDomain.FunctionSet.TryGetFunction(view.Id, out function);
     AppSystemState appSystem;
     view.AcDomain.AppSystemSet.TryGetAppSystem(function.AppSystem.Id, out appSystem);
     return new UiViewTr(view.AcDomain)
     {
         Code = function.Code,
         AppSystemCode = appSystem.Code,
         AppSystemId = appSystem.Id,
         AppSystemName = appSystem.Name,
         ResourceCode = function.Resource.Code,
         CreateOn = view.CreateOn,
         DeveloperId = function.DeveloperId,
         Icon = view.Icon,
         Id = view.Id,
         Description = function.Description
     };
 }
Пример #15
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="html"></param>
        /// <param name="uiView"></param>
        /// <returns></returns>
        public static IHtmlString Qtip(this HtmlHelper html, UiViewState uiView)
        {
            IHtmlString result = MvcHtmlString.Empty;
            if (uiView == UiViewState.Empty)
            {
                return result;
            }
            if (uiView != null && (!string.IsNullOrEmpty(uiView.Tooltip) || GetAcSession().IsDeveloper()))
            {
                var urlHelper = new UrlHelper(html.ViewContext.RequestContext, html.RouteCollection);
                var href = urlHelper.Action("Tooltip", "UiView", new { area = "Ac", uiViewId = uiView.Id });
                var s = "<a class='tooltip pageTooltip' tabIndex='-1' href='{0}' rel='{0}' title='{1}'><b>?</b></a>";
                FunctionState function;
                html.CurrentHost().FunctionSet.TryGetFunction(uiView.Id, out function);
                string title = "未知页面";
                if (!function.Equals(FunctionState.Empty))
                {
                    title = function.Description;
                }
                result = html.Raw(string.Format(s, href, title));
            }

            return result;
        }