Beispiel #1
0
        protected override async Task NavigateToFabLink()
        {
            if (IsTapped || EbPageHelper.IsShortTap())
            {
                return;
            }
            IsTapped = true;
            Loader msgLoader = EbLayout.GetMessageLoader();

            msgLoader.IsVisible = true;
            msgLoader.Message   = "Loading...";
            string linkRefID = Visualization.UseLinkSettings ? Visualization.LinkRefId : Visualization.FabLinkRefId;

            EbMobilePage page = EbPageHelper.GetPage(linkRefID);

            if (page != null && page.Container is EbMobileForm form)
            {
                form.NetworkType = page.NetworkMode;
                string failMsg = await EbPageHelper.ValidateFormRendering(form, msgLoader, this.ContextRecord);

                if (failMsg == null)
                {
                    await App.Navigation.NavigateMasterAsync(new FormRender(page, Visualization, ContextRecord));
                }
                else
                {
                    await App.Navigation.NavigateMasterAsync(new Redirect(failMsg));
                }
            }
            msgLoader.IsVisible = false;
            IsTapped            = false;
        }
 public ListRender(EbMobilePage Page, EbDataRow row)
 {
     InitializeComponent();
     BindingContext     = ViewModel = new ListViewModel(Page, row);
     ViewModel.EbLayout = EbLayout;
     EbLayout.ShowLoader();
 }
        public static List <EbMobileForm> GetOfflineForms()
        {
            List <EbMobileForm> ls = new List <EbMobileForm>();

            var pages = App.Settings.MobilePages ?? new List <MobilePagesWraper>();

            foreach (MobilePagesWraper wraper in pages)
            {
                EbMobilePage mpage = wraper.GetPage();

                if (mpage != null && mpage.Container is EbMobileForm form)
                {
                    if (string.IsNullOrEmpty(form.WebFormRefId))
                    {
                        continue;
                    }
                    form.DisplayName = mpage.DisplayName;
                    if (mpage.NetworkMode == NetworkMode.Offline || mpage.NetworkMode == NetworkMode.Mixed)
                    {
                        ls.Add(form);
                    }
                }
            }
            return(ls);
        }
Beispiel #4
0
        public async void InitNavigation()
        {
            EbMobileSettings settings = App.Settings.CurrentApplication?.AppSettings;

            IMasterPage master;

            if (settings != null && !string.IsNullOrEmpty(settings.DashBoardRefId))
            {
                EbMobilePage page = EbPageHelper.GetPage(settings.DashBoardRefId);

                if (page != null && page.Container is EbMobileDashBoard)
                {
                    master = new DashBoardRender(page);
                }
                else
                {
                    EbLog.Info("Default application dashboard not found, check object permissions");
                    master = new Home();
                }
            }
            else
            {
                master = new Home();
            }

            master.UpdateMasterLayout();

            await Detail.Navigation.PushAsync((Page)master);
        }
        public static EbMobileForm ResolveDependency(this EbMobileForm sourceForm)
        {
            try
            {
                EbMobilePage autogenvis = EbPageHelper.GetPage(sourceForm.AutoGenMVRefid);

                if (autogenvis != null)
                {
                    string linkref = (autogenvis.Container as EbMobileVisualization).LinkRefId;

                    if (!string.IsNullOrEmpty(linkref))
                    {
                        EbMobilePage linkpage = EbPageHelper.GetPage(linkref);

                        if (linkpage != null && linkpage.Container is EbMobileVisualization viz)
                        {
                            EbMobilePage innerlink = EbPageHelper.GetPage(viz.LinkRefId);

                            if (innerlink != null && innerlink.Container is EbMobileForm mf)
                            {
                                return(mf);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EbLog.Info("Failed to resolve form dependencies");
                EbLog.Error(ex.Message);
            }
            return(null);
        }
        public FormRenderVMR(EbMobilePage page, EbMobileVisualization source, EbDataRow contextrow) : base(page)
        {
            this.Mode = FormMode.REF;

            context    = source;
            contextRow = contextrow;
        }
Beispiel #7
0
        public FormRenderVMPRE(EbMobilePage page, List <EbMobileDataColToControlMap> linkMap, EbDataRow contextrow) : base(page)
        {
            this.Mode = FormMode.PREFILL;

            linkFormParameters = linkMap;
            Context            = contextrow;
        }
        public SignUp()
        {
            InitializeComponent();

            EbMobilePage page = App.Settings.CurrentSolution.GetSignUpPage();

            BindingContext = viewModel = new SignUpViewModel(page);
        }
        public FormRenderVME(EbMobilePage page, int rowid) : base(page)
        {
            Mode  = FormMode.EDIT;
            RowId = rowid;

            SubmitButtonText    = "Save Changes";
            IsEditButtonVisible = true;
            IsSaveButtonVisible = false;
        }
        public LinkedListRender(EbMobilePage page, EbMobileVisualization context, EbDataRow row)
        {
            InitializeComponent();
            BindingContext     = ViewModel = new LinkedListViewModel(page, context, row);
            ViewModel.EbLayout = EbLayout;

            this.DrawContextHeader(row, context);
            EbLayout.ShowLoader();
        }
        public static async Task <EbPageRenderer> GetRenderer(EbMobilePage page)
        {
            EbPageRenderer renderor = new EbPageRenderer();

            EbMobileContainer container = page.Container;

            try
            {
                if (container is EbMobileForm mobileForm)
                {
                    mobileForm.NetworkType = page.NetworkMode;
                    renderor.Message       = await ValidateFormRendering(mobileForm, null);

                    renderor.IsReady  = renderor.Message == null;
                    renderor.Renderer = new FormRender(page);
                }
                else if (container is EbMobileVisualization viz)
                {
                    if (viz.Type == MobileVisualizationType.Dynamic)
                    {
                        renderor.Renderer = new ListRender(page);
                    }
                    else
                    {
                        renderor.Renderer = new StaticListRender(page);
                    }
                }
                else if (container is EbMobileDashBoard)
                {
                    renderor.Renderer = new DashBoardRender(page);
                }
                else if (container is EbMobileDashBoard)
                {
                    renderor.Renderer = new PdfRender(page);
                }
                else
                {
                    renderor.Message = "Inavlid container type";
                    renderor.IsReady = false;
                }
            }
            catch (Exception ex)
            {
                EbLog.Error(ex.Message);

                renderor.IsReady = false;
                renderor.Message = "Unable to load page";
            }

            if (renderor.Renderer != null)
            {
                renderor.IsReady = true;
            }

            return(renderor);
        }
Beispiel #12
0
        private async Task EditButtonClicked()
        {
            EbMobilePage page = EbPageHelper.GetPage(Context.SourceFormRefId);

            if (page != null)
            {
                int id = Convert.ToInt32(ContextRecord["id"]);
                if (id != 0)
                {
                    FormRender Renderer = new FormRender(page, id);
                    await App.Navigation.NavigateMasterAsync(Renderer);
                }
            }
        }
        private EbMobilePage DeserializeJsonPage()
        {
            EbMobilePage mpage = null;

            try
            {
                string regexed = EbSerializers.JsonToNETSTD(this.Json);
                mpage = EbSerializers.Json_Deserialize <EbMobilePage>(regexed);
            }
            catch (Exception ex)
            {
                EbLog.Info("DeserializeJsonPage error inside pagewrapper");
                EbLog.Error(ex.Message);
            }
            return(mpage);
        }
        public static ContentPage GetPageByContainer(EbMobilePage page)
        {
            ContentPage renderer = null;

            try
            {
                switch (page.Container)
                {
                case EbMobileForm f:
                    renderer = new FormRender(page);
                    break;

                case EbMobileVisualization v:
                    if (v.Type == MobileVisualizationType.Dynamic)
                    {
                        renderer = new ListRender(page);
                    }
                    else
                    {
                        renderer = new StaticListRender(page);
                    }
                    break;

                case EbMobileDashBoard d:
                    renderer = new DashBoardRender(page);
                    break;

                case EbMobilePdf p:
                    renderer = new PdfRender(page);
                    break;

                default:
                    EbLog.Error("inavlid container type");
                    break;
                }
            }
            catch (Exception ex)
            {
                EbLog.Error(ex.Message);
            }
            return(renderer);
        }
        private async Task ResolveRedirection(EbNFLink link)
        {
            if (string.IsNullOrEmpty(link.LinkRefId))
            {
                EbLog.Info("Intentaction link type is page but linkrefid null");
                return;
            }
            EbMobilePage page = EbPageHelper.GetPage(link.LinkRefId);

            if (page != null)
            {
                EbLog.Info("Intentaction page rendering :" + page.DisplayName);

                ContentPage renderer = EbPageHelper.GetPageByContainer(page);
                await App.Navigation.NavigateMasterAsync(renderer);
            }
            else
            {
                EbLog.Info("Intentaction page not found for linkrefid:" + link.LinkRefId);
            }
        }
 public FormRenderVME(EbMobilePage page, int rowId, WebformData data) : base(page)
 {
     Mode        = FormMode.EDIT;
     RowId       = rowId;
     webFormData = data;
 }
        public static ContentPage ResolveByContext(EbMobileVisualization vis, EbDataRow row, EbMobilePage page)
        {
            ContentPage       renderer  = null;
            EbMobileContainer container = page.Container;

            try
            {
                if (container is EbMobileForm form)
                {
                    if (vis.FormMode == WebFormDVModes.New_Mode)
                    {
                        string msg = GetFormRenderInvalidateMsg(page.NetworkMode);
                        if (msg != null && !form.RenderAsFilterDialog)
                        {
                            renderer = new Redirect(msg, MessageType.disconnected);
                        }
                        else
                        {
                            renderer = new FormRender(page, vis.LinkFormParameters, row);
                        }
                    }
                    else
                    {
                        EbMobileDataColToControlMap map = vis.FormId;
                        if (map == null)
                        {
                            EbLog.Info("form id must be set");
                            throw new Exception("Form rendering exited! due to null value for 'FormId'");
                        }
                        else
                        {
                            int id = Convert.ToInt32(row[map.ColumnName]);
                            if (id <= 0)
                            {
                                EbLog.Info($"formid has invalid value {id}, switching to new mode");
                                renderer = new FormRender(page, vis.LinkFormParameters, row);
                            }
                            else
                            {
                                EbLog.Info($"formid has value {id}, rendering edit mode");
                                renderer = new FormRender(page, id);
                            }
                        }
                    }
                }
                else if (container is EbMobileVisualization)
                {
                    renderer = new LinkedListRender(page, vis, row);
                }
                else if (container is EbMobileDashBoard)
                {
                    renderer = new DashBoardRender(page);
                }
            }
            catch (Exception ex)
            {
                EbLog.Error(ex.Message);
            }
            return(renderer);
        }
 public ListViewModel(EbMobilePage page) : base(page)
 {
 }
 public ListViewModel(EbMobilePage page, EbDataRow row) : base(page)
 {
     this.ContextRecord = row;
 }
 //new mode
 public FormRender(EbMobilePage page)
 {
     InitializeComponent();
     BindingContext = viewModel = new FormRenderViewModel(page);
 }
 public StaticListRender(EbMobilePage page)
 {
     InitializeComponent();
     BindingContext = viewModel = new StaticListViewModel(page);
 }
 //prefill/new mode
 public FormRender(EbMobilePage page, List <EbMobileDataColToControlMap> linkMap, EbDataRow contextRow)
 {
     InitializeComponent();
     BindingContext = viewModel = new FormRenderVMPRE(page, linkMap, contextRow);
 }
Beispiel #23
0
 public LinkedListViewModel(EbMobilePage page, EbMobileVisualization context, EbDataRow row) : base(page)
 {
     this.Context       = context;
     this.ContextRecord = row;
 }
 public PdfRender(EbMobilePage page)
 {
     InitializeComponent();
     Renderer            = new PdfRenderViewModel(page);
     this.BindingContext = Renderer;
 }
Beispiel #25
0
 public PdfRenderViewModel(EbMobilePage page) : base(page)
 {
 }
 //reference mode
 public FormRender(EbMobilePage page, EbMobileVisualization context, EbDataRow contextRow)
 {
     InitializeComponent();
     BindingContext = viewModel = new FormRenderVMR(page, context, contextRow);
 }
 public DynamicBaseViewModel(EbMobilePage page)
 {
     this.Page        = page;
     this.PageTitle   = page.DisplayName;
     this.NetworkType = page.NetworkMode;
 }
 //edit
 public FormRender(EbMobilePage page, int rowId, WebformData data)
 {
     InitializeComponent();
     BindingContext = viewModel = new FormRenderVME(page, rowId, data);
 }
 public DashBoardRender(EbMobilePage Page)
 {
     InitializeComponent();
     BindingContext = viewModel = new DashBoardRenderViewModel(Page);
 }
Beispiel #30
0
        private async Task <bool> GetLatestAutoId(List <AppData> Applications)
        {
            List <EbMobileAutoIdData> autoIdData = new List <EbMobileAutoIdData>();

            try
            {
                foreach (AppData app in Applications)
                {
                    foreach (MobilePagesWraper mobPageWrap in app.MobilePages)
                    {
                        EbMobilePage page = mobPageWrap.GetPage();
                        if (page.Container is EbMobileForm form)
                        {
                            EbMobileAutoId autoId = (EbMobileAutoId)form.ChildControls.Find(e => e is EbMobileAutoId);
                            if (autoId != null && !string.IsNullOrWhiteSpace(form.TableName))
                            {
                                string query = autoId.PrefixExpr?.GetCode();
                                if (!string.IsNullOrWhiteSpace(query) && page.NetworkMode == NetworkMode.Offline)
                                {
                                    EbDataTable dt = App.DataDB.DoQuery(query);
                                    if (dt.Rows.Count > 0)
                                    {
                                        autoIdData.Add(new EbMobileAutoIdData()
                                        {
                                            Table  = form.TableName,
                                            Column = autoId.Name,
                                            Prefix = dt.Rows[0][0]?.ToString()
                                        });
                                    }
                                }
                            }
                        }
                    }
                }
                if (autoIdData.Count > 0)
                {
                    RestRequest request = new RestRequest(ApiConstants.PULL_LATEST_AUTOID, Method.POST);
                    RestClient  client  = new RestClient(App.Settings.RootUrl)
                    {
                        Timeout = ApiConstants.TIMEOUT_IMPORT
                    };
                    request.AddParameter("data", JsonConvert.SerializeObject(autoIdData));
                    request.AddHeader(AppConst.BTOKEN, App.Settings.BToken);
                    request.AddHeader(AppConst.RTOKEN, App.Settings.RToken);
                    IRestResponse response = await client.ExecuteAsync(request);

                    if (response.IsSuccessful)
                    {
                        EbDataSet ds = new EbDataSet();
                        EbMobileAutoIdDataResponse resp = JsonConvert.DeserializeObject <EbMobileAutoIdDataResponse>(response.Content);
                        ds.Tables.Add(resp.OfflineData);
                        DBService.Current.ImportData(ds);
                        EbLog.Info("GetLatestAutoId success");
                        return(true);
                    }
                    else
                    {
                        EbLog.Warning("GetLatestAutoId failed");
                    }
                }
            }
            catch (Exception ex)
            {
                EbLog.Error("Error in GetLatestAutoId: " + ex.Message);
            }
            return(autoIdData.Count > 0 ? false : true);
        }