public string Query_FormatDetail(ReportingSubject.Detail detail, string selection, ref string language) { string q = ""; // pad a space? string[] selections; string selectionlang; DataType datatype = new DataType(); switch (detail.lang) { case "equals": case "IS": selectionlang = selection; if (detail.type == "bit") { if (selection == "1") { selectionlang = "True"; } else { selectionlang = "False"; } } if (datatype.UseQuotes(detail.type)) {// use quotes q = detail.db + "='" + selection + "' AND "; language = " Where '" + detail.name + "' is: '" + selectionlang + "' <br/>"; } else { // no quotes q = detail.db + "=" + selection + " AND "; language = " Where '" + detail.name + "' is: " + selectionlang + " <br/>"; } break; case "IS ONE OF": case "IS IN": // convert the comma delimited list of values into an array and parse selections = selection.Split(new char[] { ',' }); q = detail.db + " IN ("; foreach (string specificdetail in selections) { if (datatype.UseQuotes(detail.type)) {// use quotes q = q +"'" +specificdetail + "',"; } else { // no quotes q = q + specificdetail + ","; } } q = q.Remove(q.Length - 1); // remove last comma q = q + ") AND "; language = " Where '" + detail.name + "' is one of: '" + selection + "' <br/>"; break; case "IS BETWEEN": selections = selection.Split(new char[] { ',' }); if (datatype.UseQuotes(detail.type)) {// use quotes q = detail.db + ">='" + selections[0] + "' AND " + detail.db + "<='" + selections[1]+"'"; } else { // no quotes q = detail.db + ">=" + selections[0] + " AND " + detail.db + "<=" + selections[1]; } language = " Where '" + detail.name + "' is between: '" + selections[0] + " and " + selections[1] + "' <br/>"; break; case "IS BEFORE": if (datatype.UseQuotes(detail.type)) {// use quotes q = detail.db + "<'" + selection + "' AND "; language = " Where '" + detail.name + "' is before: '" + selection + "' <br/>"; } else { // no quotes q = detail.db + "<" + selection + " AND "; language = " Where '" + detail.name + "' is after: " + selection + " <br/>"; } break; case "IS AFTER": if (datatype.UseQuotes(detail.type)) {// use quotes q = detail.db + ">'" + selection + "' AND "; language = " Where '" + detail.name + "' is before: '" + selection + "' <br/>"; } else { // no quotes q = detail.db + ">" + selection + " AND "; language = " Where '" + detail.name + "' is after: " + selection + " <br/>"; } break; } return q; }
/* /---[ Subject_Set ]--------------------------------------------------------------------\ * | Loads all the ReportConditions based on Subject (does not matter if a new report or existing one) * | * \-------------------------------------------------------------------/ * isnew = false if loading/editing an existing RD (otherwise if a new Subject is chosen, TRUE to rebuild) * */ public bool Subject_Set(bool isnew, ref FormLink Formlinks, ReportingSubject RS, ref SQL SQL, ref ReportingSubject[] ReportingSubjects) { bool exists = false; ReportingSubject.Detail RSdetail; ReportDefinition.Detail existingRDdetail = new ReportDefinition.Detail(); FormControl UIFSFormControl; if (isnew || this.ReportConditions == null) { this.ReportConditions = new ReportCondition[0]; // starting over fresh...should this be possible? } //. setup [globals] foreach (FormLink.Detail FLdetail in Formlinks.Details) { int iRDDd=-1; // holds the index of the RD.Desc.detail for linking the ReportCondition to the actual RD.Description... switch (FLdetail.type) { // -[ Global Subject ]- // this behaves as a "pointer"/collection of id(s) to reference a Subject or set of Subjects to filter by... // this is a UIFS standard, but for UX simplification (This "subject" has a corresponding id field that is unique to each form created) case "Subject": if (!isnew) { // check to see if exists in current RD for (int t=0;t<RD.Description.Details.Length;t++) { if ("[global]"+FLdetail.name == RD.Description.Details[t].name) { existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } RSdetail = new ReportingSubject.Detail(); RSdetail.db = FLdetail.field; RSdetail.name = "[global]" + FLdetail.name; RSdetail.type = "id"; // this basically tells the application that this is a linked *Subject Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } //. Load subject selection data int pscount=0; int iRS; //. Find reporting subject for (iRS = 0; iRS < ReportingSubjects.Length; iRS++) { if (ReportingSubjects[iRS].name == FLdetail.name) { break; } } SQL.Query = ReportingSubjects[iRS].BuildQuery_IDList(); // dynamic build... SQL.cmd = SQL.Command(SQL.Data); SQL.sdr = SQL.cmd.ExecuteReader(); while (SQL.sdr.Read()) { Array.Resize(ref ReportConditions[ReportConditions.Length - 1].PossibleValues, pscount+1); ReportConditions[ReportConditions.Length - 1].PossibleValues[pscount] = new FormControl.List.Item(); ReportConditions[ReportConditions.Length - 1].PossibleValues[pscount].value = SQL.sdr[0].ToString(); ReportConditions[ReportConditions.Length - 1].PossibleValues[pscount].name = SQL.sdr[1].ToString(); pscount += 1; } SQL.sdr.Close(); // Report Show possibility ReportShow_Add(RSdetail.db, RSdetail.name, RSdetail.type); break; case "Detail": if (!isnew) { // check to see if exists in current RD for (int t = 0; t < RD.Description.Details.Length; t++) { if ("[global]" + FLdetail.name == RD.Description.Details[t].name) { existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } RSdetail = new ReportingSubject.Detail(); RSdetail.db = FLdetail.field; RSdetail.name = "[global]" + FLdetail.name; RSdetail.type = FLdetail.datatype; Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } // Report Show possibility ReportShow_Add(RSdetail.db, RSdetail.name, RSdetail.type); break; } } // end globals // NOTE: Right now, reporting is based off of having a UIFS.Form selection as the MAIN SUBJECT // This means we are not setup to handle any generic *Subject as the main...here and in BuildReport() // ONLY when a SINGLE *Form* is chosen can we use its details if (RD.Description.lang == "singular") { exists = false; //. Now we walk through our chosen "Subject"'s Details // this is a UIFS.Form if (RD.Description.name == "Form") { //. need to get data from UIFS.Form for advanced functionality UIFS.Form UIFSForm = new Form(ref SQL); UIFS.FormDataStruct UIFSFormData = new FormDataStruct(); DataType UIFSConvertDT = new DataType(); // TODO: diff form ver if (!UIFSForm.Load(Convert.ToInt32(RD.Description.selection),-1, ref UIFSFormData)) { SQL.WriteLog_Error(UIFSForm.ErrorEx, "Error loading form:" + RD.Description.selection, "UIFS.Reporting.GraphicalUserInterface.Subject_Set()"); return false; } //. walk through all form controls... foreach (FormDataStruct.ControlListDetail CLD in UIFSFormData.ControlList) { int iRDDd = -1; UIFSFormControl = UIFSFormData.Get_Control(CLD.id); switch (CLD.type) { case ControlType.Range: // Range Controls have 2 values FormControl.Range Ctrl_Range = (FormControl.Range)UIFSFormControl; //. create Start option RSdetail = new ReportingSubject.Detail(); RSdetail.db = CLD.id.ToString()+"_Start"; RSdetail.name = UIFSFormControl.name+" START"; RSdetail.type = UIFSConvertDT.convertUIFS(Ctrl_Range.type.ToString()); if (!isnew) { // check to see if exists in current RD for (int t = 0; t < RD.Description.Details.Length; t++) { if (RSdetail.db == RD.Description.Details[t].name){ existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } //. create End option RSdetail = new ReportingSubject.Detail(); RSdetail.db = CLD.id.ToString()+"_End"; RSdetail.name = UIFSFormControl.name +" END"; RSdetail.type = UIFSConvertDT.convertUIFS(Ctrl_Range.type.ToString()); if (!isnew) { // check to see if exists in current RD for (int t = 0; t < RD.Description.Details.Length; t++) { if (RSdetail.db == RD.Description.Details[t].name){ existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } // Report Show possibility switch (Ctrl_Range.type) { case FormControl.Range.Rangetype.DateRange: case FormControl.Range.Rangetype.TimeRange: case FormControl.Range.Rangetype.DateTimeRange: ReportShow_Add(CLD.id.ToString(), UIFSFormControl.name, "Range_DateTime"); break; case FormControl.Range.Rangetype.MinMax: case FormControl.Range.Rangetype.Currency: ReportShow_Add(CLD.id.ToString(),UIFSFormControl.name,"Range_Number");//UIFSFormControl.name break; } break; case ControlType.DateTime: FormControl.DateTime Ctrl_DateTime = (FormControl.DateTime)UIFSFormControl; RSdetail = new ReportingSubject.Detail(); RSdetail.db = CLD.id.ToString(); RSdetail.name = UIFSFormControl.name; RSdetail.type = UIFSConvertDT.convertUIFS(Ctrl_DateTime.type.ToString().ToLower()); // UIFS.ControlType.. if (!isnew) { // check to see if exists in current RD for (int t = 0; t < RD.Description.Details.Length; t++) { if (RSdetail.db == RD.Description.Details[t].name){ existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); ReportConditions[ReportConditions.Length - 1].UIFSFormControl = true; ReportConditions[ReportConditions.Length - 1].UIFSControl = UIFSFormControl; ReportConditions[ReportConditions.Length - 1].UIFSFormControl_type = CLD.type; if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } // Report Show possibility ReportShow_Add(RSdetail.db, RSdetail.name, RSdetail.type); break; default: RSdetail = new ReportingSubject.Detail(); RSdetail.db = CLD.id.ToString(); RSdetail.name = UIFSFormControl.name; RSdetail.type = UIFSConvertDT.convertUIFS(CLD.type.ToString().ToLower()); // UIFS.ControlType.. if (!isnew) { // check to see if exists in current RD for (int t = 0; t < RD.Description.Details.Length; t++) { if (RSdetail.db == RD.Description.Details[t].name){ existingRDdetail = RD.Description.Details[t]; iRDDd = t; exists = true; break; } } } Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSdetail, ReportConditions.Length - 1); ReportConditions[ReportConditions.Length - 1].UIFSFormControl = true; ReportConditions[ReportConditions.Length - 1].UIFSControl = UIFSFormControl; ReportConditions[ReportConditions.Length - 1].UIFSFormControl_type = CLD.type; if (exists) { ReportConditions[ReportConditions.Length - 1].RDdetail = existingRDdetail; ReportConditions[ReportConditions.Length - 1].iRDDdetail = iRDDd; exists = false; // reset } // Report Show possibility ReportShow_Add(RSdetail.db,RSdetail.name,RSdetail.type); break; } } } // NOT IMPLEMENTED else { // generic Subject, use the Reporting DB foreach (ReportingSubject.Detail RSd in RS.Details) { Array.Resize(ref ReportConditions, ReportConditions.Length + 1); ReportConditions[ReportConditions.Length - 1] = new ReportCondition(RSd, ReportConditions.Length - 1); if (!isnew) { // check to see if exists in current RD foreach (ReportDefinition.Detail RDdetail in RD.Description.Details) { if (RSd.name == RDdetail.name) { // if an RD is loaded, this gives us the selection details ReportConditions[ReportConditions.Length - 1].RDdetail = RDdetail; break; } } } } } } // END of Subject_Set() return true; }
public bool _output = true; // true if included in output #endregion Fields #region Constructors public ReportCondition(ReportingSubject.Detail detail, int id) { this.detail = detail; this.id = id; }
protected void Page_PreRender() { try { // Prevent browser from caching pages!!! Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now; Response.Expires = 0; Response.CacheControl = "no-cache"; // Get DB from session try { SQL = (UIFS.SQL)Session["SQL"]; SQL.OpenDatabase(); // we expect to already be open, but check nonetheless } catch { // Session Expired AJAXhtmloutput = "<input type='hidden' id='SystemAlert' value=\":SystemAlert: Your Session Expired\nPlease refresh the page\n :-/ :SystemAlertEnd:\" />"; return; } // As long as the Session is functioning normally and passing data, we can continue if (Session["KeepAlive"] != null) { // Check query code to see what action we need to perform switch (Request.QueryString["cmd"]) { // TODO: we need to add security here or there case "0": //kill session Session.Clear(); Session.Abandon(); return; case "TEST": // TEST //Form_Output = new UIFS.Form_Output(); //Form_Input.InputValue[] FormValues = new Form_Input.InputValue[0]; //outputHTML = ""; outputJS = ""; //SQL = new SQL(ConfigurationManager.AppSettings["SQL_Default"]); //SQL.OpenDatabase(); //UIFSForm = new Form(ref SQL); //if (UIFSForm.Load(8, 1, ref FormData)) //{ // Form_Output.HTML(FormData, ref outputHTML, ref outputJS); // FormValues = Form_Output.LoadData(FormData, SQL, 1); // if (FormValues != null) // { // outputJS = outputJS + Form_Output.PopulateForm_js(FormData, FormValues); // } // else // { // outputHTML = "ERROR: null returned"; // } // outputJS = "<script type='text/javascript'>" + outputJS + "</script>"; // comes raw javascript // AJAXhtmloutput = outputHTML + outputJS; //} //SQL.CloseDatabase(); // close after all calls break; /*----/========================================================================================\---- * ---| COMMON Functionality SECTION |---- * ----\========================================================================================/---- * */ case "300": // Outputs a datatable for choosing UIFS Forms: ALL, one, or multiple (singular or plural) string html = "", js = ""; html = "<div id='FormSelect'><table cellpadding='0' cellspacing='0' border='0' class='display' id='DataTables_FormSelect'>" + "<thead><tr><th>ID</th><th>Name</th><th>version</th><th>Created by</th><th>Description</th></tr></thead>" + "<tbody></tbody></table></div>"; js = "<script type='text/javascript'>" + "$('#DataTables_FormSelect').dataTable( {" + "'aoColumnDefs': [ " + "{ 'bSearchable': false, 'bVisible': false, 'aTargets': [ 0 ] }]," + // 0 would be the id field... "'bProcessing': false," + // *one-time* request for data "'bJQueryUI':true," + // use jquery ui theme "'sPaginationType': 'full_numbers'," + // for the paging navigation (either full or 2 arrows) "'aLengthMenu': [[50, 100, 200, -1], [50, 100, 200, 'All']],"+ "'sScrollY': '250px'," + // MUST set our height to keep this thing under control! "'sScrollX':'100%',"+ // Set width to container size...add scrollbar in table "'sHeightMatch': 'none',"+ // do not let calculate row height...for faster display "'sAjaxSource': 'ajax.aspx?cmd=300.1',"+ // The next line adds a row click function (allows selection multiple) //"'fnInitComplete': function () {$('tr').click(function () {if ($(this).hasClass('row_selected')) $(this).removeClass('row_selected'); else $(this).addClass('row_selected'); }); }"+ "});" + "SubjectTable = $('#DataTables_FormSelect').dataTable();" + // Single row selection...(just copied code from site, it is very wasteful of resources..temp anyway) "$('#DataTables_FormSelect tbody').click(function(event) {$(SubjectTable.fnSettings().aoData).each(function (){ $(this.nTr).removeClass('row_selected'); }); $(event.target.parentNode).addClass('row_selected'); });" + "</script>"; AJAXhtmloutput= html+js; break; case "300.1": // outputs the datatable *data* in json format string json = "{ \"aaData\": ["; string description = "",createdby=""; UIFSForm = new UIFS.Form(ref SQL); // Get list of forms UIFS.FormLIST[] FormsList = UIFSForm.List(); //. for each form, build array for (int t = 0; t < FormsList.Length; t++) { //. needs to be filtered createdby = Format4DataTablesJSON(FormsList[t].createdby); description = Format4DataTablesJSON(FormsList[t].description); //description = Newtonsoft.Json.JsonConvert.SerializeObject(FormsList[t].description); json = json + "[\"" + FormsList[t].id + "\",\"" + FormsList[t].name + "\",\"" + FormsList[t].currentversion + "\",\""+createdby + "\",\"" + description+"\"],"; } json = json.Remove(json.Length - 1); //remove last comma json = json + "]}"; AJAXhtmloutput = json; break; /*----/========================================================================================\---- * ---| REPORT DESIGNER SECTION |---- * ----\========================================================================================/---- * */ case "800": // Ask to load existing or start new break; case "801": // Load Report Display //. get list SQL.Query = SQL.SQLQuery.Reporting_LoadReportList; SQL.cmd = SQL.Command(SQL.Data); SQL.sdr = SQL.cmd.ExecuteReader(); html = "<table>"; if (SQL.sdr.HasRows) { while (SQL.sdr.Read()) { html = html + "<tr onclick=\"OpenReport('" + Convert.ToDouble(SQL.sdr[0]) + "')\" onmouseover=\"$(this).find('.lang').show();\" onmouseout=\"$(this).find('.lang').hide();\" >" + "<td><div class='title'>" + SQL.sdr.GetString(1) + "</div><div class='lang ReportDefinitionLanguage'>" + SQL.sdr.GetString(2) + "</div></td></tr>"; } } SQL.sdr.Close(); html = html+"</table>"; AJAXhtmloutput = html; break; case "801.1": // Load existing report Reporting = new Reporting(ref SQL); Reporting.Load_ReportingSubjects(); ReportDefinition = Reporting.Load_ReportingDefinition(Convert.ToInt64(Request.QueryString["id"])); int iRS = Reporting.Find_ReportingSubject(ReportDefinition.Description.name); Reporting.GUI = new Reporting.GraphicalUserInterface(ReportDefinition); Reporting.GUI.Subject_Set(false,ref Reporting.FormLinks,Reporting.ReportingSubjects[iRS],ref Reporting.SQL, ref Reporting.ReportingSubjects); Session["Reporting"] = Reporting; break; case "802": // Start new from Subject Chosen (currently a UIFS Form) Reporting = new Reporting(ref SQL); Reporting.Load_ReportingSubjects(); ReportDefinition = new UIFS.ReportDefinition(); ReportDefinition.Description = new UIFS.ReportDefinition.Subject(); ReportDefinition.Description.lang = "singular"; // singular, plural, ALL ReportDefinition.Description.name = "Form"; // this is a UIFS Form object/subject ReportDefinition.Description.selection = Request.QueryString["id"]; //Form id(s) ReportingSubject RS = new ReportingSubject(); Reporting.GUI = new Reporting.GraphicalUserInterface(ReportDefinition); // setup GUI Reporting.GUI.Subject_Set(true, ref Reporting.FormLinks, RS, ref SQL, ref Reporting.ReportingSubjects); // load data Session["Reporting"] = Reporting; break; case "803": // Save Report Display Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.SQL.OpenDatabase(); if (Reporting.BuildReport(ref Reporting.GUI.RD)) { html = "<div class='input'>Title: <input id='ReportTitle' type='text' value='" + Reporting.GUI.RD.title + "' size='66' /></div>"; html = html + "<div class='ReportLang'>" + Reporting.GUI.RD.language + "</div>"; Session["Reporting"] = Reporting; } else { html = "<input type='hidden' value=':SystemAlert: There was an error trying to BUILD the report :( :SystemAlertEnd:' />"; } //Reporting.SQL.CloseDatabase(); AJAXhtmloutput = html; break; case "803.1": // SAVE REPORT Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.SQL.OpenDatabase(); //. update title Reporting.GUI.RD.title = Request.QueryString["title"]; if (Reporting.Save_ReportingDefinition(ref Reporting.GUI.RD,this.User.Identity.Name)) { AJAXhtmloutput = " :SystemAlert: Report Saved! :) :SystemAlertEnd: "; } else { AJAXhtmloutput = " :SystemAlert: There was an error trying to save the report :( :SystemAlertEnd: "; } Session["Reporting"] = Reporting; //Reporting.SQL.CloseDatabase(); break; case "808": // Report Subject display Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.aReportOn_UIFSForm(Convert.ToInt32(Reporting.GUI.RD.Description.selection)); AJAXhtmloutput = Reporting.aReportOn; //Reporting.GUI.RD.Description.name break; case "809": // Report Definition display Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); AJAXhtmloutput= Reporting.GUI.ReportDefinition_Where(); break; case "810": // Report Options display Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); AJAXhtmloutput= Reporting.GUI.WHERE(); break; case "810.1": // Report Options - single option redraw Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.GUI.ReportConditions[Convert.ToInt32(Request.QueryString["id"])].RDdetail.lang = Request.QueryString["phrase"]; AJAXhtmloutput=Reporting.GUI.ReportConditions[Convert.ToInt32(Request.QueryString["id"])].Edit(); Session["Reporting"] = Reporting; break; case "810.2": // Report Option: USE - get value(s) of control (outputs js) Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); int Ctrlid = Convert.ToInt32(Request.QueryString["id"]); FormControl FC = Reporting.GUI.ReportConditions[Ctrlid].Control; ControlType CT = Reporting.GUI.ReportConditions[Ctrlid].Control_type; FormData = new UIFS.FormDataStruct(); //. we have to manually add our control in to get parsed Array.Resize(ref FormData.ControlList, 1); FormData.ControlList[0] = new FormDataStruct.ControlListDetail(); FormData.ControlList[0].id = Ctrlid; FormData.ControlList[0].index = 0; FormData.ControlList[0].type = CT; FormData.AddControl(CT,FC,false); Form_Input = new Form_Input(); AJAXhtmloutput = Form_Input.GetInput_js(FormData); // comes raw javascript Session["FormData"] = FormData; break; case "810.3": // Report Option: USE - passed in value(s) int RCid = Convert.ToInt32(Request.QueryString["id"]); int iRDDd = -1; Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); FormData = (UIFS.FormDataStruct)Session["FormData"]; Form_Input = new Form_Input(); UIFS.Form_Input.InputValue[] IV = Form_Input.FilterInput(Request.QueryString, FormData); //. give this ReportCondition a selection value if (IV[0].value == null) { // use Start/End (From/To) values Reporting.GUI.ReportConditions[RCid].RDdetail.selection = IV[0].Start + ',' + IV[0].End; } else { // default to just returning a single value Reporting.GUI.ReportConditions[RCid].RDdetail.selection = IV[0].value; } //. add a new ReportDefinition.Description.Detail ReportDefinition.Detail detail = new UIFS.ReportDefinition.Detail(); if (Reporting.GUI.ReportConditions[RCid].detail.name.StartsWith("[global]")) { detail.name = Reporting.GUI.ReportConditions[RCid].detail.name; } else {detail.name = Reporting.GUI.ReportConditions[RCid].detail.db;} detail.lang = Reporting.GUI.ReportConditions[RCid].RDdetail.lang; detail.selection = Reporting.GUI.ReportConditions[RCid].RDdetail.selection; iRDDd = Reporting.GUI.RD.Description.AddDetail(detail); // already holds needed/updated information! Reporting.GUI.ReportConditions[RCid].iRDDdetail = iRDDd; Session["Reporting"] = Reporting; break; case "810.4": // Report Option: Remove int RC_remove = Convert.ToInt32(Request.QueryString["id"]); Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.GUI.RD.Description.DelDetail(Reporting.GUI.ReportConditions[RC_remove].RDdetail.name); Reporting.GUI.ReportConditions[RC_remove].iRDDdetail = -1; // not being used anymore Session["Reporting"] = Reporting; break; case "811": // Report Field Selection (THAT SHOWS) display Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); AJAXhtmloutput= Reporting.GUI.THATSHOWS(); break; case "811.1": // Report (Field) selection (from js: Aggregate_Add) ReportDefinition.Aggregate RDA = new UIFS.ReportDefinition.Aggregate(); int iShow_add = Convert.ToInt32(Request.QueryString["id"]); // our index Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.GUI.ReportShowing[iShow_add].manipulation = Request.QueryString["mani"]; RDA.db = Reporting.GUI.ReportShowing[iShow_add].db; RDA.title = Reporting.GUI.ReportShowing[iShow_add].title; RDA.datatype = Reporting.GUI.ReportShowing[iShow_add].datatype; RDA.manipulation = Reporting.GUI.ReportShowing[iShow_add].manipulation; Reporting.GUI.ReportShowing[iShow_add].iAggr = Reporting.GUI.RD.Description.AddAggregrate(RDA); // push our new aggr. Session["Reporting"] = Reporting; break; case "890": // Preview Report (this outputs a datatables..) Reporting = (Reporting)Convert.ChangeType(Session["Reporting"], typeof(Reporting)); Reporting.SQL.OpenDatabase(); //TODO: should check to see if built or not...save to session.. if (!Reporting.BuildReport(ref Reporting.GUI.RD)) { //Reporting.SQL.CloseDatabase(); AJAXhtmloutput = " :SystemAlert: There was an error trying to process the report :( :SystemAlertEnd: "; return; } string AggrOutput = Reporting.Output_Aggregation(Reporting.GUI.RD); string DataTablesOutput = Reporting.Output_DataTables(Reporting.GUI.RD); js = ""; filterJavascript(ref AggrOutput, ref js); filterJavascript(ref DataTablesOutput, ref js); AJAXhtmloutput = "<div id='ReportLang'>" + Reporting.GUI.RD.language + "</div>" + "<div id='ReportAggr'>" + AggrOutput + "</div>" + "<div id='ReportData'>" + DataTablesOutput + "</div>" + "<script type='text/javascript'>" + js + "</script>"; //Reporting.SQL.CloseDatabase(); break; /* ----/========================================================================================\---- * ----| DESIGNER SECTION |---- * ----\========================================================================================/---- * * */ case "900": // New Form FormData = (UIFS.FormDataStruct)Session["FormData"]; if (Convert.ToBoolean(Request.QueryString["confirmation"])) { // Confirmation is TRUE, create new form FormData = new UIFS.FormDataStruct(); FormData.newform = true; // not sure if we use this for anything...but it is functional Session["FormData"] = FormData; AJAXhtmloutput = ""; } else { // if the confirmation variable is set to true, then we skip the check and start a new form // First, run through current form and see if there are any unsaved changes if (FormData.ControlList != null) { for (int t = 0; t < FormData.ControlList.Length; t++) { if (FormData.ControlList[t].controlchanged || FormData.ControlList[t].added || FormData.ControlList[t].removed) { // If the current form has unsaved changes, tell the calling javascript with this msg AJAXhtmloutput = "UNSAVED CHANGES"; break; } } } } break; case "901": // Load/Open Form Dialog AJAXhtmloutput = Form_Open(); break; case "901.1": // Actual Load Form data UIFSForm = new UIFS.Form(ref SQL); FormData = new UIFS.FormDataStruct(); if (!UIFSForm.Load(Convert.ToInt32(Request.QueryString["formid"]),-1, ref FormData)) { // failed to load AJAXhtmloutput = " :SystemAlert: Failed to load form! ExMsg:" + UIFSForm.ErrorEx.Message + "\nStacktrace:" + UIFSForm.ErrorEx.StackTrace + " :SystemAlertEnd: "; SQL.WriteLog_Error(UIFSForm.ErrorEx, "Failed to load form: " + Request.QueryString["formid"], "UIFS.ajax:901.1"); return; } Session["FormData"] = FormData; // Save to session break; case "901.2": // New Form based on... //. load a form and clear out needed variables to make it a "new" form UIFSForm = new UIFS.Form(ref SQL); FormData = new UIFS.FormDataStruct(); if (!UIFSForm.Load(Convert.ToInt32(Request.QueryString["formid"]),-1, ref FormData)) { // failed to load AJAXhtmloutput = " :SystemAlert: Failed to load form! ExMsg:" + UIFSForm.ErrorEx.Message + "\nStacktrace:" + UIFSForm.ErrorEx.StackTrace + " :SystemAlertEnd: "; SQL.WriteLog_Error(UIFSForm.ErrorEx, "Failed to load form: " + Request.QueryString["formid"], "UIFS.ajax:901.2"); return; } // reset data for new form FormData.name="";FormData.description="";FormData.id=0;FormData.version=0;FormData.newform=true; Session["FormData"] = FormData; // Save to session break; case "903": // Save Dialog AJAXhtmloutput = Form_Save(); break; case "903.1": // Save Form string ValidationMessage=""; FormData = (UIFS.FormDataStruct)Session["FormData"]; if (FormData.ControlList == null) { AJAXhtmloutput = " :SystemAlert: No form to save, doh! :SystemAlertEnd: "; return; } FormData.name = Request.QueryString["name"]; FormData.description = Request.QueryString["desc"]; UIFSForm = new UIFS.Form(ref SQL); if (UIFSForm.Validate(ref FormData, ref ValidationMessage)) { if (UIFSForm.Save(ref FormData)) { AJAXhtmloutput = " :SystemAlert: Form Saved! :SystemAlertEnd: "; // After form is saved, we need to reload it in order to properly get the changes // so, we will just clear out the Form here to act like a new form was started FormData = new UIFS.FormDataStruct(); Session["FormData"] = FormData; } else { AJAXhtmloutput = " :SystemAlert: Failed to save form :SystemAlertEnd: "; } } else { AJAXhtmloutput = " :SystemAlert: " + ValidationMessage + " :SystemAlertEnd: "; } break; case "904": // Form Settings dialog AJAXhtmloutput = Form_Settings(); break; case "904.1": // Form Settings SAVE // TODO: should it just "save" to the session or the db too? FormData = (UIFS.FormDataStruct)Session["FormData"]; FormData.name = Request.QueryString["name"]; FormData.description = Request.QueryString["desc"]; //FormData.Layout.OutputFormat = (UIFS.Layout.Style)Convert.ToInt32(Request.QueryString["Layout_NumOfColumns"]); Session["FormData"] = FormData; AJAXhtmloutput = " :SystemAlert: Form Settings Saved! :SystemAlertEnd: "; break; case "910": // Live Preview FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.Form_Output FormPreview = new UIFS.Form_Output(); outputHTML=""; outputJS=""; FormPreview.HTML(FormData, ref outputHTML, ref outputJS); // TOOLBAR: with buttons for testing/debugging outputHTML = "<div id='FormPreview_HTML_Toolbar'><span class='submitvalues' onclick='FakeFormSubmit_GetValues()'>FakeSubmit</span>"+ "<span class='submitdata' onclick='FakeFormSubmit_SaveData()'>FakeSaveData</span>" + "<span class='' onclick='FakeFormSubmit_Validate()'>FakeValidate</span>" + "</div<div id='FormPreview_HTML_Toolbar_spacer' style='height:10px;'></div>" + outputHTML; outputJS = "<script type='text/javascript'>" + outputJS + "</script>"; // comes raw javascript AJAXhtmloutput = outputHTML + outputJS; FormPreview = null; FormData=null; break; case "910.1": // Live Preview: HTML Toolbar: getvalues (fake submit) FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.Form_Input FI_getvalues = new Form_Input(); //AJAXhtmloutput = "<script type='text/javascript'>" + Form_Input.GetInput_js(FormData) + "</script>"; // comes raw javascript AJAXhtmloutput = FI_getvalues.GetInput_js(FormData); // comes raw javascript FI_getvalues = null; FormData=null; break; case "910.2": // Live Preview: HTML Toolbar: formsave (Test Form saving data) FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.Form_Input FI_save = new Form_Input(); UIFS.Form_Input.InputValue[] InputValues = FI_save.FilterInput(Request.QueryString, FormData); long formid = -1; if (FI_save.Save(FormData, InputValues, ref SQL, true, ref formid)) { // successful AJAXhtmloutput = "<input type='hidden' id='SystemAlert' value=\" :SystemAlert: Form Data Save: Successful! :SystemAlertEnd: \" />"; } else { AJAXhtmloutput = "<input type='hidden' id='SystemAlert' value=\" :SystemAlert: Form Data Save: Failed! :SystemAlertEnd: \" />"; } FI_save = null; FormData = null; break; case "1000": // Designer Main Screen Display switch (Request.QueryString["Option"]){ case "Controls": int FormCnt_Textbox = 0, FormCnt_List = 0, FormCnt_Checkbox = 0, FormCnt_DateTime = 0, FormCnt_Number = 0, FormCnt_Percentage=0,FormCnt_Range=0; FormData = (UIFS.FormDataStruct)Session["FormData"]; if (FormData.ControlList != null) { // get count of each # of controls foreach (UIFS.FormDataStruct.ControlListDetail cld in FormData.ControlList) { switch (cld.type) { case ControlType.Checkbox: FormCnt_Checkbox += 1; break; case ControlType.DateTime: FormCnt_DateTime += 1; break; case ControlType.Number: FormCnt_Number += 1; break; case ControlType.Percentage: FormCnt_Percentage += 1; break; case ControlType.List: FormCnt_List += 1; break; case ControlType.Range: FormCnt_Range += 1; break; case ControlType.Textbox: FormCnt_Textbox += 1; break; } } } html = "<div id='CTRL_Textbox' class='CTRL ui-widget-content'>Text Box (<span style='color:Blue;'>" + FormCnt_Textbox + "</span>)</div>" + "<div id='CTRL_List' class='CTRL ui-widget-content'>List (<span style='color:Blue;'>" + FormCnt_List + "</span>)</div>" + "<div id='CTRL_List_HourBlock' class='subCTRL ui-widget-content'>Hour Blocks [Time]</div>" + "<div id='CTRL_Checkbox' class='CTRL ui-widget-content'>Checkbox (<span style='color:Blue;'>" + FormCnt_Checkbox + "</span>)</div>" + "<div id='CTRL_DateTime' class='CTRL ui-widget-content'>Date/Time (<span style='color:Blue;'>" + FormCnt_DateTime + "</span>)</div>" + "<div id='CTRL_Number' class='CTRL ui-widget-content'>Number (<span style='color:Blue;'>" + FormCnt_Number + "</span>)</div>" + "<div id='CTRL_Percentage' class='CTRL ui-widget-content'>Percentage (<span style='color:Blue;'>" + FormCnt_Percentage + "</span>)</div>" + "<div id='CTRL_Range' class='CTRL ui-widget-content'>Range (<span style='color:Blue;'>" + FormCnt_Range + "</span>)</div>" ; AJAXhtmloutput = AJAXhtmloutput + html; FormData = null; break; case "Form": Designer_FormTemplate(); break; case "Menu": html = "Save Form, New Form, Load Form, Full Preview"; break; default: break; } break; case "1001": // DISPLAY Add/Create control dialog CCDesigner = new UIFS.Designer(); switch (Request.QueryString["type"]) { case "CTRL_Textbox": // create an empty control UIFS.FormControl.Textbox CTRL_TextBox = new UIFS.FormControl.Textbox(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_TextBox.id = -1; js = FormData.jQuery.Textbox_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.Textbox, CTRL_TextBox) + js; break; case "CTRL_List": UIFS.FormControl.List CTRL_List = new UIFS.FormControl.List(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_List.id = -1; js = FormData.jQuery.List_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.List, CTRL_List) + js; break; case "CTRL_Checkbox": UIFS.FormControl.Checkbox CTRL_Checkbox = new UIFS.FormControl.Checkbox(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_Checkbox.id = -1; js = FormData.jQuery.Checkbox_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.Checkbox, CTRL_Checkbox) + js; break; case "CTRL_DateTime": UIFS.FormControl.DateTime CTRL_DateTime = new UIFS.FormControl.DateTime(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_DateTime.id = -1; js = FormData.jQuery.DateTime_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.DateTime, CTRL_DateTime) + js; break; case "CTRL_Number": UIFS.FormControl.Number CTRL_Number = new UIFS.FormControl.Number(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_Number.id = -1; js = FormData.jQuery.Number_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.Number, CTRL_Number) + js; break; case "CTRL_Percentage": UIFS.FormControl.Percentage CTRL_Percentage = new UIFS.FormControl.Percentage(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_Percentage.id = -1; js = FormData.jQuery.Percentage_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.Percentage, CTRL_Percentage) + js; break; case "CTRL_Range": UIFS.FormControl.Range CTRL_Range = new UIFS.FormControl.Range(); FormData = new UIFS.FormDataStruct(); // to use the jquery routines CTRL_Range.id = -1; js = FormData.jQuery.Range_AddNew(); // Remove save buttons AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.Range, CTRL_Range) + js; break; } break; case "1002": // Remove Control FormData = (UIFS.FormDataStruct)Session["FormData"]; int iCtrl = FormData.Find_ControlListEntry_byControlID(Convert.ToInt32(Request.QueryString["id"])); // reorder to last, so that active controls are ordered properly FormData.Sort_ControlList(Convert.ToInt32(Request.QueryString["id"]), FormData.ControlList.Length); // check if existing control or new control if (FormData.ControlList[iCtrl].added) { // This control was added during this session (not saved) - remove from existence! FormData.RemoveControl(Convert.ToInt32(Request.QueryString["id"])); } else { // mark as removed (routines on Save) FormData.ControlList[iCtrl].removed = true; } Session["FormData"] = FormData; AJAXhtmloutput = ""; break; case "1050": // Reorder controls FormData = (UIFS.FormDataStruct)Session["FormData"]; int Controlid = Convert.ToInt32(Request.QueryString["id"].Substring(Request.QueryString["id"].IndexOf("_")+1)); FormData.Sort_ControlList(Controlid, Convert.ToInt32(Request.QueryString["sortindex"])); Session["FormData"] = FormData; break; /* --------------------------------------------------------------------------------------------------- * -- Control Update/Addition Functions * --------------------------------------------------------------------------------------------------- */ // 1099 = Common Properties for all controls functions case "1099": // Update FormData = (UIFS.FormDataStruct)Session["FormData"]; FormControl ControlChanges = new FormControl(); ControlChanges.name = Request.QueryString["name"]; ControlChanges.prompt = Request.QueryString["prompt"]; ControlChanges.tip = Request.QueryString["tip"]; ControlChanges.required = Convert.ToBoolean(Request.QueryString["req"]); FormData.Update_ControlCommonProperties(Convert.ToInt32(Request.QueryString["id"]), ControlChanges,true); Session["FormData"] = FormData; break; // 1100 = Textbox Control functions case "1100": // Textbox Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.Textbox[iControl].lines = Convert.ToInt32(Request.QueryString["lines"]); FormData.Textbox[iControl].width = Convert.ToInt32(Request.QueryString["width"]); FormData.Textbox[iControl].FullText = Convert.ToBoolean(Request.QueryString["fulltext"]); // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; break; case "1100.1": // Textbox Control - ADD NEW FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.Textbox newTBC = new UIFS.FormControl.Textbox(); newTBC.name = Request.QueryString["-1_Name"].ToString(); newTBC.prompt = Request.QueryString["-1_Prompt"].ToString(); newTBC.tip = Request.QueryString["-1_Tip"].ToString(); newTBC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newTBC.lines = Convert.ToInt32(Request.QueryString["-1_Lines"]); newTBC.width = Convert.ToInt32(Request.QueryString["-1_Width"]); newTBC.FullText = Convert.ToBoolean(Request.QueryString["-1_FullText"]); iControl = FormData.AddControl(UIFS.ControlType.Textbox, newTBC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; break; case "1100.2": // Textbox Control - break; // 1101 = List Control functions case "1101": // List Control - Add Remove from Option List OR update properties CCDesigner = new UIFS.Designer(); FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // List control id iControl = FormData.Find_Controlindex_byID(id); // find List control int iItem, newOrderNum; bool reDraw = false; switch (Request.QueryString["Option"]) { case "Add": string name = Request.QueryString["name"].ToString(); string value = Request.QueryString["value"].ToString(); FormData.List[iControl].AddItem(name, value); // add this item reDraw = true; break; case "Remove": iItem = Convert.ToInt32(Request.QueryString["i"]); // index of item FormData.List[iControl].RemoveItem(iItem); // remove this item reDraw = true; break; case "ReOrder": iItem = Convert.ToInt32(Request.QueryString["item"]); // index of item newOrderNum = Convert.ToInt32(Request.QueryString["newindex"]); // new index# FormData.List[iControl].ReOrderItem(iItem, newOrderNum); // reorder reDraw = true; // We MUST redraw here because the remove buttons are indexed for each option break; case "update": FormData.List[iControl].type = (FormControl.List.listtype)Convert.ToByte(Request.QueryString["type"]); break; } if (reDraw) { // we need to reinitialize jquery (AJAX picks up java at end of output and executes it) js = FormData.jQuery.List(FormData.List[iControl].id); AJAXhtmloutput = CCDesigner.ControlProperties(UIFS.ControlType.List, FormData.List[iControl]) + js; } // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; // Push back to session break; case "1101.1": // List Control - Add New FormData = (UIFS.FormDataStruct)Session["FormData"]; newLC = new UIFS.FormControl.List(); newLC.name = Request.QueryString["-1_Name"].ToString(); newLC.prompt = Request.QueryString["-1_Prompt"].ToString(); newLC.tip = Request.QueryString["-1_Tip"].ToString(); newLC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newLC.type = (FormControl.List.listtype)Convert.ToByte(Request.QueryString["-1_type"]); iControl = FormData.AddControl(UIFS.ControlType.List, newLC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; break; case "1101.2": // List Control - (Predefined) Hour Blocks FormData = (UIFS.FormDataStruct)Session["FormData"]; newLC = new UIFS.FormControl.List(); newLC.name = "Hour Block Time Selection"; newLC.prompt = "Choose the time frame."; newLC.tip = "Please select the correct hour time frame"; newLC.type = FormControl.List.listtype.slider; newLC.Items = FormControl.List.HourBlocks; // use static (Predefined) values iControl = FormData.AddControl(UIFS.ControlType.List, newLC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; break; // Checkbox functions case "1102": // Checkbox Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.Checkbox[iControl].type = (UIFS.FormControl.Checkbox.checkboxtype)Convert.ToInt32(Request.QueryString["type"]); FormData.Checkbox[iControl].initialstate = Convert.ToBoolean(Request.QueryString["initialstate"]); FormData.Checkbox[iControl].hasinput = Convert.ToBoolean(Request.QueryString["hasinput"]); // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; break; case "1102.1": // Add new checkbox control FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.Checkbox newCbC = new UIFS.FormControl.Checkbox(); newCbC.name = Request.QueryString["-1_Name"].ToString(); newCbC.prompt = Request.QueryString["-1_Prompt"].ToString(); newCbC.tip = Request.QueryString["-1_Tip"].ToString(); newCbC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newCbC.type = (UIFS.FormControl.Checkbox.checkboxtype)Convert.ToInt32(Request.QueryString["-1_type"]); newCbC.initialstate = Convert.ToBoolean(Request.QueryString["-1_initialstate"]); newCbC.hasinput = Convert.ToBoolean(Request.QueryString["-1_hasinput"]); iControl = FormData.AddControl(UIFS.ControlType.Checkbox, newCbC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; break; // DateTime functions case "1103": // DateTime Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.DateTime[iControl].type = (UIFS.FormControl.DateTime.datetimetype)Convert.ToInt32(Request.QueryString["type"]); // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; break; case "1103.1": // Add a new DateTime Control FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.DateTime newDTC = new UIFS.FormControl.DateTime(); newDTC.name = Request.QueryString["-1_Name"].ToString(); newDTC.prompt = Request.QueryString["-1_Prompt"].ToString(); newDTC.tip = Request.QueryString["-1_Tip"].ToString(); newDTC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newDTC.type = (UIFS.FormControl.DateTime.datetimetype)Convert.ToInt32(Request.QueryString["-1_type"]); iControl = FormData.AddControl(UIFS.ControlType.DateTime, newDTC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; break; // 1104... = Number Control functions case "1104": // Number Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.Number[iControl].min = Convert.ToDecimal(Request.QueryString["min"]); FormData.Number[iControl].max = Convert.ToDecimal(Request.QueryString["max"]); FormData.Number[iControl].interval = Convert.ToDecimal(Request.QueryString["interval"]); FormData.Number[iControl].slider = Convert.ToBoolean(Request.QueryString["slider"]); // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; // save break; case "1104.1": // Add a new Number Control FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.Number newNC = new UIFS.FormControl.Number(); newNC.name = Request.QueryString["-1_Name"].ToString(); newNC.prompt = Request.QueryString["-1_Prompt"].ToString(); newNC.tip = Request.QueryString["-1_Tip"].ToString(); newNC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newNC.min = Convert.ToDecimal(Request.QueryString["-1_min"]); newNC.max = Convert.ToDecimal(Request.QueryString["-1_max"]); newNC.interval = Convert.ToDecimal(Request.QueryString["-1_interval"]); newNC.slider = Convert.ToBoolean(Request.QueryString["-1_slider"]); iControl = FormData.AddControl(UIFS.ControlType.Number, newNC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; // save break; // 1105... = Percentage Control functions case "1105": // Percentage Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.Percentage[iControl].interval = Convert.ToInt32(Request.QueryString["interval"]); if (FormData.Percentage[iControl].interval <= 0) { FormData.Percentage[iControl].interval = 1; } // CANNOT BE ZERO // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; // save break; case "1105.1": // Add a new Percentage Control FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.Percentage newPC = new UIFS.FormControl.Percentage(); newPC.name = Request.QueryString["-1_Name"].ToString(); newPC.prompt = Request.QueryString["-1_Prompt"].ToString(); newPC.tip = Request.QueryString["-1_Tip"].ToString(); newPC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newPC.interval = Convert.ToInt32(Request.QueryString["-1_interval"]); if (newPC.interval <= 0) { newPC.interval = 1; } // CANNOT BE ZERO iControl = FormData.AddControl(UIFS.ControlType.Percentage, newPC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; // save break; // 1106... = Range Control functions case "1106": // Range Control - update properties FormData = (UIFS.FormDataStruct)Session["FormData"]; id = Convert.ToInt32(Request.QueryString["id"]); // control id iControl = FormData.Find_Controlindex_byID(id); FormData.Range[iControl].type = (UIFS.FormControl.Range.Rangetype)Convert.ToInt32(Request.QueryString["type"]); FormData.Range[iControl].min = Convert.ToDecimal(Request.QueryString["min"]); FormData.Range[iControl].max = Convert.ToDecimal(Request.QueryString["max"]); // Control changed, mark for update FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].controlchanged = true; FormData.ControlList[FormData.Find_ControlListEntry_byControlID(id)].newversionneeded = true; Session["FormData"] = FormData; // save break; case "1106.1": // Add a new Range Control FormData = (UIFS.FormDataStruct)Session["FormData"]; UIFS.FormControl.Range newRC = new UIFS.FormControl.Range(); newRC.name = Request.QueryString["-1_Name"].ToString(); newRC.prompt = Request.QueryString["-1_Prompt"].ToString(); newRC.tip = Request.QueryString["-1_Tip"].ToString(); newRC.required = Convert.ToBoolean(Request.QueryString["-1_Req"]); newRC.type = (UIFS.FormControl.Range.Rangetype)Convert.ToInt32(Request.QueryString["-1_type"]); newRC.min = Convert.ToDecimal(Request.QueryString["-1_min"]); newRC.max = Convert.ToDecimal(Request.QueryString["-1_max"]); iControl = FormData.AddControl(UIFS.ControlType.Range, newRC, true); // Add the new control // New Control, mark for addition FormData.ControlList[FormData.ControlList.Length - 1].added = true; // must be called before Sort_ControlList FormData.Sort_ControlList(FormData.ControlList[FormData.ControlList.Length - 1].id, Convert.ToInt32(Request.QueryString["sortindex"])); // Reorder Session["FormData"] = FormData; // save break; default: // THE querystring code did not check out, ignore break; } } else { AJAXhtmloutput = "<input type='hidden' id='SystemAlert' value=\" :SystemAlert: Your Session has Expired!\n\nPlease exit the application :SystemAlertEnd: \" />"; //SQL.WriteLog(0, "Session Expired/No session data exists", this.User.Identity.Name); } } catch (Exception ex) { AJAXhtmloutput = "<input type='hidden' id='SystemAlert' value=\" :SystemAlert: An ERROR occured\r\nMessage:"+ex.Message+"\r\nStackTrace:"+ex.StackTrace+"<br/> :SystemAlertEnd: \" />"; // //SQL.WriteLog_AppError(0, "AJAX Routine Failed: " + SQL.ParseInput(Request.QueryString.ToString()), "PreRender", ex, this.User.Identity.Name); } finally { } }