Exemplo n.º 1
0
        public static void GenLoad(StreamWriter sw, string baseTable, VarDefine varDefine, Bean.VarData varData, Property.DataOutputFlags flags)
        {
            switch (varDefine.TypeNow)
            {
            case VarDefine.EType.Date:
                // 先使用string. 看看lua怎么用。
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varData.Value}\"");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varDefine.Default}\"");
                }
                break;

            case VarDefine.EType.Int:
            case VarDefine.EType.Float:
            case VarDefine.EType.Double:
            case VarDefine.EType.Long:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {varData.Value}");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {varDefine.Default}");
                }
                break;

            case VarDefine.EType.Enum:
                var enumClassName = varDefine.FullNamePinyin().Replace('.', '_');
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = Config.Enums.{enumClassName}.{varData.ValuePinyin}");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = Config.Enums.{enumClassName}.{varDefine.DefaultPinyin}");
                }
                break;

            case VarDefine.EType.String:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varData.Value}\"");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varDefine.Default}\"");
                }
                else
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"\"");
                }
                break;

            case VarDefine.EType.List:
                sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {{}}");
                foreach (var bean in varData.Beans)
                {
                    var beanVarName = $"{baseTable}.{varDefine.NamePinyin}[{bean.RowIndex + 1}]";
                    sw.WriteLine($"{beanVarName} = {{}}");
                    GenLoad(sw, beanVarName, varDefine.Reference, bean, flags);
                }
                break;
            }
        }
Exemplo n.º 2
0
        public static void GenLoad(StreamWriter sw, string prefix, VarDefine varDefine, Bean.VarData varData, Property.DataOutputFlags flags)
        {
            switch (varDefine.TypeNow)
            {
            case VarDefine.EType.Date:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: new Date(\"{varData.Value}\"),");
                }
                break;

            case VarDefine.EType.Double:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Enum:
                sw.WriteLine($"{prefix}V{varDefine.Name}: {varDefine.FullName().Replace('.', '_')}.{varData.Value}");
                break;

            case VarDefine.EType.Float:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Int:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Long:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.String:
                var strValue = (null == varData.Value) ? "" : varData.Value;
                sw.WriteLine($"{prefix}V{varDefine.Name}: \"{strValue}\",");
                break;

            case VarDefine.EType.List:
                sw.WriteLine($"{prefix}V{varDefine.Name}: [");
                foreach (var bean in varData.Beans)
                {
                    sw.Write(prefix + "    ");
                    GenLoad(sw, prefix + "    ", varDefine.Reference, bean, flags);
                    sw.WriteLine(",");
                }
                sw.WriteLine($"{prefix}],");
                break;
            }
        }
Exemplo n.º 3
0
        public override void VerifyCell(VerifyParam p)
        {
            int colListStart = GridData.FindColumnListStart(p.Grid, p.ColumnIndex);

            if (colListStart < 0)
            {
                return; // Not A List Item
            }
            int colListEnd = GridData.FindColumnListEnd(p.Grid, p.ColumnIndex);

            if (colListStart < 0)
            {
                return; // Not A List Item. FindColumnListStart 应该足够判断了,都判断一下吧。
            }
            // collect list item cell
            int colBeanBegin           = colListStart + 1;
            List <GridData.Cell> cells = new List <GridData.Cell>();

            while (colBeanBegin < colListEnd)
            {
                colBeanBegin = GridData.DoActionUntilBeanEnd(p.Grid, colBeanBegin, colListEnd, (int col) =>
                {
                    ColumnTag tag = (ColumnTag)p.Grid.GetColumn(col).ColumnTag;
                    if (tag.Tag != ColumnTag.ETag.Normal)
                    {
                        return;
                    }

                    if (tag.Path.Count == p.ColumnTag.Path.Count && // same level.
                        tag.PathLast.Define == p.ColumnTag.PathLast.Define)    // same var
                    {
                        cells.Add(p.Grid.GetRow(p.RowIndex).Cells[col]);
                    }
                });
            }
            ColumnTag tagListEnd  = p.Grid.GetColumn(colListEnd).ColumnTag;
            int       pathListVar = tagListEnd.Path.Count - 1;

            Bean.VarData varList = tagListEnd.PathLast.Define.Parent.Document.Beans[p.RowIndex]
                                   .GetVarData(0, tagListEnd, pathListVar);
            int varListCount = varList == null ? 0 : varList.Beans.Count;

            // count same oldValue
            HashSet <GridData.Cell> same = new HashSet <GridData.Cell>();

            if (p.OldValue != null)
            {
                // load时 varListCount 包含所有数据。
                // Validating 时,如果是新增的,varListCount少1。
                // 计数 oldValue 不需要判断新数据,这里不需要额外判断。
                for (int i = 0; i < varListCount; ++i)
                {
                    var c = cells[i];
                    if (c == p.Cell)
                    {
                        continue;
                    }

                    string str = c.Value;
                    if (p.OldValue.Equals(str))
                    {
                        same.Add(c);
                    }
                }
                if (same.Count == 1)
                {
                    p.FormMain.FormError.RemoveError(same.First(), this);
                }
                same.Clear();
            }

            // count same newValue
            // load时 varListCount 包含所有数据。
            // Validating 时,如果是新增的,varListCount少1。当前新增cell在后面Add。所以不需要特别处理。
            for (int i = 0; i < varListCount; ++i)
            {
                var c = cells[i];
                if (c == p.Cell)
                {
                    continue;
                }

                string str = c.Value;
                if (p.NewValue.Equals(str))
                {
                    same.Add(c);
                }
            }

            // report
            if (same.Count >= 1)
            {
                same.Add(p.Cell);
                p.FormMain.FormError.AddError(same, this, ErrorLevel.Error, Name + " 重复啦。");
            }
            else
            {
                p.FormMain.FormError.RemoveError(p.Cell, this);
            }
        }