Beispiel #1
0
        public ActionResult AddPropDialog(int idNode)
        {
            //получим OPC сервера
            var OpcServers = tagConfigurator.getOpcServersName();

            ViewBag.OpcServers = OpcServers;
            //строка подключения
            //var connectionStr = jstree.getConnectionProp(idNode);
            //ID сервера к которому относится узел
            var OPCId = jstree.getOPCID();
            //получим родительский узел
            var parentGroup = tagConfigurator.getParentGroup(idNode);

            //каналы
            ViewBag.SelectChannel = tagConfigurator.getChannels();
            var model         = new AddPropViewModel();
            var userModel     = new AddUserPropModel();
            var standartModel = new AddStandartPropModelHelp();

            //проинициализируем объекты пользовательских и стандартных свойств
            userModel.selectValue        = 9;
            userModel.BoolenType         = true;
            userModel.Id                 = idNode;
            standartModel.selectValueStd = 1;
            standartModel.ParentGroup    = parentGroup;
            standartModel.Id             = idNode;
            standartModel.Opc            = OPCId;

            model.userPropModel     = userModel;
            model.standartPropModel = standartModel;
            //ViewBag.ModulesToAdd = tagConfigurator.AddModuleDialog();
            //ViewBag.ActiveModules = tagConfigurator.GetConnectedModules();
            return(PartialView("addPropPartial", model));
        }
Beispiel #2
0
        public ActionResult AddPropDialogTypedNode(int idNode)
        {
            var OpcServers  = tagConfigurator.getOpcServersName();
            var parentGroup = tagConfigurator.getParentGroup(idNode);

            ViewBag.OpcServers    = OpcServers;
            ViewBag.SelectChannel = tagConfigurator.getChannels();
            ViewBag.ParentGroup   = parentGroup;
            var userModel = new AddUserPropModel();

            userModel.selectValue = 9;
            userModel.BoolenType  = true;
            userModel.Id          = idNode;
            return(PartialView("addPropPartialTypedNode", userModel));
        }
Beispiel #3
0
        //[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
        public ActionResult AddUserProp(AddUserPropModel model)
        {
            //Название совпадает со стандартным
            List <string> propsNames = new List <string> {
                "special", "Id", "Name", "Opc", "Connection", "Alarm_IsPermit", "HiHiText", "HiText", "NormalText", "LoText", "LoLoText", "HiHiSeverity", "HiSeverity", "LoSeverity",
                "LoLoSeverity", "ControllerType", "RealType", "RealType", "Register", "AccessType", "Order", "InMin", "InMax", "OutMin", "OutMax",
                "History_IsPermit", "RegPeriod", "Deadbend", "IsSpecialTag", "ChannelType", "InterPollPause", "MaxErrorsToSwitchChannel",
                "MaxErrorsToBadQuality", "TimeTryGoBackToPrimary", "IpAddress", "Port", "ReadTimeout", "WriteTimeout", "PortName", "BaudRate", "Parity",
                "StopBits", "Address", "Driver", "RetrCount", "ParentGroup", "PrimaryChannel", "SecondaryChannel", "Start", "Count", "Function", "Type", "Connect"
            };

            if (propsNames.IndexOf(model.Name) != -1)
            {
                ModelState.AddModelError("Name", "Совпадает с названием стандартного свойства");
            }
            if (model.selectValue == 10)
            {
                var validString = tagConfigurator.checkUserStrProp(model.StringValue);
                if (validString == false)
                {
                    ModelState.AddModelError("StringValue", "Строка содержит запрещенные символы");
                }
            }
            Dictionary <int, string> standartPropTypes = new Dictionary <int, string>
            {
                { 1, "byte" },
                { 2, "word" },
                { 3, "dword" },
                { 4, "shortInt" },
                { 5, "smallInt" },
                { 6, "longInt" },
                { 7, "float" },
                { 8, "double" },
                { 9, "bool" },
                { 10, "string" }
            };

            var userProps = tagConfigurator.getUserProps(model.Id);
            //var standartProps = tagConfigurator.getStandartProps(model.Id);
            var upgradeName = model.Name + "_" + standartPropTypes[model.selectValue];

            if (!String.IsNullOrEmpty(model.Name))
            {
                if (userProps.ContainsKey(upgradeName))
                {
                    ModelState.AddModelError("Name", "Свойство с таким названием уже добавлено");
                }
            }

            if (ModelState.IsValid)
            {
                var propName = model.Name;
                //var stdTypeName = ModelState.Keys.Last();
                var propValue = ModelState.Values.Last().Value.AttemptedValue;

                //PropertyInfo pi = model.GetType().GetProperty(stdTypeName);

                string value = "";
                //подготовим свойство для записи в строку в зависимости от типа, который выбрал пользователь
                switch (model.selectValue)
                {
                //строковое
                case 10:
                    value = "\"" + propValue + "\"";
                    break;

                //булево
                case 9:
                    value = (model.BoolenValue).ToString().ToLower();
                    break;

                //float double
                case 7:
                case 8:
                    value = propValue.Replace(",", ".");
                    break;

                //value = propValue.Replace(",", ".");
                //break;
                default:
                    value = propValue;
                    break;
                }
                //в дополнение к имени, которое вписал пользователь, будет прописан тип, выбранный юзером
                //дабы суметь валидировать измененное значение
                string forWrite = ",\"" + propName + "_" + standartPropTypes[model.selectValue] + "\":" + value;
                //пишем в базу
                tagConfigurator.addProp(forWrite, model.Id);
                //даем знать странице, что диалоговое окно надо надо закрыть, контейнер со свойствами перерисовать
                //улетает в checkValid
                var data = new { valid = true };
                return(Json(data, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(PartialView("addUserPropPartial", model));
            }
        }
Beispiel #4
0
        public ActionResult ChangeRegExp(string typeNumber)
        {
            var model = new AddUserPropModel();

            model.BoolenType   = false;
            model.ByteType     = false;
            model.WordType     = false;
            model.DWordType    = false;
            model.ShortIntType = false;
            model.SmallIntType = false;
            model.LongIntType  = false;
            model.FloatType    = false;
            model.DoubleType   = false;
            model.StringType   = false;


            switch (typeNumber)
            {
            case "1":
            {
                model.ByteType = true;
                break;
            }

            case "2":
            {
                model.WordType = true;
                break;
            }

            case "3":
            {
                model.DWordType = true;
                break;
            }

            case "4":
            {
                model.ShortIntType = true;
                break;
            }

            case "5":
            {
                model.SmallIntType = true;
                break;
            }

            case "6":
            {
                model.LongIntType = true;
                break;
            }

            case "7":
            {
                model.FloatType = true;
                break;
            }

            case "8":
            {
                model.DoubleType = true;
                break;
            }

            case "9":
            {
                model.BoolenType = true;
                break;
            }

            case "10":
            {
                model.StringType = true;
                break;
            }
            }
            return(PartialView("ChangeInputUserPropPartial", model));
        }