Skip to content

Commit e1d95a1

Browse files
authored
Merge pull request #503 from FastReports/sync_branch_2022.3.14
FastReport.OpenSource 2022.3.14
2 parents 1adb65a + 67b5beb commit e1d95a1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1313
-444
lines changed

FastReport.Base/Data/JsonConnection/JsonDataSourceConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using FastReport.Data.JsonConnection.JsonParser;
1+
using FastReport.Utils.Json;
22
using System;
33
using System.Data;
44
using System.Data.Common;

FastReport.Base/Data/JsonConnection/JsonTableDataSource.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using FastReport.Data.JsonConnection.JsonParser;
2-
using FastReport.Utils;
1+
using FastReport.Utils;
2+
using FastReport.Utils.Json;
33
using System;
44
using System.Collections;
55
using System.Collections.Generic;

FastReport.Base/Export/Html/HTMLExportTemplates.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,27 +115,27 @@ public HtmlTemplates()
115115
Part("input {{text-align: center}}");
116116
Part(".nav {{ font-size : 9pt; color : #283e66; font-weight : bold; text-decoration : none;}}");
117117
Part("--></style><script language=\"javascript\" type=\"text/javascript\"><!--");
118-
Part(" var frPgCnt = {0}; var frRepName = \"{1}\"; var frMultipage = {2}; var frPrefix=\"{3}\";");
118+
Part(" var frCurPage = 1; var frPgCnt = {0}; var frRepName = \"{1}\"; var frMultipage = {2}; var frPrefix=\"{3}\";");
119119
Part(" function DoPage(PgN) {{");
120-
Part(" if ((PgN > 0) && (PgN <= frPgCnt) && (PgN != parent.frCurPage)) {{");
120+
Part(" if ((PgN > 0) && (PgN <= frPgCnt) && (PgN != frCurPage)) {{");
121121
Part(" if (frMultipage > 0) parent.mainFrame.location = frPrefix + PgN + \".html\";");
122122
Part(" else parent.mainFrame.location = frPrefix + \".main.html#PageN\" + PgN;");
123-
Part(" UpdateNav(PgN); }} else document.PgForm.PgEdit.value = parent.frCurPage; }}");
123+
Part(" UpdateNav(PgN); }} else document.PgForm.PgEdit.value = frCurPage; }}");
124124
Part(" function UpdateNav(PgN) {{");
125-
Part(" parent.frCurPage = PgN; document.PgForm.PgEdit.value = PgN;");
125+
Part(" frCurPage = PgN; document.PgForm.PgEdit.value = PgN;");
126126
Part(" if (PgN == 1) {{ document.PgForm.bFirst.disabled = 1; document.PgForm.bPrev.disabled = 1; }}");
127127
Part(" else {{ document.PgForm.bFirst.disabled = 0; document.PgForm.bPrev.disabled = 0; }}");
128128
Part(" if (PgN == frPgCnt) {{ document.PgForm.bNext.disabled = 1; document.PgForm.bLast.disabled = 1; }}");
129129
Part(" else {{ document.PgForm.bNext.disabled = 0; document.PgForm.bLast.disabled = 0; }} }}");
130130
Part("--></script></head>");
131-
Part("<body bgcolor=\"#DDDDDD\" text=\"#000000\" leftmargin=\"0\" topmargin=\"4\" onload=\"UpdateNav(parent.frCurPage)\">");
131+
Part("<body bgcolor=\"#DDDDDD\" text=\"#000000\" leftmargin=\"0\" topmargin=\"4\" onload=\"UpdateNav(frCurPage)\">");
132132
Part("<form name=\"PgForm\" onsubmit=\"DoPage(document.forms[0].PgEdit.value); return false;\" action=\"\">");
133133
Part("<table cellspacing=\"0\" align=\"left\" cellpadding=\"0\" border=\"0\" width=\"100%\">");
134134
Part("<tr valign=\"middle\">");
135135
Part("<td width=\"60\" align=\"center\"><button name=\"bFirst\" class=\"nav\" type=\"button\" onclick=\"DoPage(1); return false;\"><b>{4}</b></button></td>");
136-
Part("<td width=\"60\" align=\"center\"><button name=\"bPrev\" class=\"nav\" type=\"button\" onclick=\"DoPage(Math.max(parent.frCurPage - 1, 1)); return false;\"><b>{5}</b></button></td>");
137-
Part("<td width=\"100\" align=\"center\"><input type=\"text\" class=\"nav\" name=\"PgEdit\" value=\"parent.frCurPage\" size=\"4\"></td>");
138-
Part("<td width=\"60\" align=\"center\"><button name=\"bNext\" class=\"nav\" type=\"button\" onclick=\"DoPage(parent.frCurPage + 1); return false;\"><b>{6}</b></button></td>");
136+
Part("<td width=\"60\" align=\"center\"><button name=\"bPrev\" class=\"nav\" type=\"button\" onclick=\"DoPage(Math.max(frCurPage - 1, 1)); return false;\"><b>{5}</b></button></td>");
137+
Part("<td width=\"100\" align=\"center\"><input type=\"text\" class=\"nav\" name=\"PgEdit\" value=\"frCurPage\" size=\"4\"></td>");
138+
Part("<td width=\"60\" align=\"center\"><button name=\"bNext\" class=\"nav\" type=\"button\" onclick=\"DoPage(frCurPage + 1); return false;\"><b>{6}</b></button></td>");
139139
Part("<td width=\"60\" align=\"center\"><button name=\"bLast\" class=\"nav\" type=\"button\" onclick=\"DoPage(frPgCnt); return false;\"><b>{7}</b></button></td>");
140140
Part("<td width=\"20\">&nbsp;</td>\r\n");
141141
Part("<td align=\"right\">{8}: <script language=\"javascript\" type=\"text/javascript\"> document.write(frPgCnt);</script></td>");
@@ -157,7 +157,6 @@ public HtmlTemplates()
157157
Part("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
158158
Part("<meta name=Generator content=\"FastReport http://www.fast-report.com\">");
159159
Part("<title>{0}</title>");
160-
Part("<script language=\"javascript\" type=\"text/javascript\"> var frCurPage = 1;</script></head>");
161160
Part("<frameset rows=\"36,*\" cols=\"*\">");
162161
Part("<frame name=\"topFrame\" src=\"{1}\" noresize frameborder=\"0\" scrolling=\"no\">");
163162
Part("<frame name=\"mainFrame\" src=\"{2}\" frameborder=\"0\">");

FastReport.Base/Utils/Config.cs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -319,14 +319,18 @@ internal static void Init()
319319
RestoreExportOptions();
320320
#endif
321321
LoadPlugins();
322+
InitTextRenderingHint();
323+
}
322324

325+
private static void InitTextRenderingHint()
326+
{
323327
// init TextRenderingHint.SystemDefault
324328
// bug in .Net: if you use any other hint before SystemDefault, the SystemDefault will
325329
// look like SingleBitPerPixel
326330
using (Bitmap bmp = new Bitmap(1, 1))
327331
using (Graphics g = Graphics.FromImage(bmp))
328332
{
329-
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault;
333+
g.TextRenderingHint = TextRenderingHint.SystemDefault;
330334
g.DrawString(" ", SystemFonts.DefaultFont, Brushes.Black, 0, 0);
331335
}
332336
}
@@ -537,28 +541,6 @@ private static void LoadPlugins()
537541
#endif
538542
}
539543

540-
private static void LoadPluginsInCurrentFolder()
541-
{
542-
var appFolder = ApplicationFolder;
543-
if(!string.IsNullOrEmpty(appFolder))
544-
{
545-
// find all plugin-connector in current directory
546-
var plugins = Directory.GetFiles(appFolder, "FastReport.Data.*.dll");
547-
548-
// initialize
549-
foreach (var pluginName in plugins)
550-
{
551-
try
552-
{
553-
var assembly = Assembly.LoadFrom(pluginName);
554-
ProcessAssembly(assembly);
555-
}
556-
catch
557-
{
558-
}
559-
}
560-
}
561-
}
562544

563545
private static void ProcessAssembly(Assembly a)
564546
{

FastReport.Base/Data/JsonConnection/JsonParser/JsonArray.cs renamed to FastReport.Base/Utils/Json/JsonArray.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
using System.Collections.Generic;
33
using System.Text;
44

5-
namespace FastReport.Data.JsonConnection.JsonParser
5+
namespace FastReport.Utils.Json
66
{
77
internal class JsonArray : JsonBase, IEnumerable<object>
88
{
99
#region Private Fields
1010

11-
private List<object> array = new List<object>();
11+
private readonly List<object> array = new List<object>();
1212

1313
#endregion Private Fields
1414

@@ -80,13 +80,13 @@ public void Remove(int index)
8080

8181
public override void WriteTo(StringBuilder sb, int indent)
8282
{
83-
sb.Append("[");
83+
sb.Append('[');
8484

8585
bool notFirst = false;
8686
foreach (object item in array)
8787
{
8888
if (notFirst)
89-
sb.Append(",");
89+
sb.Append(',');
9090
if (indent > 0)
9191
{
9292
sb.AppendLine();
@@ -102,7 +102,7 @@ public override void WriteTo(StringBuilder sb, int indent)
102102
for (int i = 2; i < indent; i++)
103103
sb.Append(' ');
104104
}
105-
sb.Append("]");
105+
sb.Append(']');
106106
}
107107

108108
#endregion Public Methods

FastReport.Base/Data/JsonConnection/JsonParser/JsonBase.cs renamed to FastReport.Base/Utils/Json/JsonBase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using FastReport.Data.JsonConnection.JsonParser;
1+
using FastReport.Utils.Json;
22
using System;
33
using System.Collections.Generic;
44
using System.Globalization;
@@ -13,7 +13,7 @@ public abstract class JsonBase
1313
{
1414
#region Private Fields
1515

16-
private static NumberFormatInfo format;
16+
private static readonly NumberFormatInfo format;
1717

1818
#endregion Private Fields
1919

@@ -168,15 +168,15 @@ internal string ReadString(string key)
168168

169169
internal void WriteValue(StringBuilder sb, object item, int indent)
170170
{
171-
if (item is JsonBase)
171+
if (item is JsonBase jsonBase)
172172
{
173173
if (indent > 0)
174174
{
175-
(item as JsonBase).WriteTo(sb, indent + 2);
175+
jsonBase.WriteTo(sb, indent + 2);
176176
}
177177
else
178178
{
179-
(item as JsonBase).WriteTo(sb, 0);
179+
jsonBase.WriteTo(sb, 0);
180180
}
181181
}
182182
else if (item is bool)
@@ -190,7 +190,7 @@ internal void WriteValue(StringBuilder sb, object item, int indent)
190190
sb.Append("false");
191191
}
192192
}
193-
else if (IsNumber(sb, item))
193+
else if (IsNumber(item))
194194
{
195195
sb.Append(((IConvertible)item).ToString(format));
196196
}
@@ -556,7 +556,7 @@ private static string ReadValueString(JsonTextReader reader)
556556
return sb.ToString();
557557
}
558558

559-
private bool IsNumber(StringBuilder sb, object item)
559+
private static bool IsNumber(object item)
560560
{
561561
return item is float
562562
|| item is double

FastReport.Base/Data/JsonConnection/JsonParser/JsonObject.cs renamed to FastReport.Base/Utils/Json/JsonObject.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
using System.Collections.Generic;
33
using System.Text;
44

5-
namespace FastReport.Data.JsonConnection.JsonParser
5+
namespace FastReport.Utils.Json
66
{
7-
internal class JsonObject : JsonBase, IEnumerable<KeyValuePair<string, object>>
7+
public class JsonObject : JsonBase, IEnumerable<KeyValuePair<string, object>>
88
{
99
#region Private Fields
1010

11-
private Dictionary<string, object> dict = new Dictionary<string, object>();
11+
private readonly Dictionary<string, object> dict = new Dictionary<string, object>();
1212

1313
#endregion Private Fields
1414

@@ -83,12 +83,12 @@ IEnumerator IEnumerable.GetEnumerator()
8383

8484
public override void WriteTo(StringBuilder sb, int indent)
8585
{
86-
sb.Append("{");
86+
sb.Append('{');
8787
bool notFirst = false;
8888
foreach (KeyValuePair<string, object> kv in dict)
8989
{
9090
if (notFirst)
91-
sb.Append(",");
91+
sb.Append(',');
9292
if (indent > 0)
9393
{
9494
sb.AppendLine();
@@ -100,7 +100,7 @@ public override void WriteTo(StringBuilder sb, int indent)
100100
if (indent > 0)
101101
sb.Append(": ");
102102
else
103-
sb.Append(":");
103+
sb.Append(':');
104104
WriteValue(sb, kv.Value, indent);
105105
notFirst = true;
106106
}
@@ -110,7 +110,7 @@ public override void WriteTo(StringBuilder sb, int indent)
110110
for (int i = 2; i < indent; i++)
111111
sb.Append(' ');
112112
}
113-
sb.Append("}");
113+
sb.Append('}');
114114
}
115115

116116
#endregion Public Methods

FastReport.Base/Data/JsonConnection/JsonParser/JsonSchema.cs renamed to FastReport.Base/Utils/Json/JsonSchema.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33

4-
namespace FastReport.Data.JsonConnection.JsonParser
4+
namespace FastReport.Utils.Json
55
{
66
internal class JsonSchema
77
{

FastReport.Base/Data/JsonConnection/JsonParser/JsonTextReader.cs renamed to FastReport.Base/Utils/Json/JsonTextReader.cs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using System.Text;
44

5-
namespace FastReport.Data.JsonConnection.JsonParser
5+
namespace FastReport.Utils.Json
66
{
77
internal class JsonTextReader : IDisposable
88
{
@@ -11,7 +11,7 @@ internal class JsonTextReader : IDisposable
1111
private string jsonText;
1212
private Dictionary<string, string> pool = new Dictionary<string, string>();
1313
private int position;
14-
private bool stringOptimization;
14+
private readonly bool stringOptimization;
1515

1616
#endregion Private Fields
1717

@@ -59,7 +59,7 @@ public int Position
5959

6060
public JsonTextReader(string jsonText)
6161
{
62-
stringOptimization = Utils.Config.IsStringOptimization;
62+
stringOptimization = Config.IsStringOptimization;
6363

6464
this.jsonText = jsonText;
6565
position = 0;
@@ -103,14 +103,7 @@ public Exception ThrowEOF(params char[] args)
103103
{
104104
StringBuilder sb = new StringBuilder();
105105
sb.Append("Unexpected end of input json, wait for");
106-
if (args.Length > 0)
107-
{
108-
sb.Append(" ").Append(args[0]);
109-
}
110-
for (int i = 1; i < args.Length; i++)
111-
{
112-
sb.Append(", ").Append(args[i]);
113-
}
106+
ArgsToStringBuilder(sb, args);
114107
return new FormatException(sb.ToString());
115108
}
116109

@@ -123,14 +116,7 @@ public Exception ThrowFormat(params char[] args)
123116
{
124117
StringBuilder sb = new StringBuilder();
125118
sb.Append("Json text at position ").Append(Position).Append(", unexpected symbol ").Append(Char).Append(", wait for");
126-
if (args.Length > 0)
127-
{
128-
sb.Append(" ").Append(args[0]);
129-
}
130-
for (int i = 1; i < args.Length; i++)
131-
{
132-
sb.Append(", ").Append(args[i]);
133-
}
119+
ArgsToStringBuilder(sb, args);
134120
return new FormatException(sb.ToString());
135121
}
136122

@@ -143,6 +129,18 @@ internal string Substring(int startPos, int len)
143129
return JsonText.Substring(startPos, len);
144130
}
145131

132+
private static void ArgsToStringBuilder(StringBuilder sb, char[] args)
133+
{
134+
if (args.Length > 0)
135+
{
136+
sb.Append(' ').Append(args[0]);
137+
}
138+
for (int i = 1; i < args.Length; i++)
139+
{
140+
sb.Append(", ").Append(args[i]);
141+
}
142+
}
143+
146144
#endregion Internal Methods
147145
}
148146
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
3+
namespace FastReport.Utils.Json.Serialization
4+
{
5+
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Enum,
6+
AllowMultiple = false)]
7+
public class JsonPropertyAttribute : Attribute
8+
{
9+
10+
public string PropertyName { get; }
11+
12+
public bool IgnoreNullValue { get; }
13+
14+
public JsonPropertyAttribute(string propertyName, bool ignoreNullValue = true)
15+
{
16+
PropertyName = propertyName;
17+
IgnoreNullValue = ignoreNullValue;
18+
}
19+
}
20+
21+
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
22+
public class JsonIgnoreAttribute : Attribute
23+
{
24+
25+
}
26+
}

0 commit comments

Comments
 (0)