00001 #ifndef WEBGUI_H
00002 #define WEBGUI_H 1
00003
00004
00005 #include "EventFilter/Utilities/interface/StateMachine.h"
00006 #include "EventFilter/Utilities/interface/Css.h"
00007
00008 #include "xdaq/Application.h"
00009
00010 #include "toolbox/lang/Class.h"
00011
00012 #include "xdata/Serializable.h"
00013 #include "xdata/UnsignedInteger32.h"
00014 #include "xdata/InfoSpaceFactory.h"
00015
00016 #include "xgi/Method.h"
00017 #include "xgi/Input.h"
00018 #include "xgi/Output.h"
00019 #include "xgi/exception/Exception.h"
00020
00021 #include <string>
00022 #include <vector>
00023
00024
00025 namespace evf {
00026
00027 class WebGUI : public toolbox::lang::Class
00028 {
00029 public:
00030
00031
00032
00033 typedef xdata::Serializable Param_t;
00034 typedef xdata::UnsignedInteger32 Counter_t;
00035 typedef std::vector<std::pair<std::string,Param_t*> > ParamVec_t;
00036 typedef std::vector<std::pair<std::string,Counter_t*> > CounterVec_t;
00037 typedef std::vector<std::pair<std::string,void*> > UpdateVec_t;
00038 typedef xgi::Input Input_t;
00039 typedef xgi::Output Output_t;
00040 typedef const std::string CString_t;
00041 typedef xgi::exception::Exception XgiException_t;
00042
00043
00044
00045
00046
00047 WebGUI(xdaq::Application* app,StateMachine* fsm);
00048 virtual ~WebGUI();
00049
00050
00051
00052
00053
00054 void defaultWebPage(Input_t *in, Output_t *out) throw (XgiException_t);
00055 void debugWebPage(Input_t *in, Output_t *out) throw (XgiException_t);
00056 void css(Input_t *in,Output_t *out) throw (XgiException_t);
00057
00058 void addStandardParam(CString_t& name,Param_t* param);
00059 void addMonitorParam(CString_t& name,Param_t* param);
00060 void addDebugParam(CString_t& name,Param_t* param);
00061
00062 void addStandardCounter(CString_t& name,Counter_t* counter);
00063 void addMonitorCounter(CString_t& name,Counter_t* counter);
00064 void addDebugCounter(CString_t& name,Counter_t* counter);
00065
00066 void exportParameters();
00067 void resetCounters();
00068
00069 void addItemChangedListener(CString_t& name,xdata::ActionListener* l);
00070
00071 xdata::InfoSpace* appInfoSpace() { return appInfoSpace_; }
00072 xdata::InfoSpace* monInfoSpace() { return monInfoSpace_; }
00073
00074 void setLargeAppIcon(CString_t& icon) { largeAppIcon_=icon; }
00075 void setSmallAppIcon(CString_t& icon) { smallAppIcon_=icon; }
00076 void setSmallDbgIcon(CString_t& icon) { smallDbgIcon_=icon; }
00077 void setHyperDAQIcon(CString_t& icon) { hyperDAQIcon_=icon; }
00078
00079
00080 void htmlTable(Input_t*in,Output_t*out,
00081 CString_t& title,const ParamVec_t& params);
00082 void htmlHead(Input_t*in,Output_t*out,CString_t& pageTitle);
00083 void htmlHeadline(Input_t*in,Output_t*out);
00084
00085
00086 private:
00087
00088
00089
00090 void addParamsToInfoSpace(const ParamVec_t& params,xdata::InfoSpace* infoSpace);
00091 void addCountersToParams();
00092 bool isMonitorParam(CString_t& name);
00093 void updateParams();
00094
00095
00096
00097 private:
00098
00099
00100
00101 xdaq::Application *app_;
00102 StateMachine *fsm_;
00103 Css css_;
00104 Logger log_;
00105
00106 std::string sourceId_;
00107 std::string urn_;
00108
00109 xdata::InfoSpace *appInfoSpace_;
00110 xdata::InfoSpace *monInfoSpace_;
00111
00112 xdata::ActionListener *itemGroupListener_;
00113
00114 ParamVec_t standardParams_;
00115 ParamVec_t monitorParams_;
00116 ParamVec_t debugParams_;
00117 CounterVec_t standardCounters_;
00118 CounterVec_t monitorCounters_;
00119 CounterVec_t debugCounters_;
00120
00121 bool parametersExported_;
00122 bool countersAddedToParams_;
00123
00124 std::string largeAppIcon_;
00125 std::string smallAppIcon_;
00126 std::string smallDbgIcon_;
00127 std::string smallCtmIcon_;
00128 std::string hyperDAQIcon_;
00129
00130 };
00131
00132
00133 }
00134
00135
00136 #endif