public void ExecuteSplit(string command = null, FrameworkElement fe = null) { CommandRequest cr = new CommandRequest(); cr.CommandSyntax = command; string stmt = command; //cmd.CommandSyntax; if (stmt.Contains("BSkySetDataFrameSplit(")) ///executes when SPLIT is fired from menu { bool setsplit = false; int startind = 0; int endind = 0; if (stmt.Contains("col.names")) { startind = stmt.IndexOf("c(", stmt.IndexOf("col.names"));// index of c( } else { startind = stmt.IndexOf("c(");// index of c( } if (startind > 0) { endind = stmt.IndexOf(")", startind); } if (startind > 0 && endind > startind) { int len = endind - startind + 1; // finding the length of c(......) string str = stmt.Substring(startind, len); // this will contain c('tg0','tg1') or just c() string ch = null; if (str.Contains("'")) { ch = "'"; } if (str.Contains('"')) { ch = "\""; } if (ch != null && ch.Length > 0) { int i = str.IndexOf(ch); int j = -1; if (i >= 0) { j = str.IndexOf(ch, i + 1); } if (j < 0) { j = i + 1; } string sub = str.Substring(i + 1, (j - i - 1)).Trim(); if (i < 0) { i = str.IndexOf("'"); } if (i >= 0) { if (sub.Length > 0) { setsplit = true; } } } } //Executing the command in R/// analytics.ExecuteR(cr, false, false); ////Creating a command output////11Jul2014 CommandOutput splitCo = new CommandOutput(); splitCo.NameOfAnalysis = "Split:#" + setsplit; splitCo.IsFromSyntaxEditor = false; AUParagraph aup = new AUParagraph(); aup.FontSize = BSkyStyler.BSkyConstants.TEXT_FONTSIZE; //App.HEADER_FONTSIZE; aup.Text = stmt; aup.ControlType = "Header"; // treenodename.Length < treenodecharlen ? treenodename : treenodename.Substring(0, treenodecharlen); splitCo.Add(aup); ////////// Setting/Unsetting Macro for SPLIT ////////// if (setsplit) { OutputHelper.AddGlobalObject(string.Format("GLOBAL.{0}.SPLIT", UIController.GetActiveDocument().Name), fe); //window.Template = null; //11Mar2013 release the XAML object. ie obj is no more child of window. AddToSyntaxSession(splitCo); //11Jul2014 SendToOutputWindow(dialogTitle, stmt); Refresh_Statusbar(); // RefreshGrids(); return; // no need to do any thing further } else // unset split { OutputHelper.DeleteGlobalObject(string.Format("GLOBAL.{0}.SPLIT", UIController.GetActiveDocument().Name)); //if (window != null && window.Template != null) // window.Template = null; //11Mar2013 release the XAML object. ie obj is no more child of window. AddToSyntaxSession(splitCo); //11Jul2014 SendToOutputWindow(dialogTitle, stmt); Refresh_Statusbar(); // RefreshGrids(); return; // no need to do any thing further } } }
////// For Analysis Command Execution from Syntax Editor ///// public void ExecuteSyntaxEditor3(object param, bool selectedForDump) { parameter = param; OnPreExecute(parameter); if (!canExecute) { return; } object obj = null; string dialogcommandstr = null; try { //here TemplateFileName xaml will have same name as the analysis command function name // say- function called frm SynEdtr was 'bsky.my.func()' then in bin\Config\ // dialog xaml, 'bsky.my.func.xaml' and // output template file 'bsky.my.func.xml' must exist // ie.. func name = xaml name = xml name XmlReader xmlr = XmlReader.Create(TemplateFileName); xmlr.ReadToFollowing("BSkyCanvas"); xmlr.MoveToAttribute("CommandString"); dialogcommandstr = xmlr.Value.Replace(" ", string.Empty).Replace('\"', '\''); xmlr.Close(); obj = System.Windows.Markup.XamlReader.Load(XmlReader.Create(TemplateFileName)); } catch (Exception ex) { MessageBox.Show("Could not create template from " + TemplateFileName); logService.WriteToLogLevel("SynEdtr:Could not create template from " + TemplateFileName, LogLevelEnum.Error, ex); return; } element = obj as FrameworkElement; window = new BaseOptionWindow(); window.Template = element; element.DataContext = this; // loading vars in left listbox(source) ///window.ShowDialog(); commandwindow = element; ////////////test/////// //// take two strings and then try to make merged dictionary. remove extra spaces. replace " with ' //string bksytemplate="bsky.CrossTable(x=c({Rows}),y=c({columns}),layers=c({layers}),datasetname='{%DATASET%}',chisq={chisq})"; //string bskycommand="bsky.CrossTable(x=c('store','contact'),y='regular',layers=c('gender'),datasetname='Dataset1',chisq=FALSE)"; //string dialogcommandstr = "bsky.one.sm.t.test(vars=c({SelectedVars}),mu={testValue},conf.level=0.89,datasetname='{%DATASET%}',missing=0)"; string bskycommand = ((UAMenuCommand)parameter).bskycommand.Replace(" ", string.Empty); //"bsky.one.sm.t.test(vars=c('tg0','tg2','tg3'),mu=30,conf.level=0.89,datasetname='Dataset1',missing=0)"; Dictionary <string, string> dialogkeyvalpair = new Dictionary <string, string>(); //like: key=mu, val= {testValue} Dictionary <string, string> bskycommandkeyvalpair = new Dictionary <string, string>(); //like: key=mu, val= 30 Dictionary <string, string> merged = new Dictionary <string, string>(); //like: key=testValue, val = 30 OutputHelper.getArgumentSetDictionary(dialogcommandstr, dialogkeyvalpair); OutputHelper.getArgumentSetDictionary(bskycommand, bskycommandkeyvalpair); OutputHelper.MergeTemplateCommandDictionary(dialogkeyvalpair, bskycommandkeyvalpair, merged); foreach (KeyValuePair <string, string> pair in merged) { if (!pair.Key.Contains("%")) { OutputHelper.SetValueFromSynEdt(element, pair.Key, pair.Value); } } //foreach (Match m in mc) //{ // //Console.WriteLine(s.Index + " : " + s.ToString());// {SelectedVars} {testValue} {%DATASET%} // if (!m.ToString().Contains("%")) // { // args = OutputHelper.getArgument(bskycommand, m.Index); // uiElementName = m.ToString().Replace('{', ' ').Replace('}', ' ').Trim(); // OutputHelper.SetValueFromSynEdt(element, uiElementName, args); // } //} //OutputHelper.SetValueFromSynEdt(element, "SelectedVars"); //OutputHelper.SetValueFromSynEdt(element, "testValue"); //For Chisq check box only //FrameworkElement chkElement = element.FindName("chisq") as FrameworkElement; if (true)//window.DialogResult.HasValue && window.DialogResult.Value) { //analytics can be sent from parent function(in SyntaxEditorWindow) //IAnalyticsService analytics = LifetimeService.Instance.Container.Resolve<IAnalyticsService>(); //IConfigService confService = LifetimeService.Instance.Container.Resolve<IConfigService>();//23nov2012 cmd = new CommandRequest(); OutputHelper.Reset(); OutputHelper.UpdateMacro("%DATASET%", UIController.GetActiveDocument().Name); ///////////for chisq //// 29Mar2012 /// //if ((chkElement != null) && (bool)((chkElement as CheckBox).IsChecked)) // OutputHelper.UpdateMacro("%CHISQ%", "chisq"); /////////////for chisq //// 29Mar2012 /// BSkyCanvas canvas = element as BSkyCanvas; if (canvas != null && !string.IsNullOrEmpty(canvas.CommandString)) { UAMenuCommand command = (UAMenuCommand)parameter; cmd.CommandSyntax = command.commandformat; //OutputHelper.GetCommand(canvas.CommandString, element);// can be used for "Paste" for syntax editor UAReturn retval = null; //retval = new UAReturn(); retval.Data = LoadAnalysisBinary(); #region Execute BSky command try { retval = analytics.Execute(cmd); // RService called and DOM returned for Analysis commands cmd.CommandSyntax = command.commandtype; ////for header area ie NOTES //SaveAnalysisBinary(retval.Data); ///Added by Anil///07Mar2012 bool myrun = false; if (cmd.CommandSyntax.Contains("BSkySetDataFrameSplit("))///executes when SPLIT is fired from menu { bool setsplit = false; int startind = 0; if (cmd.CommandSyntax.Contains("col.names")) { startind = cmd.CommandSyntax.IndexOf("c(", cmd.CommandSyntax.IndexOf("col.names"));// index of c( } else { startind = cmd.CommandSyntax.IndexOf("c(");// index of c( } int endind = cmd.CommandSyntax.IndexOf(")", startind); int len = endind - startind + 1; // finding the length of c(......) string str = cmd.CommandSyntax.Substring(startind, len); // this will contain c('tg0','tg1') or just c() string ch = null; if (str.Contains("'")) { ch = "'"; } if (str.Contains('"')) { ch = "\""; } if (ch != null && ch.Length > 0) { int i = str.IndexOf(ch); int j = -1; if (i >= 0) { j = str.IndexOf(ch, i + 1); } if (j < 0) { j = i + 1; } string sub = str.Substring(i + 1, (j - i - 1)).Trim(); if (i < 0) { i = str.IndexOf("'"); } if (i >= 0) { if (sub.Length > 0) { setsplit = true; } } } ////////// Setting/Unsetting Macro for SPLIT ////////// if (setsplit) { OutputHelper.AddGlobalObject(string.Format("GLOBAL.{0}.SPLIT", UIController.GetActiveDocument().Name), element); return;// no need to do any thing further } else // unset split { OutputHelper.DeleteGlobalObject(string.Format("GLOBAL.{0}.SPLIT", UIController.GetActiveDocument().Name)); return;// no need to do any thing further } } //////////////////////////// } catch (Exception ex) { MessageBox.Show("Couldn't Execute the command"); logService.WriteToLogLevel("Couldn't Execute the command", LogLevelEnum.Error, ex); return; } #endregion //UAReturn retval = new UAReturn(); retval.Success = true; AnalyticsData data = new AnalyticsData(); data.SelectedForDump = selectedForDump; //10Jan2013 data.PreparedCommand = cmd.CommandSyntax; //storing command data.Result = retval; data.AnalysisType = cmd.CommandSyntax; //"T-Test"; For Parent Node name 02Aug2012 data.InputElement = element; data.DataSource = ds; data.OutputTemplate = ((UAMenuCommand)parameter).commandoutputformat; UIController.AnalysisComplete(data); } } //OnPostExecute(parameter); }