diff --git a/Hawk.ETL.Controls/DataViewers/AboutAuthor.xaml b/Hawk.ETL.Controls/DataViewers/AboutAuthor.xaml index b3432ec..084941c 100644 --- a/Hawk.ETL.Controls/DataViewers/AboutAuthor.xaml +++ b/Hawk.ETL.Controls/DataViewers/AboutAuthor.xaml @@ -13,7 +13,7 @@ - + diff --git a/Hawk.ETL/Crawlers/JavaScriptAnalyzer.cs b/Hawk.ETL/Crawlers/JavaScriptAnalyzer.cs index 4be1065..217f0b2 100644 --- a/Hawk.ETL/Crawlers/JavaScriptAnalyzer.cs +++ b/Hawk.ETL/Crawlers/JavaScriptAnalyzer.cs @@ -248,7 +248,7 @@ public static object Parse(string code) private static object JsonSeriaize(string code) { dynamic js= JsonConvert.Import(code); - if (js == "") + if (js.ToString() == "") return code; return _JsonSeriaize(js); } diff --git a/Hawk.ETL/Managements/DataProcessManager.cs b/Hawk.ETL/Managements/DataProcessManager.cs index 2dbcdb6..26af141 100644 --- a/Hawk.ETL/Managements/DataProcessManager.cs +++ b/Hawk.ETL/Managements/DataProcessManager.cs @@ -139,6 +139,11 @@ public override bool Init() window.Content = view; window.ShowDialog(); }); + var mainlink = new BindingAction("项目主页", d => + { + var url = "https://github.com/ferventdesert/Hawk/wik"; + System.Diagnostics.Process.Start(url); + }); var helplink = new BindingAction("使用文档", d => { var url = "https://github.com/ferventdesert/Hawk/wiki"; @@ -167,6 +172,7 @@ public override bool Init() MessageBox.Show("欢迎关注微信公众号“沙漠之鹰”,实在没时间给软件做UI了。。。","沙漠君欢迎你"); }); var pluginCommands = new BindingAction("帮助"); + pluginCommands.ChildActions.Add(mainlink); pluginCommands.ChildActions.Add(helplink); pluginCommands.ChildActions.Add(aboutAuthor); pluginCommands.ChildActions.Add(feedback); diff --git a/Hawk.ETL/Plugins/Transformers/ResponseTF.cs b/Hawk.ETL/Plugins/Transformers/ResponseTF.cs index 256a81a..8c8e78b 100644 --- a/Hawk.ETL/Plugins/Transformers/ResponseTF.cs +++ b/Hawk.ETL/Plugins/Transformers/ResponseTF.cs @@ -21,7 +21,7 @@ public class ResponseTF : TransformerBase public ResponseTF() { - CrawlerSelector = "网页采集器"; + // CrawlerSelector = "网页采集器"; } [LocalizedDisplayName("爬虫选择")] diff --git a/Hawk.ETL/Plugins/Transformers/TransformerBase.cs b/Hawk.ETL/Plugins/Transformers/TransformerBase.cs index ad92063..dcf7d6d 100644 --- a/Hawk.ETL/Plugins/Transformers/TransformerBase.cs +++ b/Hawk.ETL/Plugins/Transformers/TransformerBase.cs @@ -13,16 +13,26 @@ namespace Hawk.ETL.Plugins.Transformers { - public abstract class TransformerBase : PropertyChangeNotifier, IColumnDataTransformer { + [Browsable(false)] + public int ETLIndex { get; set; } + + #region Public Methods + + public override string ToString() + { + return TypeName + " " + Column; + } + + #endregion + #region Constants and Fields #endregion - [Browsable(false)] - public int ETLIndex { get; set; } #region Constructors and Destructors + protected bool IsExecute; public void SetExecute(bool value) @@ -31,22 +41,30 @@ public void SetExecute(bool value) } protected readonly IProcessManager processManager; + protected TransformerBase() { - this.OneOutput = true; - this.Column = ""; - this.NewColumn = ""; - this.Enabled = true; + OneOutput = true; + Column = ""; + NewColumn = ""; + Enabled = true; IsMultiYield = false; processManager = MainDescription.MainFrm.PluginDictionary["模块管理"] as IProcessManager; - } protected SmartCrawler GetCrawler(string name) { - var crawler = - processManager.CurrentProcessCollections.FirstOrDefault(d => d.Name == name) as SmartCrawler; + var crawlers = processManager.CurrentProcessCollections.OfType().ToList(); + if (string.IsNullOrEmpty(name)) + { + if (crawlers.Count() == 1) + { + name = crawlers[0].Name; + } + } + var crawler = + crawlers.FirstOrDefault(d => d.Name == name); if (crawler != null) { IsMultiYield = crawler?.IsMultiData == ListType.List; @@ -56,7 +74,6 @@ protected SmartCrawler GetCrawler(string name) var task = processManager.CurrentProject.Tasks.FirstOrDefault(d => d.Name == name); if (task != null) { - ControlExtended.UIInvoke(() => { task.Load(false); }); crawler = processManager.CurrentProcessCollections.FirstOrDefault(d => d.Name == name) as @@ -66,25 +83,21 @@ protected SmartCrawler GetCrawler(string name) { if (string.IsNullOrEmpty(name)) { - - XLogSys.Print.Error($"您没有填写“从爬虫转换”的“爬虫选择”。需要填写要调用的网页采集器的名称"); + XLogSys.Print.Error($"您没有填写“从爬虫转换”的“爬虫选择”。需要填写要调用的网页采集器的名称"); } else { - - XLogSys.Print.Error($"没有找到名称为'{name}'的网页采集器,请检查“从爬虫转换”的“爬虫选择”是否填写错误"); + XLogSys.Print.Error($"没有找到名称为'{name}'的网页采集器,请检查“从爬虫转换”的“爬虫选择”是否填写错误"); } } - } return crawler; } + #endregion #region Properties - - [LocalizedCategory("1.基本选项"), PropertyOrder(1), DisplayName("输入列")] [LocalizedDescription("本模块要处理的列的名称")] public string Column { get; set; } @@ -104,14 +117,13 @@ public string Description } - [LocalizedCategory("1.基本选项")] [PropertyOrder(2)] [LocalizedDisplayName("输出列")] [LocalizedDescription("结果要输出到的列的名称")] public virtual string NewColumn { get; set; } - + private bool _enabled; [LocalizedCategory("1.基本选项")] @@ -133,9 +145,7 @@ public bool Enabled /// 是否在数据中必须包含列名 /// [Browsable(false)] - public virtual bool OneOutput { get; set; } - - + public virtual bool OneOutput { get; set; } [LocalizedCategory("1.基本选项")] @@ -145,22 +155,13 @@ public string TypeName { get { - XFrmWorkAttribute item = AttributeHelper.GetCustomAttribute(this.GetType()); - return item == null ? this.GetType().ToString() : item.Name; + var item = AttributeHelper.GetCustomAttribute(GetType()); + return item == null ? GetType().ToString() : item.Name; } } #endregion - #region Public Methods - - public override string ToString() - { - return this.TypeName + " " + this.Column; - } - - #endregion - #region Implemented Interfaces #region IColumnDataTransformer @@ -174,28 +175,26 @@ public virtual object TransformData(IFreeDocument datas) public virtual bool IsMultiYield { get; set; } - protected void SetValue(IFreeDocument doc,object item) + protected void SetValue(IFreeDocument doc, object item) { - if(string.IsNullOrEmpty(NewColumn)) - doc.SetValue(Column,item); + if (string.IsNullOrEmpty(NewColumn)) + doc.SetValue(Column, item); else - doc.SetValue(NewColumn,item); + doc.SetValue(NewColumn, item); } - + public virtual IEnumerable TransformManyData(IEnumerable datas) { yield break; } - #endregion #region IColumnProcess public virtual void Finish() { - } public virtual bool Init(IEnumerable docus) @@ -210,14 +209,13 @@ public virtual bool Init(IEnumerable docus) public virtual void DictDeserialize(IDictionary docu, Scenario scenario = Scenario.Database) { this.UnsafeDictDeserialize(docu); - } public virtual FreeDocument DictSerialize(Scenario scenario = Scenario.Database) { var dict = this.UnsafeDictSerialize(); - dict.Add("Type", this.GetType().Name); - dict.Add("Group","Transformer"); + dict.Add("Type", GetType().Name); + dict.Add("Group", "Transformer"); dict.Remove("ETLIndex"); return dict; }