private void AddBooleanParam(OrderParameterType paramType, OrderParameter param) { SwitchCell switchCell = new SwitchCell { Text = paramType.Name, On = param.Value == "True" }; switchCell.OnChanged += (sender, e) => { param.Value = switchCell.On ? "True" : "False"; }; LastSection.Add(switchCell); }
/// <summary> /// Successfully fetched data and should be processed by subclass /// </summary> /// <param name="xmlReader">Xml reader.</param> /// <param name="callback">Callback.</param> protected override void Success(XmlReader xmlReader, Action <IEnumerable <OrderType>, Exception> callback) { Log.WriteLine(Log.Layer.SAL, this.GetType(), "Success"); List <OrderType> list = new List <OrderType> (); OrderType item = null; while (xmlReader.Read()) { if (xmlReader.IsStartElement()) { try { if (xmlReader.Name == "order") { item = new OrderType() { Name = xmlReader.GetAttribute("name"), Id = Int32.Parse(xmlReader.GetAttribute("id")), TypeFlag = Int32.Parse(xmlReader.GetAttribute("typeflag")), Position = Int32.Parse(xmlReader.GetAttribute("posflag")), TUCost = Int32.Parse(xmlReader.GetAttribute("tus")) }; list.Add(item); } else if (xmlReader.Name == "desc") { if (xmlReader.Read()) { item.Description = xmlReader.Value.Trim(); } } else if (xmlReader.Name == "param") { OrderParameterType param = new OrderParameterType() { Name = xmlReader.GetAttribute("name"), InfoType = Int32.Parse(xmlReader.GetAttribute("infotype")), DataType = (OrderType.DataTypes)Int32.Parse(xmlReader.GetAttribute("datatype")) }; item.Parameters.Add(param); } } catch (Exception e) { Log.WriteLine(Log.Layer.SAL, this.GetType(), e); } } } callback(from element in list orderby element.Name select element, null); }
private void AddParameter(OrderParameterType paramType, OrderParameter param = null) { if (param == null) { param = new OrderParameter(); switch (paramType.DataType) { case OrderType.DataTypes.Integer: param.Value = "0"; break; case OrderType.DataTypes.Boolean: param.Value = "False"; break; case OrderType.DataTypes.String: param.Value = ""; break; default: param.Value = ""; break; } CurrentOrder.Parameters.Add(param); } if (paramType.InfoType > 0) { AddInfoParam(paramType, param); return; } switch (paramType.DataType) { case OrderType.DataTypes.Integer: AddIntegerParam(paramType, param); break; case OrderType.DataTypes.String: AddStringParam(paramType, param); break; case OrderType.DataTypes.Boolean: AddBooleanParam(paramType, param); break; default: AddIntegerParam(paramType, param); break; } }
private void AddStringParam(OrderParameterType paramType, OrderParameter param) { EntryCell entry = new EntryCell { Label = paramType.Name, Text = param.Value }; entry.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => { if (e.PropertyName == "Text") { param.Value = entry.Text; } }; LastSection.Add(entry); }
private void InfoEntryTextChanged(EntryCell entry, OrderParameterType paramType, OrderParameter param, Picker infoPicker) { param.Value = entry.Text; if (infoData.ContainsKey(paramType.InfoType)) { Dictionary <string, InfoData> data = infoData [paramType.InfoType]; if (data.Count > 0) { Task.Factory.StartNew(() => { int i = 0; foreach (string value in data.Keys) { if (entry.Text == data[value].NexusId.ToString()) { if (infoPicker.Items.Count > i) { Device.BeginInvokeOnMainThread(() => { infoPicker.SelectedIndex = i; infoPicker.Title = data[value].ToString(); }); } break; } i += 1; } }); } else { Device.BeginInvokeOnMainThread(() => { infoPicker.Title = param.Value; }); } } else { Device.BeginInvokeOnMainThread(() => { infoPicker.Title = param.Value; }); } }
/// <summary> /// Persists the relationships. /// </summary> /// <param name="item">Item.</param> protected override void PersistRelationships(Order item) { Log.WriteLine(Log.Layer.DAL, this.GetType(), "Save Order Parameters (" + item.Id + "): " + item.Parameters.Count); if (item.OrderType == null) { item.OrderType = DL.PhoenixDatabase.GetItem <OrderType> (item.OrderTypeId); if (item.OrderType != null) { item.OrderType.Parameters = DL.PhoenixDatabase.GetOrderTypeParameters(item.OrderTypeId); } } if (item.Parameters.Count > 0) { int i = 0; foreach (OrderParameter param in item.Parameters) { param.OrderId = item.Id; param.DisplayValue = param.Value; if (item.OrderType != null && item.OrderType.Parameters.Count > i) { OrderParameterType paramType = item.OrderType.Parameters [i]; if (paramType.InfoType > 0) { try { InfoData info = DL.PhoenixDatabase.GetInfoDataByGroupIdAndNexusId(paramType.InfoType, Int32.Parse(param.Value)); if (info != null) { param.DisplayValue = info.ToString(); } } catch { } } } DL.PhoenixDatabase.SaveItemIfNew <OrderParameter> (param); i += 1; } } }
private void AddInfoParam(OrderParameterType paramType, OrderParameter param) { if (paramType.InfoType == 0) { AddIntegerParam(paramType, param); return; } string displayValue = string.IsNullOrWhiteSpace(param.DisplayValue) ? "Select " + paramType.Name : param.DisplayValue; Picker infoPicker = new Picker { Title = displayValue, VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, BackgroundColor = Color.Silver }; EntryCell entry = new EntryCell { Text = param.Value, Label = paramType.Name }; if (string.IsNullOrWhiteSpace(param.Value)) { entry.Placeholder = paramType.DataType.ToString(); } if (paramType.DataType != OrderType.DataTypes.String) { entry.Keyboard = Keyboard.Numeric; } // entry.Completed += (sender, e) => { // InfoEntryTextChanged(entry,paramType,param,infoPicker); // }; entry.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => { if (e.PropertyName == "Text") { InfoEntryTextChanged(entry, paramType, param, infoPicker); } }; LastSection.Add(entry); LastSection.Add(new ViewCell { View = infoPicker }); if (infoData.ContainsKey(paramType.InfoType)) { Task.Factory.StartNew(() => { Dictionary <string, InfoData> data = infoData [paramType.InfoType]; if (data.Count > 0) { int i = 0; foreach (string value in data.Keys) { infoPicker.Items.Add(value.ToString()); if (param.Value != null && param.Value == data[value].ToString()) { Device.BeginInvokeOnMainThread(() => { infoPicker.SelectedIndex = i; }); } i += 1; } } }); } else { Phoenix.Application.InfoManager.GetInfoDataByGroupId(paramType.InfoType, (results) => { Dictionary <string, InfoData> data = new Dictionary <string, InfoData>(); int i = 0; foreach (InfoData info in results) { if (!data.ContainsKey(info.ToString())) { data.Add(info.ToString(), info); Device.BeginInvokeOnMainThread(() => { infoPicker.Items.Add(info.ToString()); if (param.Value != null && param.Value == info.NexusId.ToString()) { infoPicker.SelectedIndex = i; } }); i += 1; } } infoData.Add(paramType.InfoType, data); if (data.Count < 1) { Device.BeginInvokeOnMainThread(() => { infoPicker.IsEnabled = false; infoPicker.IsVisible = false; }); } }); } infoPicker.Unfocused += (sender, e) => { if (infoPicker.SelectedIndex > 0) { if (infoData.ContainsKey(paramType.InfoType)) { Dictionary <string, InfoData> data = infoData [paramType.InfoType]; string value = infoPicker.Items[infoPicker.SelectedIndex]; if (data.ContainsKey(value)) { param.Value = data[value].NexusId.ToString(); param.DisplayValue = data[value].ToString(); Device.BeginInvokeOnMainThread(() => { entry.Text = data[value].NexusId.ToString(); }); } } } }; }