Пример #1
0
        /// <summary>МЕТОД Заполняем Поля</summary>
        protected override void MET_LoadPole()
        {
            // Наименование документа
            VirtualPole _Pole = MET_CreateUserPole(8);

            _Pole.PROP_FormShablon = this;
            _Pole.PROP_VarId       = 1;
            // Ответ
            if (PROP_StadNodes == eStadNodes.Old)
            {
                _Pole.PROP_Text = MyMet.MET_GetPole(_Pole.PROP_VarId, PRO_StrProtokol);
            }
            _Pole.Name = "elePoleShabl_" + _Pole.PROP_VarId; // имя поля
            PUB_HashPole.Add(_Pole.Name, _Pole);             // записываем элемент в очередь

            // Имя файла
            _Pole = MET_CreateUserPole(8);
            _Pole.PROP_FormShablon = this;
            _Pole.PROP_VarId       = 2;
            // Ответ
            if (PROP_StadNodes == eStadNodes.Old)
            {
                _Pole.PROP_Text = MyMet.MET_GetPole(_Pole.PROP_VarId, PRO_StrProtokol);
            }
            _Pole.Name = "elePoleShabl_" + _Pole.PROP_VarId; // имя поля
            PUB_HashPole.Add(_Pole.Name, _Pole);             // записываем элемент в очередь
        }
Пример #2
0
        } // func lOperInfo

        /// <summary>Lua Функция. Удаление данных из поля xInfo, таблицы Oper</summary>
        /// <param name="pVarId">VarId поля с кодом операции</param>
        /// <param name="pTag">Имя ключа тега</param>
        /// <returns>Возвращаем успех или не успех добавления/изменения данных</returns>
        private bool lOperInfoDel(int pVarId, string pTag)
        {
            // Находим наше поле
            VirtualPole _VirtualPole = PUB_Pole.PROP_FormShablon.GetPole(pVarId);

            // Проверяем на соответствие типу  UserPole_MultyList
            if (_VirtualPole is UserPole_MultyList _Pole)
            {
                _Pole.MET_DeleteInfo(pTag);
                return(true);
            }
            return(false);
        } // func lOperInfo
Пример #3
0
        /// <summary>КОНСТРУКТОР</summary>
        /// <param name="pPole">Поле с которым работаем</param>
        public UserWindow_Lua(VirtualPole pPole)
        {
            InitializeComponent();

            PART_Log.PART_TextBox.MaxHeight = 80;
            PART_Log.VerticalAlignment      = VerticalAlignment.Stretch;
            // Родительское окно
            if (Owner == null)
            {
                Owner = Application.Current.MainWindow;
            }
            // Настраиваем положение окна
            Left = 0;
            if (Owner != null)
            {
                Top        = 15;
                Height     = Owner.Height + Owner.Top - 15;
                Owner.Left = Width - 15;
#if DEBUG
                //   Left = Owner.Left + Owner.Width + 500;
#endif
            }

            // Находим вопрос шаблона
            PRI_Pole         = pPole;
            PRI_Document     = pPole.PROP_Docum;
            PRI_Shablon      = PRI_Document.PROP_Shablon.Find(x => x.PROP_VarId == pPole.PROP_VarId);
            this.DataContext = PRI_Shablon;

            // Настраиваем Lua поле
            PRI_Regular  = @"(lPole|Pole|lMessage|lKbolInfoAdd|lKbolInfoDel|lPolePDate|";
            PRI_Regular += "lOperInfo|lOperInfoDel|lRead|lNew|lDateIf|lTimeGosp|lSqlToStr|";
            PRI_Regular += "lKbolInfoOms|lLog|lVisiblOn|lVisiblOff|lNecesOn|lNecesOf|";
            PRI_Regular += "lTextClear|";
            PRI_Regular += "gKorpus|gKL|gFIO|gDR|gUser|gUserName|gPol|gLpu|gOtd|gCodApstac|";
            PRI_Regular += "OnCreat|OnChange|OnBeforeSave|OnSave|";
            PRI_Regular += "PROP_Text|OnChange|OnBeforeSave|OnSave)";

            PART_FCTextBox                  = new FastColoredTextBox();
            PART_FCTextBox.Language         = FastColoredTextBoxNS.Language.Lua;
            PART_FCTextBox.TextChanged     += Ts_TextChanged;
            PART_FCTextBox.WordWrap         = true;
            PART_WindowsFormsHostFCTB.Child = PART_FCTextBox;

            // Заполняем список вопросов шаблона боковой панели
            PART_RadListBox.ItemsSource   = PRI_Document.PROP_Shablon;
            PART_RadListBox.SelectedValue = PRI_Shablon;

            // Делегаты для функции lLog
            MyGlo.Event_sLuaLog = MET_LogAdd;
        }
Пример #4
0
 /// <summary>МЕТОД Проверка перед сохранением</summary>
 public virtual bool MET_Verification()
 {
     // Проверяем ответы на правильность заполнений
     // ReSharper disable once LoopCanBeConvertedToQuery
     foreach (DictionaryEntry _DiEnt in PUB_HashPole)
     {
         VirtualPole _Pole = (VirtualPole)_DiEnt.Value;                  // наше поле с ответом
         if (!_Pole.MET_Verification())                                  // сообщение об ошибки выдает само поле
         {
             return(false);
         }
     }
     return(true);
 }
Пример #5
0
 /// <summary>МЕТОД Отчищаем шаблон</summary>
 public virtual void MET_Clear()
 {
     foreach (DictionaryEntry _DictEn in PUB_HashPole)
     {
         try
         {
             VirtualPole _Pole = (VirtualPole)_DictEn.Value;             // элемент поля
             _Pole.PROP_Text           = _Pole.PROP_DefaultText;         // Значение по умолчанию
             _Pole.PROP_ForegroundText = Brushes.Gray;                   // Окрашиваем текст в серый цвет (текст по умолчанию)
         }
         catch
         {
         }
     }
 }
Пример #6
0
        } // func lPolePDate

        /// <summary>Lua Функция. Добавление/изменение данных в поле xInfo, таблицы Oper</summary>
        /// <param name="pVarId">VarId поля с кодом операции</param>
        /// <param name="pTag">Имя ключа тега</param>
        /// <param name="pValue">Значение, по умолчанию, берем из поля</param>
        /// <returns>Возвращаем успех или не успех добавления/изменения данных</returns>
        private bool lOperInfo(int pVarId, string pTag, object pValue = null)
        {
            // Находим наше поле
            VirtualPole _VirtualPole = PUB_Pole.PROP_FormShablon.GetPole(pVarId);

            // Проверяем на соответствие типу  UserPole_MultyList
            if (_VirtualPole is UserPole_MultyList)
            {
                // Значение
                object             _Value = pValue ?? PUB_Pole.PROP_Text;
                UserPole_MultyList _Pole  = (UserPole_MultyList)_VirtualPole;
                _Pole.MET_ChangeInfo(pTag, _Value);
                return(true);
            }
            return(false);
        } // func lOperInfo
Пример #7
0
        } // func lOperInfo

        /// <summary>Lua Функция. Расчет времени госпитализации</summary>
        /// <returns>Возвращаем расчетное время госпитализации</returns>
        private string lTimeGosp()
        {
            // Находим отделение госпитализации
            VirtualPole _PoleOtd = PUB_Pole.PROP_FormShablon.GetPole(3);
            // Находим дату госпитализации
            VirtualPole _PoleDate = PUB_Pole.PROP_FormShablon.GetPole(4);
            // Время по умолчанию
            string _Time = "9:00";

            if (_PoleOtd.PROP_Text != "" && _PoleDate.PROP_Text != "")
            {
                try
                {
                    int _Otd = int.Parse(_PoleOtd.PROP_Text.Split('.')[0]);
                    _Time = MySql.MET_QueryStr(MyQuery.MET_varTimeGosp(_Otd, _PoleDate.PROP_Text));
                }
                catch
                {
                    _Time = "9:00";
                }
            }
            return(_Time);
        } // func lTimeGosp
Пример #8
0
 /// <summary>МЕТОД Выбираем вопрос</summary>
 private void MET_SelectedShablon()
 {
     PRI_Pole            = PRI_Document.PROP_FormShablon.GetPole(PRI_Shablon.PROP_VarId);
     DataContext         = PRI_Shablon;
     PART_FCTextBox.Text = PRI_Shablon.PROP_xLua;
 }
Пример #9
0
 /// <summary>КОНСТРУКТОР 2</summary>
 public UserLua_Standart(VirtualPole pPole)
 {
     PRI_Env  = PRI_Lua.CreateEnvironment();
     PUB_Pole = pPole;
     MET_RegisterFunction();
 }
Пример #10
0
        /// <summary>МЕТОД Формируем Форму Шаблона</summary>
        public override void MET_CreateForm()
        {
            PRI_StackPanel.Orientation = Orientation.Vertical;
            if (PROP_Docum.PROP_ListShablon == null)
            {
                PROP_Docum.PROP_ListShablon = UserListShablon.MET_FactoryListShablon(PROP_TipProtokol.PROP_TipDocum, PRO_NomerShablon);
            }
            // Исключение при выполнении запроса к базе
            try
            {
                PUB_HashPole = new SortedList();                                // список полей
                Background   = Brushes.GhostWhite;
                // Если открываем заполненый протокол
                if (!PROP_NewProtokol)
                {
                    PRO_StrProtokol = PROP_Docum.PROP_Protokol.PROP_Protokol;
                    PROP_Cod        = PROP_Docum.PROP_Protokol.PROP_Cod;
                    // Старый шаблон
                    PROP_StadNodes = eStadNodes.Old;
                }
                else // Пытаемся найти последний протокол по KL и коду шаблона
                {
                    if (MySql.MET_DsAdapterFill(MyQuery.MET_Protokol_Select_8(MyGlo.KL, PRO_NomerShablon, PROP_TipProtokol.PROP_Prefix), PROP_TipProtokol.PROP_Protokol) > 0)
                    {
                        // Новый шаблон, с предыдушими данными
                        PROP_StadNodes  = eStadNodes.NewPerw;
                        PRO_StrProtokol = MyGlo.DataSet.Tables[PROP_TipProtokol.PROP_Protokol].Rows[0]["Protokol"].ToString();
                    }
                    else
                    {
                        // Новый шаблон
                        PROP_StadNodes = eStadNodes.New;
                    }
                }

                // ---- Дата осмотра
                PROP_Format = PROP_Docum.PROP_ListShablon.PROP_MyFormat;
                VirtualPole _Date = MET_CreateUserPole(3);
                _Date.PROP_Necessarily = true;
                _Date.PROP_Description = PROP_Format.MET_If("pDateT") ? PROP_Format.PROP_Value["pDateT"].ToString() : "Дата";
                // Если старый протокол
                if (!PROP_NewProtokol)
                {
                    _Date.PROP_Text = PROP_Docum.PROP_Protokol.PROP_pDate.ToString();
                }
                else
                {
                    // Если новый шаблон
                    if (PROP_Format.MET_If("pDateD"))
                    {
                        switch (PROP_Format.PROP_Value["pDateD"].ToString())
                        {
                        case "pol":                                                             // если посещение поликлиники
                            _Date.PROP_Text = MyMet.MET_ParseDat(MyGlo.HashAPAC["DP"]).ToString();
                            break;

                        default:
                            _Date.PROP_Text = DateTime.Today.ToString();                        // текущий день
                            break;
                        }
                    }
                    else
                    {
                        _Date.PROP_Text = DateTime.Today.ToString();                            // текущий день
                    }
                }
                _Date.PROP_DefaultText = DateTime.Today.ToString();             // начальное значение
                _Date.PROP_ValueMin    = Convert.ToDateTime("01/01/2011");      // минимальное число - 2011 год
                _Date.Name             = "DateOsmotr";                          // имя поля
                _Date.PROP_FormShablon = this;                                  // ссылка на форму
                PUB_HashPole.Add(_Date.Name, _Date);                            // записываем элемент в очередь
                PRI_StackPanel.Children.Add(_Date);                             // добавляем элемент на форму
                // Перебераем все вопросы
                MET_LoadPole();
                // Деактивируем кнопку "Сохранить"
                PROP_EditShablon = false;
                // Всё шаблон создан!
                PROP_Created = true;
            }
            catch
            {
                // ignored
            }
        }
Пример #11
0
        /// <summary>МЕТОД Заполняем Поля</summary>
        protected override void MET_LoadPole()
        {
            // Пробегаемся по вопросам шаблона
            foreach (UserShablon _Shablon in PROP_Docum.PROP_Shablon)
            {
                try
                {
                    MyFormat _Format = new MyFormat(_Shablon.PROP_xFormat); // формат
                    // Если поле нужно проппустить, то следующее поле
                    if (_Format.MET_If("hide") || _Format.MET_If("old"))
                    {
                        continue;
                    }
                    VirtualPole _Pole = MET_CreateUserPole(_Shablon.PROP_Type);                                             // создаем поле, соответствующего типа
                    _Pole.PROP_FormShablon = this;                                                                          // ссылка на форму
                    _Pole.PROP_Shablon     = _Shablon.PROP_ID;                                                              // номер шаблона, как минимум нужен для Картинок
                    _Pole.PROP_Description = _Shablon.PROP_Name;                                                            // вопрос
                    _Pole.PROP_VarId       = _Shablon.PROP_VarId;                                                           // номер индификатора VarId
                    _Pole.PROP_Format      = _Format;                                                                       // формат поля
                    _Pole.PROP_Necessarily = _Format.MET_If("nec");                                                         // обязательное поле
                    _Pole.IsEnabled        = !_Format.MET_If("disab");                                                      // запрет на редактирование
                    _Pole.PROP_DefaultText = MET_ReplaceProp(_Shablon.PROP_ValueStart, PRO_NomerShablon, _Pole.PROP_VarId); // Значение ответа по умолчанию
                    // Ответ
                    if (PROP_StadNodes == eStadNodes.New ||
                        (PROP_StadNodes == eStadNodes.NewPerw && _Format.MET_If("nprev")))
                    {
                        // Значения по умолчанию
                        _Pole.PROP_Text = _Pole.PROP_DefaultText;
                    }
                    else
                    {
                        // Значения из протокола (либо eStadNodes.Old, либо eStadNodes.NewPerw)
                        _Pole.PROP_Text = MyMet.MET_GetPole(_Pole.PROP_VarId, PRO_StrProtokol);
                    }
                    // Если новый протокол, то текст серый (значение по умолчанию)
                    if (PROP_NewProtokol)
                    {
                        _Pole.PROP_ForegroundText = Brushes.Gray;
                    }
                    _Pole.Name = "elePoleShabl_" + _Pole.PROP_VarId; // имя поля

                    // Lua
                    if (!string.IsNullOrEmpty(_Shablon.PROP_xLua))
                    {
                        _Pole.PROP_Lua = new UserLua_Standart(_Pole)
                        {
                            PROP_ChankText = _Shablon.PROP_xLua
                        };
                        _Pole.PROP_Lua.MET_StartLua();
                    }
                    PUB_HashPole.Add(_Pole.Name, _Pole); // записываем элемент в очередь
                    // Указатель на принадлежность к разделу

                    string _Maska = _Shablon.PROP_Maska;
                    // Добавляем элемент в ...
                    if (_Maska == "")
                    {
                        PRI_StackPanel.Children.Add(_Pole); // добавляем элемент на форму
                    }
                    else
                    {
                        ((VirtualPole)PUB_HashPole["elePoleShabl_" + _Maska]).MET_AddElement(_Pole);
                    }
                    // добавляем элемент в родительское поле

                    _Pole.MET_Inicial(); // инициализация поля (если есть)
                }
                catch
                {
                    // ignored
                }
            }
            Children.Add(PRI_StackPanel);

            // Ещё раз пробегаем по полям и запускаем Lua код
            foreach (DictionaryEntry _DiEnt in PUB_HashPole)
            {
                var _PoleLua = (VirtualPole)_DiEnt.Value;
                _PoleLua?.PROP_Lua?.MET_OnCreat();
            }
        }
Пример #12
0
 /// <summary>МЕТОД Формируем поля</summary>
 /// <param name="pVirtualPole">Поле</param>
 /// <param name="pText">Текст ответа</param>
 private void MET_CreatePole(VirtualPole pVirtualPole, string pText)
 {
     pVirtualPole.PROP_Text = pText;
     pVirtualPole.PROP_DefaultText = pText;
 }