예제 #1
0
        public static ScriptOutput TimeDesc(ScriptInput si)
        {
            DateTime time1 = Convert.ToDateTime(si.GetValue("time1"));
            DateTime time2 = Convert.ToDateTime(si.GetValue("time2"));

            ScriptOutput so = new ScriptOutput();
            TimeSpan     ts = time1 - time2;

            so.SetValue("TotalHours", ts.TotalHours);
            so.SetValue("TotalMilliseconds", ts.TotalMilliseconds);
            so.SetValue("TotalMinutes", ts.TotalMinutes);
            so.SetValue("TotalSeconds", ts.TotalSeconds);
            so.SetValue("TotalDays", ts.TotalDays);
            return(so);
        }
예제 #2
0
        public static ScriptOutput SetBoolValue(ScriptInput idx)
        {
            ScriptOutput so = new ScriptOutput();

            so.SetValue("result", Convert.ToBoolean(idx.GetValue("value")));
            return(so);
        }
예제 #3
0
        public static ScriptOutput GetNowTime(ScriptInput si)
        {
            ScriptOutput so = new ScriptOutput();

            so.SetValue("NowTime", DateTime.Now);
            return(so);
        }
예제 #4
0
        public static ScriptOutput AddFloat(ScriptInput idx)
        {
            ScriptOutput so = new ScriptOutput();

            so.SetValue("result", Convert.ToDouble(idx.GetValue("f1")) + Convert.ToDouble(idx.GetValue("f2")));
            idx.Write("AddFloat结果:" + so.GetValue("result").ToString());
            return(so);
        }
예제 #5
0
        public static ScriptOutput AddInt(ScriptInput idx)
        {
            ScriptOutput so = new ScriptOutput();

            so.SetValue("result", (Convert.ToInt32(idx.GetValue("d1")) + Convert.ToInt32(idx.GetValue("d2"))));
            idx.Write("AddInt结果:" + so.GetValue("result").ToString());
            return(so);
        }
예제 #6
0
        public static ScriptOutput Add(ScriptInput scriptInput)
        {
            int          add1         = Convert.ToInt32(scriptInput.GetValue("add1"));
            int          add2         = Convert.ToInt32(scriptInput.GetValue("add2"));
            ScriptOutput scriptOutput = new ScriptOutput();

            scriptOutput.SetValue("result", add1 + add2);
            return(scriptOutput);
        }
 /// <summary>
 /// 初始化
 /// </summary>
 protected override void Init(IScriptLayout ml)
 {
     if (ml.IPropertys.Count > 0)
     {
         foreach (var item in ml.IPropertys)
         {
             ScriptOutput so = new ScriptOutput();
             so.SetValue(item.Name, item.Value);
             manager.SetValue(item.Id, so);
         }
     }
 }
        /// <summary>
        /// 设置值
        /// </summary>
        /// <param name="ib"></param>
        /// <param name="sm"></param>
        /// <returns></returns>
        protected static IItemBox DoFunction(ItemBox itembox, ScriptObjectManager sm, WriteStreamCallBack wrs)
        {
            LineItemBox ib = itembox as LineItemBox;

            if (ib.BoxType == ItemBoxEnum.IF)
            {
                ScriptInput si = new ScriptInput();
                //si.WriteStream += wrs;
                foreach (var item in ib.InputDatas)
                {
                    if (item.PIEnum != ParaItemEnum.OUTPUT && item.PIEnum != ParaItemEnum.INPUT && item.PIEnum != ParaItemEnum.NULL)
                    {
                        si.SetValue(item.Name, getValue(item as ParatItem, sm));
                    }
                }
                if (Convert.ToBoolean(si.GetFirst()))
                {
                    return(ib.Next(0));
                }
                else
                {
                    return(ib.Next(1));
                }
            }
            else if (ib.BoxType == ItemBoxEnum.SET)
            {
                ScriptOutput so = new ScriptOutput();
                so.SetValue(ib.InputDatas[1].Name, getValue(ib.InputDatas[1] as ParatItem, sm));
                //so.SetValue(ib.InputDatas[1].Name, ib.InputDatas[1].Value);
                sm.SetValue(ib.Id, so);
                return(ib.Next(0));
            }
            else
            {
                ScriptInput si = new ScriptInput();
                si.WriteStream += wrs;
                foreach (var item in ib.InputDatas)
                {
                    if (item.PIEnum != ParaItemEnum.OUTPUT && item.PIEnum != ParaItemEnum.INPUT && item.PIEnum != ParaItemEnum.NULL)
                    {
                        si.SetValue(item.Name, getValue(item as ParatItem, sm));
                    }
                }
                ScriptOutput so = (ib as ItemBox).DoScriptFunction(si);
                if (so != null)
                {
                    sm.SetValue(ib.Id, so);
                }
                return(ib.Next(0));
            }
        }
        /// <summary>
        /// 获取whilebox的迭代值
        /// </summary>
        /// <param name="whilebox"></param>
        /// <param name="startidx"></param>
        /// <returns></returns>
        protected int GetWhileBoxIdx(ItemBox whilebox, int startidx)
        {
            int          returnindex = 0;
            ScriptOutput soutidx     = manager.GetValue(whilebox.Id);

            if (soutidx == null)
            {
                ScriptOutput whileboxidx = new ScriptOutput();
                whileboxidx.SetValue("Idx", startidx);
                manager.SetValue(whilebox.Id, whileboxidx);
                returnindex = startidx;
            }
            else
            {
                int index = (int)soutidx.GetValue("Idx");
                manager.GetValue(whilebox.Id).SetValue("Idx", index++);
                returnindex = index++;
                soutidx.SetValue("Idx", returnindex);
            }
            whilebox.OutDatas[0].Value = returnindex;
            SetValue(whilebox.OutDatas[0] as ParatItem);
            return(returnindex);
        }
예제 #10
0
        public static ScriptOutput EqualDouble(ScriptInput si)
        {
            double int1   = Convert.ToDouble(si.GetValue("float1"));
            double int2   = Convert.ToDouble(si.GetValue("float2"));
            string option = Convert.ToString(si.GetValue("option"));
            bool   result = false;

            switch (option)
            {
            case ">":
                result = int1 > int2;
                break;

            case "<":
                result = int1 < int2;
                break;

            case "=":
                result = int1 == int2;
                break;

            case ">=":
                result = int1 >= int2;
                break;

            case "<=":
                result = int1 <= int2;
                break;

            default:
                break;
            }
            ScriptOutput so = new ScriptOutput();

            so.SetValue("result", result);
            return(so);
        }
        /// <summary>
        /// 运行脚本
        /// </summary>
        /// <param name="ml"></param>
        public static void RunScript(MainLayout ml, WriteStreamCallBack wrs, IList <IPropertyIt> propertys, WriteStreamCallBack runover = null)
        {
            ScriptObjectManager sm = new ScriptObjectManager();

            if (propertys.Count > 0)
            {
                foreach (var item in propertys)
                {
                    ScriptOutput so = new ScriptOutput();
                    so.SetValue(item.Name, item.Value);
                    sm.SetValue(item.Id, so);
                }
            }
            try
            {
                IItemBox currentib = (ml.MainIb as LineItemBox).Next(0);
                IItemBox next      = null;
                while (currentib != null)
                {
                    ml.SetFunctionBoxRun(System.Windows.Media.Colors.Red, currentib);
                    next = DoFunction(currentib as ItemBox, sm, wrs);
                    ml.SetFunctionBoxStop(System.Windows.Media.Colors.White, currentib);
                    currentib = next;
                }
            }
            catch (Exception ex)
            {
                wrs?.Invoke("脚本运行失败");
                Log.Write(new LogMessage("脚本运行失败", ex));
            }
            finally
            {
                sm.Dispose();
                sm = null;
                runover?.Invoke("程序运行结束");
            }
        }