Beispiel #1
0
        /// <summary>
        /// 读取系统属性结果
        /// </summary>
        /// <param name="result"></param>
        private void readSystemPropResult(object[] result)
        {
            string content = (string)result[0];
            List <KeyValuePair <string, string> > list = SystemProperty.Parser(content);

            this.listViewProperties.BeginUpdate();
            this.listViewProperties.Items.Clear();
            this.keyList.Clear();
            // 是否需要过滤
            bool needFilter = this.checkBoxFilter.Checked && !string.IsNullOrEmpty(this.textBoxFilter.Text);

            foreach (KeyValuePair <string, string> line in list)
            {
                string key   = line.Key;
                string value = line.Value;
                this.keyList.Add(key);
                // 需要过滤,并且包含这个关键词
                if (!needFilter || key.Contains(this.textBoxFilter.Text))
                {
                    ListViewItem item = new ListViewItem(key);
                    value = Encoding.UTF8.GetString(Encoding.Default.GetBytes(value));
                    item.SubItems.Add(value);
                    this.listViewProperties.Items.Add(item);
                }
            }
            this.listViewProperties.EndUpdate();
            // 更新自动完成列表
            this.textBoxFilter.Invoke(updateSource);
        }
        private SystemValue GetSystemValueProperty(SystemProperty property)
        {
            switch (property)
            {
            case SystemProperty.PortfolioDate:
                return(new PortfolioDateValue());
            }

            throw new InvalidOperationException();
        }
        public void SubscribeToSystemValue(SystemProperty property)
        {
            _context.Post(state => {
                _systemValueSubscriptions.Add(property, GetSystemValueProperty(property));

                var da = new DataAvailableEventArgs();
                da.SystemValues.Add(property, _systemValueSubscriptions[property].GetValue());

                DataAvailable?.Invoke(this, da);
            }, null);
        }
    public void MouseSelect()
    {
        Debug.Log("点击---" + transform.GetSiblingIndex());
        float h = SystemProperty.GetRelativeKeyboardHeight(canvas, true);

        text.text = h.ToString();
        Vector3 upPos = originPos;

        upPos.y += h;
        rt.anchoredPosition3D = upPos;
    }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the ObjectClass class.
 /// </summary>
 /// <param name="obj">Шаблон, для которого создается атрибут.</param>
 /// <param name="fieldName">аименование атрибута.</param>
 /// <param name="fieldType">Тип атрибута.</param>
 /// <param name="sys">Представление атрибута.</param>
 internal Field(ObjectClass obj, string fieldName, FieldType fieldType, SystemProperty sys)
 {
     this.objectClass  = obj;
     this.order        = -1;
     this.system       = sys;
     this.name         = fieldName;
     this.comment      = string.Empty;
     this.defaultValue = new DefaultValue(fieldType);
     this.ChangeFieldType(fieldType);
     this.expression = string.Empty;
     this.category   = this.IsPageField ? fieldName : Strings.Common;
 }
Beispiel #6
0
 private void CheckBatteryStatus()
 {
     while (true)
     {
         Thread.Sleep(Int32.Parse(Mobile.Properties.Resources.BatterySaveDelay));
         SystemProperty batteryInfo = SystemProperty.PowerBatteryStrength;
         BatteryLevel   level       = (BatteryLevel)SystemState.GetValue(batteryInfo);
         if (BatteryLevelNotification != null)
         {
             BatteryLevelNotification(this, new BatteryEventArgs(level, workflowManager.ToXml()));
         }
     }
 }
Beispiel #7
0
        public object this[SystemProperty prop]
        {
            get
            {
                if (prop != SystemProperty.Custom)
                {
                    return(this[this.GetField(prop)]);
                }

                return(null);
            }

            set
            {
                if (prop != SystemProperty.Custom)
                {
                    this[this.GetField(prop)] = value;
                }
                else
                {
                    throw new FieldNotFoundException(Strings.FieldNotDefined);
                }
            }
        }
        /// <summary>
        /// Вспомогательный метод заполнения кортежей OpenPositionValues, ClosePositionValues и OtherPositionValues данными
        /// </summary>
        /// <param name="positions"></param>
        /// <param name="currentProp"></param>
        /// <param name="isDanger">Дополнительный параметр, указывает 'опасено' ли это поле для редактирования</param>
        /// <param name="valueList">Список свойст из таблици представления 'SafePositionEdit'. В этом методе в 'valueList' добавляется всегда
        /// однин элемент (новая строка в таблице представления 'SafePositionEdit'). Но при этом считается статистика</param>
        private static void FillProrertyList(IEnumerable <PositionItem> positions, PropertyInfo currentProp, bool isDanger, List <SystemProperty> valueList)
        {
            var positionItems = positions as PositionItem[] ?? positions.ToArray();

            //Содержит человеко-понятное имя свойства из атрибута
            var propTitle = currentProp.Name;

            try
            {
                var attrDisplName = currentProp.CustomAttributes.SingleOrDefault(x => x.AttributeType == typeof(DisplayNameAttribute));
                if (attrDisplName != null)
                {
                    propTitle = (string)attrDisplName.ConstructorArguments[0].Value;
                }
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("FillProrertyList() - {0} {1}", Resource.TextUnableReadAttributeDisplayName, propTitle), ex);
            }


            if (positionItems.Count() == 1)
            {
                var propObj    = currentProp.GetValue(positionItems.Single());
                var propObjStr = propObj == null ? string.Empty : Converter.GetStringFromObject(propObj);

                var newRow = new SystemProperty
                {
                    #region
                    PropertyType        = currentProp.PropertyType,
                    SystemName          = currentProp.Name,
                    PropertyTypeName    = Utils.GetTypeDescription(currentProp.PropertyType).Item1,
                    PropertyTypeComment = Utils.GetTypeDescription(currentProp.PropertyType).Item2,
                    Title    = propTitle,
                    IsDanger = isDanger,
                    Value    = propObjStr,
                    Comment  = Resource.TextSameInAllSelectedItems,
                    Tag      = propObjStr
                               #endregion
                };

                newRow.SetDescription();
                valueList.Add(newRow);
                return;
            }

            //=============   В случае, если для редактирования было выбрано больше двух строк  ==============
            //сюда будем складывать статистику
            var          differentValues = new List <string>(); // примеры значений текущего свойства
            const string strNull         = "null";
            const string strEmpty        = " - ";

            // собираем статистику по текущему свойству
            foreach (var item in positionItems)
            {
                var propObj       = currentProp.GetValue(item);
                var currentValues = propObj == null ? strNull : string.IsNullOrEmpty(propObj.ToString()) ? strEmpty : Converter.GetStringFromObject(propObj);
                if (differentValues.Contains(currentValues))
                {
                    continue;
                }
                differentValues.Add(currentValues);
            }

            var newMultiRow = new SystemProperty
            {
                #region
                PropertyType        = currentProp.PropertyType,
                SystemName          = currentProp.Name,
                PropertyTypeName    = Utils.GetTypeDescription(currentProp.PropertyType).Item1,
                PropertyTypeComment = Utils.GetTypeDescription(currentProp.PropertyType).Item2,
                Title    = propTitle,
                IsDanger = isDanger,
                Value    = string.Format("{0}", string.Join(", ", differentValues)),
                Comment  = (differentValues.Count < 2) ? Resource.TextSameInAllSelectedItems : string.Format("{0} {1}", Resource.TextNumberDistinctValues, +differentValues.Count),
                Tag      = (differentValues.Count == 1) ? differentValues[0].Replace(strNull, string.Empty).Replace(strEmpty, string.Empty) : string.Empty
                           #endregion
            };

            newMultiRow.SetDescription();
            valueList.Add(newMultiRow);
        }
Beispiel #9
0
        public SystemPropertyExcelObservable(SystemProperty systemProperty, DataServiceClient rtdClient)
        {
            SystemProperty = systemProperty;

            _rtdClient = rtdClient;
        }
 public void UnsubscribeToSystemValue(SystemProperty property)
 {
     _context.Post(state => {
         _systemValueSubscriptions.Remove(property);
     }, null);
 }
Beispiel #11
0
 public Field this[SystemProperty sys]
 {
     get { return(this.fields.FirstOrDefault(f => f.SystemProperty == sys)); }
 }
Beispiel #12
0
        public ActionResult SafePositionEdit(FormCollection formCollection)
        {
            var openPositionChangedPropertyList  = new List <SystemProperty>();
            var closePositionChangedPropertyList = new List <SystemProperty>();

            var strOpenId  = String.Empty; // содержит, перечисленные через запятую, уникальные идентификаторы открытых позиций, которые нужно обновить
            var strCloseId = String.Empty; // -- закрытых позиций, которые нужно обновить

            //Список ошибок валидации. Формат: Поле - коментарий к ошибке
            var validationErrorList = new List <Tuple <string, string> >();

            // Мапим коллекцию 'FormCollection' в списоки из элементов 'SystemProperty'
            // Элемент item имеет тут знаения типа "Open_Side", "Open_StopLoss" и т.п.
            foreach (var item in formCollection)
            {
                if (String.IsNullOrEmpty(formCollection[item.ToString()]))
                {
                    continue;  //Если строка оставлена пользователем пустой, тогда НЕ вносим это поле в список на редактирование
                }
                string type;
                string systemName;

                #region парсим тип свойства и его системное имя
                try
                {
                    type       = ((string)item).Split('_')[0];
                    systemName = ((string)item).Split('_')[1];
                }
                catch (Exception ex)
                {
                    Logger.Error(String.Format("SafePositionEdit() - не {0}", item), ex);
                    continue;
                }
                #endregion

                var prop = new SystemProperty
                {
                    SystemName = systemName,
                    Value      = formCollection[item.ToString()]
                };


                if (!prop.Validation())
                {
                    validationErrorList.Add(new Tuple <string, string>(systemName, Resource.ErrorMessageInvalid));
                    continue;
                }

                // Поскольку в следующем switch нет случаев 'OpenDanger_', 'CloseDanger_' и 'OtherDanger_' то в выборку на
                // редактирование попадут только "безопасные" поля сделок
                #region в зависимости от состояния сделки (открыта / закрыта), запихиваем её свойство в соответствующий список из 'SystemProperty'
                switch (type)
                {
                case "Open":
                    openPositionChangedPropertyList.Add(prop);
                    break;

                case "Close":
                    closePositionChangedPropertyList.Add(prop);
                    break;

                case "ItemsId":
                    if (systemName == "Open")
                    {
                        strOpenId = formCollection[item.ToString()];
                    }
                    if (systemName == "Close")
                    {
                        strCloseId = formCollection[item.ToString()];
                    }
                    break;
                }
                #endregion
            }

            var mess = string.Empty;

            mess += positionRepository.UpdateSavePositionItem(strOpenId, openPositionChangedPropertyList, PositionState.Opened) ?
                    string.Format("{0}: {1}", Resource.MessageMarketOrderUpdate, strOpenId) :
                    string.Format("{0}: {1} - {2}.", Resource.ErrorMessage, Resource.ErrorMessageUnableMarketOrderUpdate, strOpenId);
            mess += "   ";
            mess += positionRepository.UpdateSavePositionItem(strCloseId, closePositionChangedPropertyList, PositionState.Closed) ?
                    string.Format("{0}: {1}", Resource.MessageMarketOrderUpdate, strCloseId) :
                    string.Format("{0}: {1} - {2}.", Resource.ErrorMessage, Resource.ErrorMessageUnableMarketOrderUpdate, strCloseId);


            #region Если были найдены ошибки валидации возвращаем на ту же самую страницу редактирования, но уже со списком ошибок
            if (validationErrorList.Count > 0)
            {
                var idArray = String.Empty;
                if (!String.IsNullOrEmpty(strOpenId))
                {
                    idArray += strOpenId;
                }
                if (!String.IsNullOrEmpty(strCloseId))
                {
                    idArray += "," + strCloseId;
                }

                var positions = positionRepository.GetPositionsById(idArray.ToIntArrayUniform());
                var model     = new PositionsEditModel(positions)
                {
                    validationErrorList = validationErrorList
                };
                return(View("SafePositionEdit", model));
            }
            #endregion

            return(RedirectToAction("PositionList", new { message = mess, accountId = -1 }));
        }
Beispiel #13
0
 public SystemValueReceivedEventArgs(SystemProperty property, object value)
 {
     Property = property;
     Value    = value;
 }
 public bool updateSystemProperty(SystemProperty systemProperty)
 {
     return(client.isStatusCodeOK(client.put("system/properties/" + systemProperty.key, systemProperty, new Dictionary <string, string>())));
 }
 public bool createSystemProperty(SystemProperty systemProperty)
 {
     return(client.isStatusCodeOK(client.post("system/properties", systemProperty, new Dictionary <string, string>())));
 }
Beispiel #16
0
 /// <summary>
 /// Метод возвращает атрибут используемый в объекте по его представлению. Возвращается первый из найденных.
 /// </summary>
 /// <param name="prop">Представление атрибута.</param>
 /// <returns>Атрибут используемый в объекте по его представлению. Возвращается первый из найденных.</returns>
 private Field GetField(SystemProperty prop)
 {
     return(this.data.Keys.FirstOrDefault(f => f.SystemProperty == prop));
 }
 public void SendSystemValue(SystemProperty property, object value)
 {
     OnSystemValueReceived?.Invoke(this, new SystemValueReceivedEventArgs(property, value));
 }