00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <iostream>
00015 #include <iomanip>
00016 #include "cgiTemplates.h"
00017 #include "connectstring"
00018 #include "forms.h"
00019 #include "ocTypes.h"
00020 #include "ocString.h"
00021 #include "read_write_base.hpp"
00022 #include "forms_base.hpp"
00023 #include "list_base.hpp"
00024 #include "cgiTemplates.h"
00025 #include "Composite_Query.hpp"
00026 #include "list_base.hpp"
00027 #include "sublist_base.hpp"
00028 #include "openLogin.h"
00029 #include "anyData.hpp"
00030
00031
00032 using namespace std;
00033 openLogin oLogin;
00034 #include "InfoPoints.hpp"
00035
00036 class Scheme_Field_List: public sublist_base
00037 {
00038 public:
00039 ocString Parent_Id;
00040
00041 Scheme_Field_List(cgiScript&sc):sublist_base(sc){;}
00042 ~Scheme_Field_List(){;}
00043
00044 bool list_display( void )
00045 {
00046 bool breturn = true;
00047
00048 string sql = "select Id, Scheme_Table, Name, Col_Type, Links_To "
00049 "from Scheme_Field where Scheme_Table = " ;
00050 sql += Parent_Id;
00051 hotCol=-1;
00052
00053 string heading = "Use|Table|Name|Col_Type|Links_To";
00054 emitHeadings(heading);
00055 getData( sql );
00056 emitData();
00057 emitEnd();
00058 return breturn;
00059 }
00060 void sendField( int iField, ocString & td )
00061 {
00062 if( iField==0)
00063 {
00064 ocString el = "<input type=\"checkbox\" name=\"tablechoice\" value=\"";
00065 ocString js = "<script type=\"text/javascript\">addField( '";
00066 el += rs.getField(0).format();
00067 js += rs.getField(0).format();
00068 js += "', '";
00069 js += rs.getField("Name").format();
00070 js += "', '";
00071 js += rs.getField("Scheme_Table").format();
00072 js += "', '";
00073 js += rs.getField("Col_Type").format();
00074 js += "', '";
00075 js += rs.getField("Links_To").format();
00076
00077 js += "');</script>";
00078 webIO << js << endl;
00079 el += "\" onClick='chooseField(this)'/>";
00080 webIO << td.replace( "$data$", el.c_str() );
00081 }
00082 else
00083 sublist_base::sendField( iField, td );
00084 }
00085 };
00086
00087 class Table_Field_List: public list_base
00088 {
00089 public:
00090
00091 Table_Field_List(cgiScript&sc):list_base(sc){;}
00092 ~Table_Field_List(){;}
00093
00094 bool list_display( void )
00095 {
00096 bool breturn = true;
00097 hotCol=-1;
00098 emitHeadings("Use|Name|Abbr ");
00099 getData( "select Id, Name, Abbr from Scheme_Table");
00100 emitData();
00101 emitEnd();
00102 return breturn;
00103 }
00104 void sendField( int iField, ocString & td )
00105 {
00106 if( iField==0)
00107 {
00108 ocString el = "<input type=\"checkbox\" name=\"tablechoice\" value=\"";
00109 ocString js = "<script type=\"text/javascript\">addTable( '";
00110 el += rs.getField(0).format();
00111 js += rs.getField(0).format();
00112 js += "', '";
00113 js += rs.getField(1).format();
00114 js += "', '";
00115 js += rs.getField(2).format();
00116 js += "');</script>";
00117 webIO << js << endl;
00118 el += "\" onClick='chooseTable(this)'/>";
00119 webIO << td.replace( "$data$", el.c_str() );
00120 }
00121 else
00122 list_base::sendField( iField, td );
00123 }
00124 void derived_data_event( void )
00125 {
00126
00127 Scheme_Field_List cList(webIO);
00128 cList.Parent_Id = rs.getField(0).format();
00129 cList.loadListTemplates("Templates/spawninglist.htmp");
00130 webIO << "<tr><td colspan='3' id='" << cList.Parent_Id <<
00131 "fields' style='display:none; padding: 2px 2px 2px 25px; text-align: left; background: white; color: gray;'>"
00132 "<strong>Fields:</strong><br>" << endl;
00133 cList.list_display();
00134 webIO << "</td></tr>" << endl;
00135 }
00136 };
00137 class Composite_Query_form: public Composite_Query_Obj, public forms_base
00138 {
00139 hexEncoder hexify;
00140 public:
00141 Composite_Query_form(cgiScript & script):Composite_Query_Obj(),forms_base(script)
00142 {
00143 setKey(*this);
00144 }
00145 virtual ~Composite_Query_form(){;}
00146
00147 void form_id_transfer( void )
00148 {
00149 llongFXfer( "Id", Id );
00150 }
00151 void form_data_transfer( void )
00152 {
00153 stringFXfer( "Name", Name);
00154 stringFXfer( "Select_Part", Select_Part);
00155 stringFXfer( "From_Part", From_Part);
00156 stringFXfer( "Where_Part", Where_Part);
00157 stringFXfer( "Group_Part", Group_Part);
00158 stringFXfer( "Having_Part", Having_Part);
00159 stringFXfer( "Order_Part", Order_Part);
00160 boolFXfer( "Is_Workflow", Is_Workflow);
00161 Where_Part = hexify.w3hexDecode( Where_Part );
00162 }
00163
00164 bool dbf_action( string mode, changeMap & changes )
00165 {
00166 return db_action( mode, changes );
00167 }
00168
00169
00170 bool form_display( void )
00171 {
00172 bool breturn = true;
00173
00174 ocString sql;
00175
00176 script << makeTop("Composite_Query_Popup.cgi", "Composite_Query")
00177 << formTemplate.getParagraph("advanced_begin");
00178 script << makeStaticBox("Id", "Id", Id ,"8");
00179 script << makeBoolBox("Is_Workflow", "Is_Workflow", Is_Workflow );
00180
00181 script << formTemplate.getParagraph("advanced_end");
00182 script << "<br class='clearall'>" << endl;
00183 script << "<br class='clearall'>" << endl;
00184 script << makeTextBox("Name", "Name", Name ,"50");
00185
00186
00187 script << "<div style=\"margin: 5px; padding: 1px;float: right; "
00188 "color: #247; border:3px solid #279;\" onClick=\"toggleVis('listed')\">"
00189 "Table Guide</div>" << endl;
00190 script << "<br class='clearall'>" << endl;
00191 script << "<div id=\"listed\" style=\"display:none\">" << endl;
00192
00193 Table_Field_List list(script);
00194 list.loadListTemplates("Templates/list.htmp");
00195 list.list_display();
00196 script << "<div style=\"margin: 5px; padding: 1px;float: right; "
00197 "color: #247; border:3px solid #279;\" onClick=\"putQuery()\">"
00198 "Put Query Elements</div>" << endl;
00199 script << "</div><br class='clearall'>" << endl;
00200
00201 script << makeTextArea("Select_Part", "Select_Part", Select_Part ,"6", "100");
00202 script << "<br class='clearall'>" << endl;
00203 script << makeTextArea("From_Part", "From_Part", From_Part ,"6","100");
00204 script << "<br class='clearall'>" << endl;
00205 script << makeTextArea("Where_Part", "Where_Part", hexify.w3HexEncode(Where_Part) ,"6" ,"100");
00206 script << "<br class='clearall'>" << endl;
00207 script << makeTextArea("Group_Part", "Group_Part", Group_Part,"3" ,"100");
00208 script << "<br class='clearall'>" << endl;
00209 script << makeTextArea("Having_Part", "Having_Part", Having_Part,"3" ,"100");
00210 script << "<br class='clearall'>" << endl;
00211 script << makeTextArea("Order_Part", "Order_Part", Order_Part,"3" ,"100");
00212 script << "<br class='clearall'>" << endl;
00213 if( Id )
00214 {
00215 script << "<a style='color:#283;text-decoration:underline;' href=\"javascript:jopen('Composite_Query_Test.cgi?Id=" << Id << "',"
00216 "'scrollbars,resizable,width=575,height=300','test')\">Test</a> -   " << endl;
00217 }
00218 script << "<a style='color:#283;text-decoration:underline;' href=\"javascript:jopen('intranet.meta/reportHelp?view=Composite_Query',"
00219 "'scrollbars,resizable,width=575,height=300','Help')\">Help</a>" << endl;
00220
00221 script << makeButtons( key() );
00222 script << makeBottom( m_result ) << endl;
00223 return breturn;
00224 }
00225 };
00226
00227
00228 int main( int argcount, char ** args )
00229 {
00230 cgiScript script( "text/html", false );
00231 Composite_Query_form myFrm(script);
00232
00233
00234 infoPoints iPoints;
00235 if( iPoints.idToken.length() )
00236 {
00237 oLogin.token = iPoints.idToken;
00238 }
00239
00240 if( oLogin.testLoginStatus() )
00241 {
00242 script.closeHeader();
00243 cgiTemplates pgTemplate;
00244 pgTemplate.load("Templates/childPane.htmp");
00245
00246 script << ocString(pgTemplate.getParagraph("top"))
00247 .replaceAll("$heading$","Composite_Query")
00248 .replace("<!--Added_Header_Content-->",
00249 "<SCRIPT type=\"text/javascript\" src=\"/scripts/schema.js\"></SCRIPT>\n"
00250 "<SCRIPT type=\"text/javascript\" src=\"/scripts/anyData.js\"></SCRIPT>")
00251 .replace("// More Functions?",
00252 "function hexCall()"
00253 "{\n"
00254 " document.forms[\"uiForm\"].Where_Part.value=\n"
00255 " w3HexEncode(document.forms[\"uiForm\"].Where_Part.value);\n"
00256 " }");
00257 myFrm.loadControlTemplates("Templates/childdivform.htmp");
00258 myFrm.form_action();
00259 myFrm.form_display();
00260
00261 ocString end = pgTemplate.getParagraph("bottom");
00262 script << end.replace("/*_extra_js_*/",
00263 "document.forms[\"uiForm\"].Where_Part.value="
00264 "w3HexDecode( document.forms[\"uiForm\"].Where_Part.value );");
00265 }
00266 else
00267 {
00268 script.Redirect("/");
00269 }
00270 }
00271
00272
00273 #include "read_write_base.cpp"
00274 #include "forms_base.cpp"
00275