/// <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); }
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)); } }
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 }); }
/// <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; }
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)); } }
public bool TryGetUiView(Guid viewId, out UiViewState view) { if (!_initialized) { Init(); } Debug.Assert(viewId != Guid.Empty); return(_viewDicById.TryGetValue(viewId, out view)); }
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; }
public IReadOnlyList <UiViewButtonState> GetUiViewButtons(UiViewState view) { if (!_initialized) { Init(); } if (view == null || view == UiViewState.Empty) { throw new ArgumentNullException("view"); } return(_viewButtonSet.GetUiViewButtons(view)); }
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]); }
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)); }
public static bool Permit(this UiViewState page) { return(GetAcSession().Permit(page)); }
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)); } }
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 }; }
/// <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; }