示例#1
0
        public async virtual Task <bool> PopPageAsync <TCurrentPageModel>(IBasePage <TCurrentPageModel> currentPage, bool animated = true) where TCurrentPageModel : class, IBasePageModel
        {
            var navigation    = ((Page)currentPage)?.Navigation;
            var navEventsPage = currentPage as INavigationCanPop;

            if (navigation == null || (navEventsPage != null && !navEventsPage.NavigationCanPop()))
            {
                return(false);
            }

            var navEventsPageModel = currentPage.GetPageModel() as INavigationCanPop;

            if (navEventsPageModel != null && !navEventsPageModel.NavigationCanPop())
            {
                return(false);
            }

            await navigation.PopAsync(animated);

            var navEventsPage2 = currentPage as INavigationPopped;

            if (navEventsPage2 != null)
            {
                navEventsPage2.NavigationPopped();
            }

            return(true);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ListPage"/> class.
        /// </summary>
        /// <param name="basePage">The base page.</param>
        /// <param name="pageObjectFactory">The page object factory.</param>
        /// <param name="driver">The driver.</param>
        /// <param name="pageSettings">The page settings.</param>
        public ListPage(IBasePage basePage,
                        IPageObjectFactory pageObjectFactory,
                        IWebDriver driver,
                        PageSettings pageSettings)
            : base(driver,
                   new Uri(pageSettings.BaseUrl, "Admin/Customer/List"))
        {
            this.basePage          = basePage;
            this.pageObjectFactory = pageObjectFactory;

            CustomerRoles = new KMultiSelectComponent <IListPage>(
                By.CssSelector("#SelectedCustomerRoleIds"),
                WrappedDriver,
                new KMultiSelectConfiguration(),
                this);

            CustomersGrid = new KGridComponent <IListPage>(
                new BaseKendoConfiguration(),
                By.CssSelector("#customers-grid"),
                pageObjectFactory,
                WrappedDriver,
                this);

            ExportDropDownComponent = new DropDownComponent(
                By.CssSelector(".btn-group"),
                WrappedDriver);
        }
示例#3
0
        internal Type GetPageModelType(IBasePage <IBasePageModel> page)
        {
            var found         = page.GetType().GetTypeInfo().ImplementedInterfaces.FirstOrDefault(t => t.IsConstructedGenericType && t.GetGenericTypeDefinition() == typeof(IBasePage <>));
            var viewModelType = found.GenericTypeArguments.First();

            return(viewModelType);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="EditPage"/> class.
        /// </summary>
        /// <param name="basePage">The base page.</param>
        /// <param name="pageObjectFactory">The page object factory.</param>
        /// <param name="driver">The driver.</param>
        /// <param name="pageSettings">The page settings.</param>
        public EditPage(IBasePage basePage,
                        IPageObjectFactory pageObjectFactory,
                        IWebDriver driver,
                        PageSettings pageSettings)
            : base(driver,
                   new Uri(pageSettings.BaseUrl, "Admin"),
                   new UriTemplate("Order/Edit/{id}"))
        {
            this.basePage          = basePage;
            this.pageObjectFactory = pageObjectFactory;

            InfoTab = new OrderDetailsInfoComponent(
                By.CssSelector("#tab-info"),
                WrappedDriver,
                this);

            Tabs = new NavsTabComponent <IEditPage>(
                By.CssSelector(".nav-tabs.nav"),
                new ILoadableComponent[]
            {
                InfoTab
            },
                WrappedDriver,
                new NavsTabComponentConfiguration(),
                this);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CatalogTemplatePage"/> class.
        /// </summary>
        /// <param name="basePage">The base page.</param>
        /// <param name="driver">The driver.</param>
        /// <param name="pageObjectFactory">The page object factory.</param>
        /// <param name="pageSettings">The page settings.</param>
        /// <param name="template">The template.</param>
        public CatalogTemplatePage(
            IBasePage basePage,
            IPageObjectFactory pageObjectFactory,
            IWebDriver driver,
            PageSettings pageSettings,
            UriTemplate template)
            : base(driver,
                   pageSettings.BaseUrl,
                   template)
        {
            this.basePage          = basePage;
            this.pageObjectFactory = pageObjectFactory;

            CategoriesComponent = new CatalogBlockComponent(
                categoryNavigationSelector,
                WrappedDriver);

            ManufacturersComponent = new CatalogBlockComponent(
                manufacturerSelector,
                WrappedDriver);

            PopularTagsComponent = new CatalogBlockComponent(
                popularTagsSelector,
                WrappedDriver);
        }
示例#6
0
        public static void InvokeBeforePlugins(object sender, PluginEventArgs e)
        {
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }
            Control ctrl = sender as Control;

            if (ctrl == null)
            {
                throw new ApplicationExceptionFormat("传的sender {0}不是服务器控件", new object[] { sender.ToString() });
            }
            Page      absolutePage = ctrl.GetAbsolutePage();
            IBasePage page2        = absolutePage as IBasePage;

            if (page2 == null)
            {
                throw new ApplicationExceptionFormat("页面不是继承自BasePage", new object[0]);
            }
            IPagePlugin pluginInstance = page2.PluginInstance;

            if (pluginInstance != null)
            {
                CommandHandler commandPluginHandler = GetCommandPluginHandler(ctrl);
                if (commandPluginHandler != null)
                {
                    commandPluginHandler.ExecuteBefore(pluginInstance, ctrl, e);
                }
            }
            EventCallHelper.InvokeBefore(absolutePage, ctrl, new object[] { e.entityModel, e.RedirectURL, e.CurrentUserID });
        }
 public ResponseRewindMiddleware(RequestDelegate next, IBasePage basePage, UserManager <ApplicationUser> UserManager, RedisConnectionFactory Factory)
 {
     this.next    = next;
     _basePage    = basePage;
     _userManager = UserManager;
     _fact        = Factory;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ListPage"/> class.
        /// </summary>
        /// <param name="basePage">The base page.</param>
        /// <param name="pageObjectFactory">The page object factory.</param>
        /// <param name="driver">The driver.</param>
        /// <param name="pageSettings">The page settings.</param>
        public ListPage(IBasePage basePage,
                        IPageObjectFactory pageObjectFactory,
                        IWebDriver driver,
                        PageSettings pageSettings)
            : base(driver,
                   pageSettings.AdminBaseUrl,
                   new UriTemplate("Product/List"))
        {
            this.basePage = basePage
                            ?? throw new ArgumentNullException(nameof(basePage));

            this.pageObjectFactory = pageObjectFactory
                                     ?? throw new ArgumentNullException(nameof(pageObjectFactory));

            ProductsGrid = new KGridComponent <IListPage>(
                new BaseKendoConfiguration(),
                By.CssSelector("#products-grid"),
                pageObjectFactory,
                WrappedDriver,
                this);

            SearchPanel = new SearchPanelComponent(
                By.CssSelector(".panel-search"),
                pageObjectFactory,
                WrappedDriver);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="_CreateOrUpdatePage"/> class.
        /// </summary>
        /// <param name="basePage">The base page.</param>
        /// <param name="pageObjectFactory">The page object factory.</param>
        /// <param name="driver">The driver.</param>
        /// <exception cref="ArgumentNullException">
        /// basePage
        /// or
        /// pageObjectFactory
        /// </exception>
        public _CreateOrUpdatePage(IBasePage basePage,
                                   IPageObjectFactory pageObjectFactory,
                                   IWebDriver driver)
            : base(driver)
        {
            this.basePage = basePage
                            ?? throw new ArgumentNullException(nameof(basePage));
            this.pageObjectFactory = pageObjectFactory
                                     ?? throw new ArgumentNullException(nameof(pageObjectFactory));

            Tabs = new NavsTabComponent <_CreateOrUpdatePage>(
                By.CssSelector("#product-form"),
                new ILoadableComponent[]
            {
            },
                WrappedDriver,
                new NavsTabComponentConfiguration
            {
                ActiveTabContentElementSelector = By.CssSelector(".tab-content .tab-pane.active"),
                ActiveTabHeaderElementSelector  = By.CssSelector(".nav-tabs li.active"),
                ActiveTabHeaderNameSelector     = By.CssSelector(".nav-tabs li.active"),
                TabContentElementsSelector      = By.CssSelector(".tab-content .tab-pane"),
                TabHeaderElementsSelector       = By.CssSelector(".nav-tabs li"),
                TabHeaderNamesSelector          = By.CssSelector(".nav-tabs li")
            },
                this);
        }
示例#10
0
        public virtual Task <bool> RemovePageAsync <TCurrentPageModel, TPageModel>(IBasePage <TCurrentPageModel> currentPage, IBasePage <TPageModel> pageToRemove) where TCurrentPageModel : class, IBasePageModel where TPageModel : class, IBasePageModel
        {
            TargetPageModel = currentPage.GetPageModel();
            LastAction      = XammvvmAction.PageRemoved;

            var navEventsPage = pageToRemove as INavigationCanRemove;

            if (navEventsPage != null && !navEventsPage.NavigationCanRemove())
            {
                LastActionSuccess = false;
                return(Task.FromResult(false));
            }

            var navEventsPageModel = pageToRemove.GetPageModel() as INavigationCanRemove;

            if (navEventsPageModel != null && !navEventsPageModel.NavigationCanRemove())
            {
                LastActionSuccess = false;
                return(Task.FromResult(false));
            }

            var navEventsPage2 = pageToRemove as INavigationRemoved;

            if (navEventsPage2 != null)
            {
                navEventsPage2.NavigationRemoved();
            }

            LastActionSuccess = true;
            return(Task.FromResult(true));
        }
 public WalletOperationsController(ILogger <WalletOperationsController> logger, UserManager <ApplicationUser> userManager, IBasePage basePage, IWalletService walletService)
 {
     _logger        = logger;
     _userManager   = userManager;
     _walletService = walletService;
     _basePage      = basePage;
 }
示例#12
0
        public virtual Task <bool> RemovePageAsync <TCurrentPageModel, TPageModel>(IBasePage <TCurrentPageModel> currentPage, IBasePage <TPageModel> pageToRemove) where TCurrentPageModel : class, IBasePageModel where TPageModel : class, IBasePageModel
        {
            var navigation    = ((Page)currentPage)?.Navigation;
            var navEventsPage = pageToRemove as INavigationCanRemove;

            if (navigation == null || (navEventsPage != null && !navEventsPage.NavigationCanRemove()))
            {
                return(Task.FromResult(false));
            }

            var navEventsPageModel = pageToRemove.GetPageModel() as INavigationCanRemove;

            if (navEventsPageModel != null && !navEventsPageModel.NavigationCanRemove())
            {
                return(Task.FromResult(false));
            }

            navigation.RemovePage((Page)pageToRemove);

            var navEventsPage2 = pageToRemove as INavigationRemoved;

            if (navEventsPage2 != null)
            {
                navEventsPage2.NavigationRemoved();
            }

            return(Task.FromResult(true));
        }
        public void SetDetail <TPageModel>(IBasePage <TPageModel> page) where TPageModel : class, IBasePageModel
        {
            var masterDetailPage = this.GetCurrentPage() as MasterDetailPage;

            masterDetailPage.Detail      = new NavigationPage(page as Page);
            masterDetailPage.IsPresented = false;
        }
示例#14
0
 public virtual void SetPageModel <TPageModel>(IBasePage <TPageModel> page, TPageModel newPageModel) where TPageModel : class, IBasePageModel
 {
     ((MockPage <TPageModel>)page).BindingContext = newPageModel;
     AddToWeakCacheIfNotExists(page, newPageModel);
     LastAction        = XammvvmAction.PageModelChanged;
     TargetPageModel   = newPageModel;
     LastActionSuccess = true;
 }
示例#15
0
        public static IHtmlContent TableSortHeader <TModel, TResult>(
            this IHtmlHelper <TModel> h,
            Expression <Func <TModel, TResult> > data, IBasePage p)
        {
            var s = h.SortHeaderData(data, p);

            return(new HtmlContentBuilder(s));
        }
示例#16
0
        /// <summary>
        /// Executes the action on the page model.
        /// </summary>
        /// <returns>The on page model.</returns>
        /// <param name="page">Page.</param>
        /// <param name="action">Action.</param>
        /// <typeparam name="TPageModel">The 1st type parameter.</typeparam>
        public static IBasePage <TPageModel> ExecuteOnPageModel <TPageModel>(this IBasePage <TPageModel> page, Action <TPageModel> action) where TPageModel : class, IBasePageModel
        {
            var model = page.GetPageModel();

            action?.Invoke(model);

            return(page);
        }
        public ParentPage(IBasePage basePage)
        {
            BasePage = basePage;
            ToolDependencyResolver = basePage.GetToolDependencyResolver();
            Resolver = basePage.GetResolver();

            TestObjectFactory = ToolDependencyResolver.Resolve <ITestObjectFactory>(basePage.GetBrowser());
        }
示例#18
0
 public WidgetPage(IBasePage basePage,
                   IWebDriver driver,
                   PageOptions pageOptions)
     : base(driver,
            new Uri(pageOptions.Url),
            new UriTemplate("{framework}/{version}/{widget}"))
 {
     this.basePage = basePage;
 }
示例#19
0
 public HomePage(IBasePage basePage,
                 IPageObjectFactory pageObjectFactory,
                 IWebDriver driver,
                 PageOptions pageOptions)
     : base(driver, new Uri(pageOptions.Url))
 {
     this.basePage          = basePage;
     this.pageObjectFactory = pageObjectFactory;
 }
 public TestInitialization(IBasePage basePage, string fixtureName, IFunctionExecuter executer, IReporter reporter)
 {
     this.BasePage            = basePage;
     this.Executer            = executer;
     this.Reporter            = reporter;
     BasePage.TestName        = TestContext.CurrentContext.Test.Name;
     BasePage.FixtureName     = fixtureName;
     BasePage.RunningBrowser  = ConfigurationManager.AppSettings.Get("RunAllTestsOn");
     BasePage.ScreenShotsPath = CreateScreenShotPath();
 }
示例#21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HomePage"/> class.
 /// </summary>
 /// <param name="basePage">The base page.</param>
 /// <param name="pageObjectFactory">The page object factory.</param>
 /// <param name="driver">The driver.</param>
 /// <param name="pageSettings">The page settings.</param>
 public HomePage(IBasePage basePage,
                 IPageObjectFactory pageObjectFactory,
                 IWebDriver driver,
                 PageSettings pageSettings)
     : base(driver,
            pageSettings.AdminBaseUrl)
 {
     this.basePage          = basePage;
     this.pageObjectFactory = pageObjectFactory;
 }
示例#22
0
        public static void BindViewModel(this IBasePage page, IBaseViewModel viewModel)
        {
            page.BindingContext = viewModel;
            page.SetBinding <IBaseViewModel>(Page.IsBusyProperty, "IsBusy");
            page.SetBinding <IBaseViewModel>(Page.TitleProperty, "Title");
            page.SetBinding <IBaseViewModel>(Page.IconProperty, "Icon");

            page.Appearing    += (sender, args) => viewModel.OnAppearing();
            page.Disappearing += (sender, args) => viewModel.OnDisappearing();
        }
示例#23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WishlistPage"/> class.
 /// </summary>
 /// <param name="basePage">The base page.</param>
 /// <param name="pageObjectFactory">The page object factory.</param>
 /// <param name="driver">The driver.</param>
 /// <param name="pageSettings">The page settings.</param>
 public WishlistPage(IBasePage basePage,
                     IPageObjectFactory pageObjectFactory,
                     IWebDriver driver,
                     PageSettings pageSettings)
     : base(driver,
            new Uri(pageSettings.BaseUrl, "wishlist"))
 {
     this.basePage          = basePage;
     this.pageObjectFactory = pageObjectFactory;
 }
示例#24
0
        public static Page GetPageBasedOnConfiguration(IBasePage page)
        {
            if (!page.IsNavigationPage)
            {
                return(page as Page);
            }

            var naviPage = new NavigationPage(page as Page);

            return(naviPage);
        }
示例#25
0
        public virtual Task <bool> SetNewRootAndResetAsync <TPageModel>(IBasePage <TPageModel> newRootPage, bool clearCache = true)  where TPageModel : class, IBasePageModel
        {
            if (clearCache)
            {
                ClearPageCache();
            }

            Application.Current.MainPage = (Page)newRootPage;

            return(Task.FromResult(true));
        }
示例#26
0
        public override void SetPageModel <TPageModel>(IBasePage <TPageModel> page, TPageModel newPageModel)
        {
            base.SetPageModel(page, newPageModel);

            var rxPage = page as IViewFor <TPageModel>;

            if (rxPage != null)
            {
                rxPage.ViewModel = newPageModel;
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ProductsByCategoryPage"/> class.
 /// </summary>
 /// <param name="basePage">basePage</param>
 /// <param name="pageObjectFactory">The page object factory.</param>
 /// <param name="driver">The driver.</param>
 /// <param name="pageSettings">The page settings.</param>
 public ProductsByCategoryPage(
     IBasePage basePage,
     IPageObjectFactory pageObjectFactory,
     IWebDriver driver,
     PageSettings pageSettings)
     : base(basePage,
            pageObjectFactory,
            driver,
            pageSettings,
            new UriTemplate("{category}"))
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ProductTagsAllPage"/> class.
 /// </summary>
 /// <param name="basePage">The base page.</param>
 /// <param name="pageObjectFactory">The page object factory.</param>
 /// <param name="driver">The driver.</param>
 /// <param name="pageSettings">The page settings.</param>
 public ProductTagsAllPage(
     IBasePage basePage,
     IPageObjectFactory pageObjectFactory,
     IWebDriver driver,
     PageSettings pageSettings)
     : base(basePage,
            pageObjectFactory,
            driver,
            pageSettings,
            new UriTemplate("producttag/all"))
 {
 }
        public void SetDetail <TPageModel>(IBasePage <TPageModel> page) where TPageModel : class, IBasePageModel
        {
            var masterDetailPage = this.GetCurrentPage() as MasterDetailPage;

            // If we have set a custom Navbar color in AppShell.cs, we need to preserve it
            masterDetailPage.Detail = new NavigationPage(page as Page)
            {
                BarBackgroundColor = Color.FromHex("#DCDCDC")
            };

            masterDetailPage.IsPresented = false;
        }
示例#30
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseProductPage"/> class.
 /// </summary>
 /// <param name="basePage">The base page.</param>
 /// <param name="pageObjectFactory">The page object factory.</param>
 /// <param name="driver">The driver.</param>
 /// <param name="pageSettings">The page settings.</param>
 public BaseProductPage(IBasePage basePage,
                        IPageObjectFactory pageObjectFactory,
                        IWebDriver driver,
                        PageSettings pageSettings)
     : base(driver,
            pageSettings.BaseUrl,
            new UriTemplate("{productname}"))
 {
     this.basePage          = basePage;
     this.pageObjectFactory = pageObjectFactory;
     this.pageSettings      = pageSettings;
 }