示例#1
0
        public EbDataRow GetAsDataRow()
        {
            EbDataRow   row = null;
            EbDataTable dt  = new EbDataTable();

            if (Parameters != null && Parameters.Any())
            {
                row = dt.NewDataRow();
                dt.Rows.Add(row);

                List <object> dataArray = new List <object>();

                for (int i = 0; i < Parameters.Count; i++)
                {
                    EbMobileStaticParameter pm = Parameters[i];

                    dt.Columns.Add(new EbDataColumn
                    {
                        ColumnName  = pm.Name,
                        ColumnIndex = i
                    });

                    dataArray.Add(pm.Value);
                }
                row.AddRange(dataArray.ToArray());
            }
            return(row ?? dt.NewDataRow());
        }
        public List <Param> GetRenderValidatorParams(EbDataRow row)
        {
            List <Param> param = new List <Param>();

            if (row == null)
            {
                return(param);
            }

            foreach (Param p in RenderValidatorParams)
            {
                object val = row[p.Name];

                if (val != null)
                {
                    param.Add(new Param
                    {
                        Name  = p.Name,
                        Type  = p.Type,
                        Value = val.ToString()
                    });
                }
            }
            return(param);
        }
        private MobileTableRow DR2TableRow(EbDataRow row)
        {
            int dataId = row["id"] != null?Convert.ToInt32(row["id"]) : 0;

            MobileTableRow tableRow = new MobileTableRow(dataId);

            foreach (EbMobileControl ctrl in dataGrid.ChildControls)
            {
                if (ctrl is INonPersistControl || ctrl is ILinesEnabled)
                {
                    continue;
                }

                MobileTableColumn column = new MobileTableColumn
                {
                    Name    = ctrl.Name,
                    Type    = ctrl.EbDbType,
                    Value   = row[ctrl.Name] ?? null,
                    Control = ctrl
                };

                column.DisplayValue = ctrl.GetDisplayName4DG(column.Value);
                tableRow.Columns.Add(column);
            }
            return(tableRow);
        }
        private List <DbParameter> GetParamLocal(EbDataRow row)
        {
            var parameters = new List <DbParameter>();

            try
            {
                string        sql         = HelperFunctions.B64ToString(this.OfflineQuery.Code);
                List <string> _parameters = HelperFunctions.GetSqlParams(sql);

                foreach (string param in _parameters)
                {
                    object data = row[param];

                    if (data != null)
                    {
                        parameters.Add(new DbParameter
                        {
                            ParameterName = param,
                            Value         = data
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                EbLog.Info("Visualization get parameters from local error");
                EbLog.Error(ex.Message);
            }
            return(parameters);
        }
示例#5
0
        public static EbApi GetApiByName(string name, string version, IDatabase ObjectsDB)
        {
            EbApi  api_o = null;
            string sql   = ObjectsDB.EB_API_BY_NAME;

            DbParameter[] parameter =
            {
                ObjectsDB.GetNewParameter("objname", EbDbTypes.String, name),
                ObjectsDB.GetNewParameter("version", EbDbTypes.String, version)
            };
            EbDataTable dt = ObjectsDB.DoQuery(sql, parameter);

            if (dt.Rows.Count > 0)
            {
                EbDataRow       dr        = dt.Rows[0];
                EbObjectWrapper _ebObject = (new EbObjectWrapper
                {
                    Json = dr[0].ToString(),
                    VersionNumber = dr[1].ToString(),
                    EbObjectType = (dr[4] != DBNull.Value) ? Convert.ToInt32(dr[4]) : 0,
                    Status = Enum.GetName(typeof(ObjectLifeCycleStatus), Convert.ToInt32(dr[2])),
                    Tags = dr[3].ToString(),
                    RefId = null,
                });
                api_o = EbSerializers.Json_Deserialize <EbApi>(_ebObject.Json);
            }

            return(api_o);
        }
        public object GetBinding(EbDataSet dataSet, string bindingParam)
        {
            try
            {
                string[] parts = bindingParam.Split(CharConstants.DOT);

                if (parts.Length >= 2)
                {
                    string columnName = parts[1];
                    string tableExpr  = parts[0];

                    int tableIndex = Convert.ToInt32(tableExpr.Substring(tableExpr.Length - 1));

                    if (dataSet.TryGetTable(tableIndex, out EbDataTable dt))
                    {
                        EbDataRow dr = dt.Rows?.FirstOrDefault();

                        if (dr != null)
                        {
                            return(dr[columnName]);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EbLog.Error("dashboard control [GetBinding] error, " + ex.Message);
            }
            return(null);
        }
        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);
        }
        private void SetControlValues(EbDataRow masterRow)
        {
            foreach (var pair in this.Form.ControlDictionary)
            {
                EbMobileControl ctrl = pair.Value;
                object          data = masterRow[ctrl.Name];
                try
                {
                    if (ctrl is IFileUploadControl)
                    {
                        this.SetFileData(ctrl, data);
                    }
                    else if (ctrl is ILinesEnabled line)
                    {
                        EbDataTable lines = this.formData.Tables.Find(table => table.TableName == line.TableName);
                        ctrl.SetValue(lines);
                    }
                    else
                    {
                        ctrl.SetValue(data);
                    }

                    if (this.IsEditButtonVisible)
                    {
                        ctrl.SetAsReadOnly(true);
                    }
                }
                catch (Exception ex)
                {
                    EbLog.Error("Error when setting value to controls on edit");
                    EbLog.Error(ex.Message);
                }
            }
        }
        public FormRenderVMR(EbMobilePage page, EbMobileVisualization source, EbDataRow contextrow) : base(page)
        {
            this.Mode = FormMode.REF;

            context    = source;
            contextRow = contextrow;
        }
        protected void PrepareDataTable(SqliteDataReader reader, EbDataTable dt)
        {
            try
            {
                int _fieldCount = reader.FieldCount;

                for (int i = 0; i < _fieldCount; i++)
                {
                    dt.Columns.Add(new EbDataColumn
                    {
                        ColumnName  = reader.GetName(i),
                        ColumnIndex = i,
                        Type        = DbTypeConverter.ConvertToDbType(reader.GetFieldType(i))
                    });
                }

                while (reader.Read())
                {
                    EbDataRow dr     = dt.NewDataRow();
                    object[]  oArray = new object[_fieldCount];
                    reader.GetValues(oArray);
                    dr.AddRange(oArray);
                    dt.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                EbLog.Error(ex.Message);
            }
        }
示例#11
0
        public SearchRsltData(EbDataRow dr, Eb_Solution SolutionObj, User UserObj)
        {
            this.DisplayName = Convert.ToString(dr[1]);
            this.Data        = JsonConvert.DeserializeObject <Dictionary <string, string> >(Convert.ToString(dr[2]));
            List <string> keys = this.Data.Keys.ToList();

            foreach (string k in keys)
            {
                this.Data[k] = this.Data[k].Replace("\n", "<br>");
            }
            int linkType = Convert.ToInt32(dr[9]);

            if (linkType == (int)SH_LinkType.LM)
            {
                this.Link = $"/leadmanagement/{Convert.ToString(dr[4])}";
            }
            else
            {
                string param = JsonConvert.SerializeObject(new Param[] { new Param()
                                                                         {
                                                                             Name = "id", Type = "7", Value = Convert.ToString(dr[4])
                                                                         } }).ToBase64();
                this.Link = $"/WebForm/Index?_r={Convert.ToString(dr[3])}&_p={param}&_m=1";
            }
            int createdBy = Convert.ToInt32(dr[5]);

            this.CreatedBy = SolutionObj.Users.ContainsKey(createdBy) ? SolutionObj.Users[createdBy] : "No Name";
            this.CreatedAt = Convert.ToDateTime(dr[6]).ConvertFromUtc(UserObj.Preference.TimeZone).ToString(UserObj.Preference.GetShortDatePattern() + " " + UserObj.Preference.GetShortTimePattern(), CultureInfo.InvariantCulture);
            int modifiedBy = Convert.ToInt32(dr[7]);

            this.ModifiedBy = SolutionObj.Users.ContainsKey(modifiedBy) ? SolutionObj.Users[modifiedBy] : "No Name";
            this.ModifiedAt = Convert.ToDateTime(dr[8]).ConvertFromUtc(UserObj.Preference.TimeZone).ToString(UserObj.Preference.GetShortDatePattern() + " " + UserObj.Preference.GetShortTimePattern(), CultureInfo.InvariantCulture);
        }
示例#12
0
        public FormRenderVMPRE(EbMobilePage page, List <EbMobileDataColToControlMap> linkMap, EbDataRow contextrow) : base(page)
        {
            this.Mode = FormMode.PREFILL;

            linkFormParameters = linkMap;
            Context            = contextrow;
        }
 public void DoConditionalFormating(ref string formattedVal, long value, EbDataRow row)
 {
     foreach (ColumnCondition cond in ConditionalFormating)
     {
         if (cond is AdvancedCondition)
         {
             bool result = EvaluateExpression(row, ref globals, (cond as AdvancedCondition), value);
             if ((cond as AdvancedCondition).RenderAS == AdvancedRenderType.Default)
             {
                 if (result == (cond as AdvancedCondition).GetBoolValue())
                 {
                     formattedVal = "<div class='conditionformat' style='background-color:" + cond.BackGroundColor + ";color:" + cond.FontColor + ";'>" + value + "</div>";
                 }
             }
             else
             {
                 if (result == (cond as AdvancedCondition).GetBoolValue())
                 {
                     formattedVal = "<i class='fa fa-check' aria-hidden='true'  style='color:green'></i>";
                 }
                 else
                 {
                     formattedVal = "<i class='fa fa-times' aria-hidden='true' style='color:red'></i>";
                 }
             }
         }
         if (cond.CompareValues(value))
         {
             formattedVal = "<div class='conditionformat' style='background-color:" + cond.BackGroundColor + ";color:" + cond.FontColor + ";'>" + value + "</div>";
         }
     }
 }
 public ListRender(EbMobilePage Page, EbDataRow row)
 {
     InitializeComponent();
     BindingContext     = ViewModel = new ListViewModel(Page, row);
     ViewModel.EbLayout = EbLayout;
     EbLayout.ShowLoader();
 }
        public DynamicFrame(EbDataRow row, EbMobileVisualization viz, bool isHeader = false)
        {
            this.IsHeader = isHeader;
            this.DataRow  = row;

            this.Initialize(viz);
        }
        public bool EvaluateExpression(EbDataRow _datarow, ref EbVisualizationGlobals globals, AdvancedCondition condition, long value)
        {
            foreach (FormulaPart formulaPart in condition.FormulaParts)
            {
                object __value    = null;
                var    __partType = _datarow.Table.Columns[formulaPart.FieldName].Type;
                if (__partType == EbDbTypes.Decimal || __partType == EbDbTypes.Int32)
                {
                    if (formulaPart.FieldName == this.DataColumns[0].Name)
                    {
                        __value = value;
                    }
                    else
                    {
                        __value = (_datarow[formulaPart.FieldName] != DBNull.Value) ? _datarow[formulaPart.FieldName] : 0;
                    }
                }
                else
                {
                    __value = _datarow[formulaPart.FieldName];
                }

                globals[formulaPart.TableName].Add(formulaPart.FieldName, new GNTV
                {
                    Name  = formulaPart.FieldName,
                    Type  = (GlobalDbType)__partType,
                    Value = __value
                });
            }
            return(Convert.ToBoolean(condition.GetCodeAnalysisScript().RunAsync(globals).Result.ReturnValue));
        }
 public EbIntegrationConfData(EbDataRow _row)
 {
     Id         = Convert.ToInt32(_row["id"]);
     SolutionId = _row["solution_id"].ToString();
     NickName   = _row["nickname"].ToString();
     Type       = _row["type"].ToString();
     CreatedOn  = Convert.ToDateTime(_row["created_at"]).ToString("dddd, dd MMMM yyyy");
 }
        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();
        }
示例#19
0
        private void FillLiveId(EbDataTable dt, EbDataRow dr, int liveId, string columName)
        {
            EbDataColumn col = dt.Columns[columName];

            if (col != null)
            {
                dr[col.ColumnIndex] = liveId;
            }
        }
 public EbIntegrationData(EbDataRow row)
 {
     Id         = row["id"].ToString();
     ConfId     = row["confid"].ToString();
     NickName   = row["nickname"].ToString();
     Ctype      = row["ctype"].ToString();
     Type       = row["itype"].ToString();
     Preference = row["preference"].ToString();
     CreatedOn  = Convert.ToDateTime(row["created_at"]).ToString("dddd, dd MMMM yyyy");
 }
        private void DrawContextHeader(EbDataRow row, EbMobileVisualization context)
        {
            var header = new DynamicFrame(row, context, true)
            {
                BackgroundColor = Color.Transparent,
                Padding         = new Thickness(20, 10, 20, 0),
                Margin          = 0
            };

            HeaderContainer.Children.Add(header);
        }
示例#22
0
        private SingleRow GetRow(EbMobileForm Form, EbDataTable Dt, EbDataRow DataRow, int RowIndex)
        {
            SingleRow row = new SingleRow
            {
                RowId    = 0,
                IsUpdate = false,
                LocId    = Convert.ToInt32(DataRow["eb_loc_id"]),
            };

            row.Columns.AddRange(Form.GetColumnValues(Dt, RowIndex));
            return(row);
        }
示例#23
0
        public void SetValue(EbDataRow currentRow)
        {
            foreach (var _key in this.Aggregations.Keys)
            {
                this.Aggregations[_key].SetValue(Convert.ToDecimal(currentRow[_key]));
            }

            if (ParentFooter != null)
            {
                ParentFooter.SetValue(currentRow);
            }
        }
示例#24
0
        public async virtual Task OnControlAction(EbDataRow row)
        {
            if (string.IsNullOrEmpty(this.LinkRefId))
            {
                return;
            }

            EbMobilePage page = EbPageHelper.GetPage(this.LinkRefId) ?? EbPageHelper.GetExternalPage(this.LinkRefId);

            if (page != null)
            {
                EbMobileContainer container = page.Container;

                if (container is EbMobileForm)
                {
                    if (this.FormMode == WebFormDVModes.New_Mode)
                    {
                        await App.Navigation.NavigateMasterAsync(new FormRender(page, this.LinkFormParameters, row));
                    }
                    else
                    {
                        try
                        {
                            var map = this.FormId;
                            if (map == null)
                            {
                                EbLog.Info("form id should 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("id has ivalid value" + id);
                                    throw new Exception("Form rendering exited! due to invalid id");
                                }
                                await App.Navigation.NavigateMasterAsync(new FormRender(page, id));
                            }
                        }
                        catch (Exception ex)
                        {
                            EbLog.Error(ex.Message);
                        }
                    }
                }
                else if (container is EbMobileVisualization)
                {
                    await App.Navigation.NavigateMasterAsync(new ListRender(page, row));
                }
            }
        }
示例#25
0
 public static bool EvaluateLinkExpr(EbDataRow row, string script)
 {
     try
     {
         SetDataRow(row);
         return(Instance.evaluator.Execute <bool>(script));
     }
     catch (Exception ex)
     {
         EbLog.Error("list hide expr failure, " + ex.Message);
     }
     return(true);
 }
        private void SetPowerSelectValue(EbDataRow row)
        {
            string displayMember = row[DisplayMember.ColumnName]?.ToString();
            object valueMember   = row[ValueMember.ColumnName];

            selected = new ComboBoxLabel
            {
                Text  = displayMember,
                Value = valueMember,
                Row   = row
            };
            SearchBox.Text = displayMember;
        }
示例#27
0
        private void PrepareDataTable(NpgsqlDataReader reader, EbDataTable dt)
        {
            int _fieldCount = reader.FieldCount;

            while (reader.Read())
            {
                EbDataRow dr = dt.NewDataRow();
                for (int i = 0; i < _fieldCount; i++)
                {
                    var _typ = reader.GetFieldType(i);
                    if (_typ == typeof(DateTime))
                    {
                        dr[i] = reader.IsDBNull(i) ? DateTime.Now : reader.GetDateTime(i);
                        continue;
                    }
                    else if (_typ == typeof(string))
                    {
                        dr[i] = reader.IsDBNull(i) ? string.Empty : reader.GetString(i);
                        continue;
                    }
                    else if (_typ == typeof(bool))
                    {
                        dr[i] = reader.IsDBNull(i) ? false : reader.GetBoolean(i);
                        continue;
                    }
                    else if (_typ == typeof(decimal))
                    {
                        dr[i] = reader.IsDBNull(i) ? 0 : reader.GetDecimal(i);
                        continue;
                    }
                    else if (_typ == typeof(int) || _typ == typeof(Int32))
                    {
                        dr[i] = reader.IsDBNull(i) ? 0 : reader.GetInt32(i);
                        continue;
                    }
                    else if (_typ == typeof(Int64))
                    {
                        dr[i] = reader.IsDBNull(i) ? 0 : reader.GetInt64(i);
                        continue;
                    }
                    else
                    {
                        dr[i] = reader.GetValue(i);
                        continue;
                    }
                }

                dt.Rows.Add(dr);
            }
        }
示例#28
0
        public bool TryGetFirstRow(int tableIndex, out EbDataRow row)
        {
            EbDataTable dt     = Data.Tables[tableIndex];
            bool        status = false;

            row = null;

            if (dt.Rows.Any())
            {
                row    = dt.Rows[0];
                status = true;
            }
            return(status);
        }
 public void UpdateRetryCount(EbDataRow DataRow)
 {
     try
     {
         int localid = Convert.ToInt32(DataRow["id"]);
         int retry   = Convert.ToInt32(DataRow["eb_retry_count"]);
         int status  = App.DataDB.DoNonQuery($"UPDATE {this.TableName} SET eb_retry_count = {retry + 1} WHERE id = {localid}");
         if (status > 0 && retry > 1)
         {
             EbLog.Info($"Rety count of {this.TableName}({localid}) updated: {retry + 1}");
         }
     }
     catch (Exception ex)
     {
         EbLog.Error("Rety count increment failed: " + ex.Message);
     }
 }
        public override async Task OnControlAction(EbDataRow row)
        {
            string columnName = Name + "_action_id";

            object actionId = row[columnName];

            if (actionId != null)
            {
                int id = Convert.ToInt32(actionId);

                if (id == 0)
                {
                    EbLog.Info("action_id is zero");
                    return;
                }
                await App.Navigation.NavigateMasterAsync(new DoAction(id));
            }
        }