Continued work...
This commit is contained in:
		
							parent
							
								
									cc1946d073
								
							
						
					
					
						commit
						77c78bb723
					
				| @ -10,6 +10,8 @@ namespace http { | |||||||
| 
 | 
 | ||||||
|    int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) { |    int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) { | ||||||
| 
 | 
 | ||||||
|  |       coreutils::Log(coreutils::LOG_DEBUG_4) << "DATA[" << request << "]"; | ||||||
|  |        | ||||||
|       coreutils::PString request1(request); |       coreutils::PString request1(request); | ||||||
|       HTTPRequest httpRequest(request1); |       HTTPRequest httpRequest(request1); | ||||||
| 		 | 		 | ||||||
|  | |||||||
| @ -6,14 +6,16 @@ | |||||||
| # include "__index.h" | # include "__index.h" | ||||||
| # include "__script.h" | # include "__script.h" | ||||||
| # include "__editview.h" | # include "__editview.h" | ||||||
|  | # include "__editview_js.h" | ||||||
| # include "__style.h" | # include "__style.h" | ||||||
| # include "__setupadmin.h" | # include "__setupadmin.h" | ||||||
| # include "__favicon_ico.h" | # include "__favicon_ico.h" | ||||||
| # include "__welcome.h" | # include "__welcome.h" | ||||||
| # include "__mainmenu.h" | # include "__mainmenu.h" | ||||||
| #include "__newview.h" |  | ||||||
| # include "__configure.h" | # include "__configure.h" | ||||||
| # include "__viewlist.h" | # include "__viewlist.h" | ||||||
|  | # include "__workflow.h" | ||||||
|  | # include "__workflow_js.h" | ||||||
| 
 | 
 | ||||||
| namespace http { | namespace http { | ||||||
|     |     | ||||||
| @ -24,14 +26,16 @@ namespace http { | |||||||
|          add(index, "/"); |          add(index, "/"); | ||||||
|          add(script, "/script"); |          add(script, "/script"); | ||||||
|          add(editview, "/editview"); |          add(editview, "/editview"); | ||||||
|  | 	 add(editview_js, "/__editview_js"); | ||||||
|          add(style, "/style"); |          add(style, "/style"); | ||||||
|          add(setupadmin, "/setupadmin"); |          add(setupadmin, "/setupadmin"); | ||||||
|          add(favicon_ico, "/favicon.ico"); |          add(favicon_ico, "/favicon.ico"); | ||||||
|          add(welcome, "/welcome"); |          add(welcome, "/welcome"); | ||||||
|          add(mainmenu, "/mainmenu"); |          add(mainmenu, "/mainmenu"); | ||||||
|          add(newview, "/newview"); |  | ||||||
|          add(configure, "/configure"); |          add(configure, "/configure"); | ||||||
|          add(viewlist, "/viewlist"); |          add(viewlist, "/viewlist"); | ||||||
|  | 	 add(workflow, "/workflow"); | ||||||
|  | 	 add(workflow_js, "/__workflow_js"); | ||||||
|       }       |       }       | ||||||
|        |        | ||||||
|       bool processRequest(HTTPRequest &httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);       |       bool processRequest(HTTPRequest &httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);       | ||||||
| @ -48,13 +52,15 @@ namespace http { | |||||||
|       __script script; |       __script script; | ||||||
|       __style style; |       __style style; | ||||||
|       __editview editview; |       __editview editview; | ||||||
|  |       __editview_js editview_js; | ||||||
|       __setupadmin setupadmin; |       __setupadmin setupadmin; | ||||||
|       __favicon_ico favicon_ico; |       __favicon_ico favicon_ico; | ||||||
|       __welcome welcome; |       __welcome welcome; | ||||||
|       __mainmenu mainmenu; |       __mainmenu mainmenu; | ||||||
|       __newview newview; |  | ||||||
|       __configure configure; |       __configure configure; | ||||||
|       __viewlist viewlist; |       __viewlist viewlist; | ||||||
|  |       __workflow workflow; | ||||||
|  |       __workflow_js workflow_js; | ||||||
|        |        | ||||||
|    }; |    }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								HTTPServer
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								HTTPServer
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										86
									
								
								JETServer_Programmers_Guide.tex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								JETServer_Programmers_Guide.tex
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,86 @@ | |||||||
|  | 
 | ||||||
|  | JETServer Programmer's Guide | ||||||
|  | 
 | ||||||
|  | JETServer offers a unique set of tools for rapid application | ||||||
|  | deployment of complex workflows.  | ||||||
|  | 
 | ||||||
|  | Provides libraries of already created functionality that you can snap | ||||||
|  | into your website.  | ||||||
|  | 
 | ||||||
|  | Themes and theme management provide huge flexibility in style, feel  and | ||||||
|  | functionality. | ||||||
|  | 
 | ||||||
|  | Complete work flow pattern design system provides graphical tools to | ||||||
|  | create complex data flow logic around described data base entities. | ||||||
|  | 
 | ||||||
|  | \chapter{Work Flow Concepts} | ||||||
|  | 
 | ||||||
|  | Work Flow within a data system can primarily be described as the | ||||||
|  | activities required in accessing, maintanining and interacting with | ||||||
|  | the data base entities and managing complex activities based upon | ||||||
|  | these interactions. | ||||||
|  | 
 | ||||||
|  | JETServer Work Flow allows you to combine various Qs (queues) to | ||||||
|  | perform various activities required in supporting workflow operations. | ||||||
|  | These Qs are: | ||||||
|  | 
 | ||||||
|  |  1. Action Queue   | ||||||
|  |  2. External Queue  | ||||||
|  |  3. Decision Queue  | ||||||
|  |  4. Wait Queue  | ||||||
|  |  5. Process Queue  | ||||||
|  |  6. Event Queue | ||||||
|  |   | ||||||
|  | Each Q can have a list of associated reasons for exiting the queue and | ||||||
|  | these reasons are linked to the next queue in the flow. | ||||||
|  | Interconnecting these Qs is how work flow operations on data patterns are designed. | ||||||
|  | 
 | ||||||
|  | Action Queue (AQ) | ||||||
|  | 
 | ||||||
|  | This Q is the wrapper for the embedded work patterns and is the entry | ||||||
|  | point to initiate the work flow pattern.  | ||||||
|  | 
 | ||||||
|  | External Queue (XQ) | ||||||
|  | 
 | ||||||
|  | This Q is used to interface a view on the workflows viewpoint. First | ||||||
|  | the view is rendered to XHTML and then inserted as the innerHTML on | ||||||
|  | viewpoint.  | ||||||
|  | 
 | ||||||
|  | Within the placed data is the form for generating a POST request back | ||||||
|  | to the viewpoint's associated URL to provide the user response back to | ||||||
|  | the XQ and provide the link to the next queue based upon the resulting | ||||||
|  | user response from the XQ.  | ||||||
|  | 
 | ||||||
|  | Decision Queue (DQ) | ||||||
|  | 
 | ||||||
|  | Decision queues are basically process queues but are designed to leave | ||||||
|  | no residual actions to the data and are considered faster. The | ||||||
|  | resulting decision is returned as a path to the the next queue.  | ||||||
|  | 
 | ||||||
|  | Wait Queue (WQ) | ||||||
|  | 
 | ||||||
|  | Wait queues provide a place to `hang' a work flow unit until another | ||||||
|  | event happens or a timeout occurs.  | ||||||
|  | 
 | ||||||
|  | If an event occurs and a work flow unit is in the wait queue and the | ||||||
|  | wait queue contains a response handler for the event then the workflow  | ||||||
|  | unit will be forwarded to the linked queue for further work flow | ||||||
|  | processing. | ||||||
|  | 
 | ||||||
|  | Process Queue (PQ) | ||||||
|  | 
 | ||||||
|  | Process queues perform a function that produces a persistent result. | ||||||
|  | The resulting path can also be determined.  | ||||||
|  | 
 | ||||||
|  | Event Queue (EQ) | ||||||
|  | 
 | ||||||
|  | Send a unit to an event queue to tell all waiting work flow units in | ||||||
|  | wait queues that the event has occured and to continue processing to | ||||||
|  | the the next queue. Only wait queues that have a handler for the event | ||||||
|  | type will respond.  | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										199
									
								
								__editview.h
									
									
									
									
									
								
							
							
						
						
									
										199
									
								
								__editview.h
									
									
									
									
									
								
							| @ -68,204 +68,7 @@ namespace http { | |||||||
|          data << "  " << std::endl; |          data << "  " << std::endl; | ||||||
|          data << "  </div>  " << std::endl; |          data << "  </div>  " << std::endl; | ||||||
|          data << "" << std::endl; |          data << "" << std::endl; | ||||||
|          data << "  <script>" << std::endl; |          data << "  <script src=\"/__editview_js\" />" << std::endl; | ||||||
|          data << "  var mainpage;" << std::endl; |  | ||||||
|          data << "  var result;" << std::endl; |  | ||||||
|          data << "  var mousedownx;" << std::endl; |  | ||||||
|          data << "  var mousedowny;" << std::endl; |  | ||||||
|          data << "  var mouseDownWidth;" << std::endl; |  | ||||||
|          data << "  var mouseDownHeight;" << std::endl; |  | ||||||
|          data << "  var ismousedown = false;" << std::endl; |  | ||||||
|          data << "  var dragobject;" << std::endl; |  | ||||||
|          data << "  var dragHint = \"move\";" << std::endl; |  | ||||||
|          data << "  var data;" << std::endl; |  | ||||||
|          data << "  var showGrid = false;" << std::endl; |  | ||||||
|          data << "  var snapToGrid = false;" << std::endl; |  | ||||||
|          data << "  var gridSize = 10;" << std::endl; |  | ||||||
|          data << "  var selected;" << std::endl; |  | ||||||
|          data << "  var itemparameters;" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  mainpage = document.getElementById(\"mainpage\");" << std::endl; |  | ||||||
|          data << "  data = document.getElementById(\"data\");" << std::endl; |  | ||||||
|          data << "  itemparameters = document.getElementById(\"itemparameters\");" << std::endl; |  | ||||||
|          data << "  var gridsize = document.getElementById(\"gridsize\");" << std::endl; |  | ||||||
|          data << "  gridsize.value = gridSize;" << std::endl; |  | ||||||
|          data << "  drawGrid();" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  function drawGrid() {" << std::endl; |  | ||||||
|          data << "    var grid = document.getElementById(\"grid\");" << std::endl; |  | ||||||
|          data << "    var context = grid.getContext(\"2d\");" << std::endl; |  | ||||||
|          data << "    if(showGrid == true) {" << std::endl; |  | ||||||
|          data << "      context.clearRect(0,0,grid.width,grid.height);" << std::endl; |  | ||||||
|          data << "      context.globalAlpha = 0.2;" << std::endl; |  | ||||||
|          data << "      context.lineWidth = 0.5;    " << std::endl; |  | ||||||
|          data << "      for(ix = 0; ix < grid.width; ix += gridSize) {" << std::endl; |  | ||||||
|          data << "        context.beginPath();" << std::endl; |  | ||||||
|          data << "        context.moveTo(ix, 0);" << std::endl; |  | ||||||
|          data << "        context.lineTo(ix, grid.height);" << std::endl; |  | ||||||
|          data << "        context.stroke();" << std::endl; |  | ||||||
|          data << "        context.beginPath();" << std::endl; |  | ||||||
|          data << "        context.moveTo(0, ix);" << std::endl; |  | ||||||
|          data << "        context.lineTo(grid.width, ix);" << std::endl; |  | ||||||
|          data << "        context.stroke();      " << std::endl; |  | ||||||
|          data << "      }" << std::endl; |  | ||||||
|          data << "    } else {" << std::endl; |  | ||||||
|          data << "      context.clearRect(0,0,grid.width,grid.height);" << std::endl; |  | ||||||
|          data << "    }" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  function setDragHint(hint) {" << std::endl; |  | ||||||
|          data << "    dragHint = hint;" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "  " << std::endl; |  | ||||||
|          data << "  function getMouseX(e) {" << std::endl; |  | ||||||
|          data << "    return e.clientX - mainpage.offsetLeft - parseFloat(mainpage.style.borderWidth);" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "  " << std::endl; |  | ||||||
|          data << "  function getMouseY(e) {" << std::endl; |  | ||||||
|          data << "    return e.clientY - mainpage.offsetTop - parseFloat(mainpage.style.borderWidth);" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  function mousedown(obj, e) {" << std::endl; |  | ||||||
|          data << "    var mouseX = getMouseX(e);" << std::endl; |  | ||||||
|          data << "    var mouseY = getMouseY(e);" << std::endl; |  | ||||||
|          data << "    mousedownx = mouseX - obj.offsetLeft;" << std::endl; |  | ||||||
|          data << "    mousedowny = mouseY - obj.offsetTop;" << std::endl; |  | ||||||
|          data << "    mouseDownLeft = parseFloat(obj.style.left);" << std::endl; |  | ||||||
|          data << "    mouseDownTop = parseFloat(obj.style.top);" << std::endl; |  | ||||||
|          data << "    mouseDownWidth = parseFloat(obj.style.width);" << std::endl; |  | ||||||
|          data << "    mouseDownHeight = parseFloat(obj.style.height);" << std::endl; |  | ||||||
|          data << "    dragobject = obj;" << std::endl; |  | ||||||
|          data << "    selected = obj;" << std::endl; |  | ||||||
|          data << "    ismousedown = true;" << std::endl; |  | ||||||
|          data << "    displayParameters();" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "  " << std::endl; |  | ||||||
|          data << "  function mouseup() {" << std::endl; |  | ||||||
|          data << "    ismousedown = false;" << std::endl; |  | ||||||
|          data << "    dragobject = null;" << std::endl; |  | ||||||
|          data << "    console.log(mainpage.innerHTML);" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  function mousemove(e) {" << std::endl; |  | ||||||
|          data << "    var mouseX = getMouseX(e);" << std::endl; |  | ||||||
|          data << "    var mouseY = getMouseY(e);" << std::endl; |  | ||||||
|          data << "    if(ismousedown) {" << std::endl; |  | ||||||
|          data << "    " << std::endl; |  | ||||||
|          data << "      if(dragHint == \"move\") {" << std::endl; |  | ||||||
|          data << "        if(snapToGrid == false) {" << std::endl; |  | ||||||
|          data << "          dragobject.style.left = (mouseX - mousedownx) + \"px\";" << std::endl; |  | ||||||
|          data << "          dragobject.style.top = (mouseY - mousedowny) + \"px\";" << std::endl; |  | ||||||
|          data << "        } else {" << std::endl; |  | ||||||
|          data << "          dragobject.style.left = (Math.round((mouseX - mousedownx) / gridSize) * gridSize) + \"px\";" << std::endl; |  | ||||||
|          data << "          dragobject.style.top = (Math.round((mouseY - mousedowny) / gridSize) * gridSize) + \"px\";" << std::endl; |  | ||||||
|          data << "	}" << std::endl; |  | ||||||
|          data << "        if((mouseX - mousedownx) < 0)" << std::endl; |  | ||||||
|          data << "	  dragobject.style.left = \"0px\";" << std::endl; |  | ||||||
|          data << "	if((mouseY - mousedowny) < 0)" << std::endl; |  | ||||||
|          data << "	  dragobject.style.top = \"0px\";" << std::endl; |  | ||||||
|          data << "	if((mouseX - mousedownx + parseFloat(dragobject.style.width)) > parseFloat(mainpage.style.width)) " << std::endl; |  | ||||||
|          data << "	  dragobject.style.left = (mouseX - mousedownx) + \"px\"; " << std::endl; |  | ||||||
|          data << "      } else if(dragHint == \"rightbottomresize\") {      " << std::endl; |  | ||||||
|          data << "        dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";" << std::endl; |  | ||||||
|          data << "        dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl; |  | ||||||
|          data << "      } else if(dragHint == \"rightresize\") {      " << std::endl; |  | ||||||
|          data << "        if(snapToGrid == false) {" << std::endl; |  | ||||||
|          data << "          dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";	" << std::endl; |  | ||||||
|          data << "	} else {" << std::endl; |  | ||||||
|          data << "          dragobject.style.width = (Math.round((mouseX - mouseDownLeft) / gridSize) * gridSize) + \"px\";	" << std::endl; |  | ||||||
|          data << "	}" << std::endl; |  | ||||||
|          data << "      } else if(dragHint == \"bottomresize\") { " << std::endl; |  | ||||||
|          data << "        if(snapToGrid == false) {" << std::endl; |  | ||||||
|          data << "          dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl; |  | ||||||
|          data << "	} else {" << std::endl; |  | ||||||
|          data << "          dragobject.style.height = (Math.round((mouseY - mouseDownTop) / gridSize) * gridSize) + \"px\";" << std::endl; |  | ||||||
|          data << "	}" << std::endl; |  | ||||||
|          data << "      } else if(dragHint == \"leftresize\") {      " << std::endl; |  | ||||||
|          data << "        dragobject.style.left = mouseX + \"px\";" << std::endl; |  | ||||||
|          data << "        dragobject.style.width = (mouseDownWidth + (mouseDownLeft - mouseX)) + \"px\";" << std::endl; |  | ||||||
|          data << "      } else if(dragHint == \"topresize\") {      " << std::endl; |  | ||||||
|          data << "        dragobject.style.top = mouseY + \"px\";" << std::endl; |  | ||||||
|          data << "        dragobject.style.height = (mouseDownHeight + (mouseDownTop - mouseY)) + \"px\";" << std::endl; |  | ||||||
|          data << "      }" << std::endl; |  | ||||||
|          data << "      " << std::endl; |  | ||||||
|          data << "            data.innerHTML = \"<p>\" + dragobject.nodeName + \"<br>\" +  " << std::endl; |  | ||||||
|          data << "	                       \"Action: \" + dragHint + \"<br>\" +" << std::endl; |  | ||||||
|          data << "			       \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl; |  | ||||||
|          data << "			       \"MouseOver Location: \" + (mouseX - dragobject.offsetLeft) + \":\" + (mouseY - dragobject.offsetTop) + \"<br>\" + " << std::endl; |  | ||||||
|          data << "			       \"Location: \" + dragobject.style.left + \":\" + dragobject.style.top + \"<br>\" + " << std::endl; |  | ||||||
|          data << "			       \"Size: \" + dragobject.style.width + \":\" + dragobject.style.height + \"<br>\" + " << std::endl; |  | ||||||
|          data << "                               \"</p>\";" << std::endl; |  | ||||||
|          data << "    " << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "    } else {" << std::endl; |  | ||||||
|          data << "      var mouseabove = document.elementFromPoint(mouseX + mainpage.offsetLeft, mouseY + mainpage.offsetTop);" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "      if((mouseabove.id != \"mainpage\") && (mouseabove.id != \"grid\")) {" << std::endl; |  | ||||||
|          data << "	" << std::endl; |  | ||||||
|          data << "	data.innerHTML = \"<p>\" + mouseabove.nodeName + \"<br>\" +  " << std::endl; |  | ||||||
|          data << "	                         \"Action: \" + dragHint + \"<br>\" +" << std::endl; |  | ||||||
|          data << " 			         \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl; |  | ||||||
|          data << "				 \"MouseOver Location: \" + (mouseX - mouseabove.offsetLeft) + \":\" + (mouseY - mouseabove.offsetTop) + \"<br>\" + " << std::endl; |  | ||||||
|          data << "				 \"Location: \" + mouseabove.style.left + \":\" + mouseabove.style.top + \"<br>\" + " << std::endl; |  | ||||||
|          data << "				 \"Size: \" + mouseabove.style.width + \":\" + mouseabove.style.height + \"<br>\" + " << std::endl; |  | ||||||
|          data << "                                 \"</p>\";" << std::endl; |  | ||||||
|          data << "	" << std::endl; |  | ||||||
|          data << "	if((mouseabove.nodeName == \"DIV\") || " << std::endl; |  | ||||||
|          data << "	   (mouseabove.nodeName == \"IMG\") || " << std::endl; |  | ||||||
|          data << "	   (mouseabove.nodeName == \"BUTTON\") ||" << std::endl; |  | ||||||
|          data << "	   (mouseabove.nodeName == \"INPUT\") ||" << std::endl; |  | ||||||
|          data << "	   (mouseabove.nodeName == \"SPAN\")) {" << std::endl; |  | ||||||
|          data << "		" << std::endl; |  | ||||||
|          data << "	  if((parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl; |  | ||||||
|          data << "             (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"nwse-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"rightbottomresize\";	  " << std::endl; |  | ||||||
|          data << "	  } else if((parseFloat(mouseabove.style.left) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl; |  | ||||||
|          data << "                    ((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop))) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"nesw-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"righttopresize\";	  " << std::endl; |  | ||||||
|          data << "	  } else if(((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) && " << std::endl; |  | ||||||
|          data << "                    (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"nesw-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"leftbottomresize\";	  " << std::endl; |  | ||||||
|          data << "	  } else if(parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"ew-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"rightresize\";" << std::endl; |  | ||||||
|          data << "	  } else if(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop)) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"ns-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"bottomresize\";" << std::endl; |  | ||||||
|          data << "	  } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"ew-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"leftresize\";" << std::endl; |  | ||||||
|          data << "	  } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop)) {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"ns-resize\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"topresize\";" << std::endl; |  | ||||||
|          data << "	  } else {" << std::endl; |  | ||||||
|          data << "	    mouseabove.style.cursor = \"move\";" << std::endl; |  | ||||||
|          data << "	    dragHint = \"move\";" << std::endl; |  | ||||||
|          data << "	  }" << std::endl; |  | ||||||
|          data << "	} else {" << std::endl; |  | ||||||
|          data << "	  mouseabove.style.cursor = \"default\";" << std::endl; |  | ||||||
|          data << "	}" << std::endl; |  | ||||||
|          data << "      } else {" << std::endl; |  | ||||||
|          data << "        mouseabove.style.cursor = \"default\";" << std::endl; |  | ||||||
|          data << "        dragHint = \"\";" << std::endl; |  | ||||||
|          data << "	data.innerHTML = \"<p></p>\";" << std::endl; |  | ||||||
|          data << "      }" << std::endl; |  | ||||||
|          data << "    }" << std::endl; |  | ||||||
|          data << "    displayParameters();" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "  " << std::endl; |  | ||||||
|          data << "  function displayParameters() {" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "	itemparameters.innerHTML = \"<p>\" + selected.nodeName + \": \" + selected.id + \"<br>\" + " << std::endl; |  | ||||||
|          data << "				 \"Location: \" + selected.style.left + \":\" + selected.style.top + \"<br>\" + " << std::endl; |  | ||||||
|          data << "				 \"Size: \" + selected.style.width + \":\" + selected.style.height + \"<br>\" + " << std::endl; |  | ||||||
|          data << "                                 \"</p>\";" << std::endl; |  | ||||||
|          data << "" << std::endl; |  | ||||||
|          data << "  }" << std::endl; |  | ||||||
|          data << "</script>" << std::endl; |  | ||||||
| 
 | 
 | ||||||
|          httpRequest.response.addHeader("Content-Type", "script/javascript"); |          httpRequest.response.addHeader("Content-Type", "script/javascript"); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										217
									
								
								__editview_js.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								__editview_js.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,217 @@ | |||||||
|  | #ifndef ____editview_js_h__ | ||||||
|  | #define ____editview_js_h__ | ||||||
|  | 
 | ||||||
|  | #include "HTTPPage.h" | ||||||
|  | 
 | ||||||
|  | namespace http { | ||||||
|  | 
 | ||||||
|  |    class __editview_js : public HTTPPage { | ||||||
|  | 
 | ||||||
|  |       int processCommand(std::string request, core::TCPSession *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override { | ||||||
|  |          data << "  var mainpage;" << std::endl; | ||||||
|  |          data << "  var result;" << std::endl; | ||||||
|  |          data << "  var mousedownx;" << std::endl; | ||||||
|  |          data << "  var mousedowny;" << std::endl; | ||||||
|  |          data << "  var mouseDownWidth;" << std::endl; | ||||||
|  |          data << "  var mouseDownHeight;" << std::endl; | ||||||
|  |          data << "  var ismousedown = false;" << std::endl; | ||||||
|  |          data << "  var dragobject;" << std::endl; | ||||||
|  |          data << "  var dragHint = \"move\";" << std::endl; | ||||||
|  |          data << "  var data;" << std::endl; | ||||||
|  |          data << "  var showGrid = false;" << std::endl; | ||||||
|  |          data << "  var snapToGrid = false;" << std::endl; | ||||||
|  |          data << "  var gridSize = 10;" << std::endl; | ||||||
|  |          data << "  var selected;" << std::endl; | ||||||
|  |          data << "  var itemparameters;" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  mainpage = document.getElementById(\"mainpage\");" << std::endl; | ||||||
|  |          data << "  data = document.getElementById(\"data\");" << std::endl; | ||||||
|  |          data << "  itemparameters = document.getElementById(\"itemparameters\");" << std::endl; | ||||||
|  |          data << "  var gridsize = document.getElementById(\"gridsize\");" << std::endl; | ||||||
|  |          data << "  gridsize.value = gridSize;" << std::endl; | ||||||
|  |          data << "  drawGrid();" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  function drawGrid() {" << std::endl; | ||||||
|  |          data << "    var grid = document.getElementById(\"grid\");" << std::endl; | ||||||
|  |          data << "    var context = grid.getContext(\"2d\");" << std::endl; | ||||||
|  |          data << "    if(showGrid == true) {" << std::endl; | ||||||
|  |          data << "      context.clearRect(0,0,grid.width,grid.height);" << std::endl; | ||||||
|  |          data << "      context.globalAlpha = 0.2;" << std::endl; | ||||||
|  |          data << "      context.lineWidth = 0.5;    " << std::endl; | ||||||
|  |          data << "      for(ix = 0; ix < grid.width; ix += gridSize) {" << std::endl; | ||||||
|  |          data << "        context.beginPath();" << std::endl; | ||||||
|  |          data << "        context.moveTo(ix, 0);" << std::endl; | ||||||
|  |          data << "        context.lineTo(ix, grid.height);" << std::endl; | ||||||
|  |          data << "        context.stroke();" << std::endl; | ||||||
|  |          data << "        context.beginPath();" << std::endl; | ||||||
|  |          data << "        context.moveTo(0, ix);" << std::endl; | ||||||
|  |          data << "        context.lineTo(grid.width, ix);" << std::endl; | ||||||
|  |          data << "        context.stroke();      " << std::endl; | ||||||
|  |          data << "      }" << std::endl; | ||||||
|  |          data << "    } else {" << std::endl; | ||||||
|  |          data << "      context.clearRect(0,0,grid.width,grid.height);" << std::endl; | ||||||
|  |          data << "    }" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  function setDragHint(hint) {" << std::endl; | ||||||
|  |          data << "    dragHint = hint;" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "  " << std::endl; | ||||||
|  |          data << "  function getMouseX(e) {" << std::endl; | ||||||
|  |          data << "    return e.clientX - mainpage.offsetLeft - parseFloat(mainpage.style.borderWidth);" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "  " << std::endl; | ||||||
|  |          data << "  function getMouseY(e) {" << std::endl; | ||||||
|  |          data << "    return e.clientY - mainpage.offsetTop - parseFloat(mainpage.style.borderWidth);" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  function mousedown(obj, e) {" << std::endl; | ||||||
|  |          data << "    var mouseX = getMouseX(e);" << std::endl; | ||||||
|  |          data << "    var mouseY = getMouseY(e);" << std::endl; | ||||||
|  |          data << "    mousedownx = mouseX - obj.offsetLeft;" << std::endl; | ||||||
|  |          data << "    mousedowny = mouseY - obj.offsetTop;" << std::endl; | ||||||
|  |          data << "    mouseDownLeft = parseFloat(obj.style.left);" << std::endl; | ||||||
|  |          data << "    mouseDownTop = parseFloat(obj.style.top);" << std::endl; | ||||||
|  |          data << "    mouseDownWidth = parseFloat(obj.style.width);" << std::endl; | ||||||
|  |          data << "    mouseDownHeight = parseFloat(obj.style.height);" << std::endl; | ||||||
|  |          data << "    dragobject = obj;" << std::endl; | ||||||
|  |          data << "    selected = obj;" << std::endl; | ||||||
|  |          data << "    ismousedown = true;" << std::endl; | ||||||
|  |          data << "    displayParameters();" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "  " << std::endl; | ||||||
|  |          data << "  function mouseup() {" << std::endl; | ||||||
|  |          data << "    ismousedown = false;" << std::endl; | ||||||
|  |          data << "    dragobject = null;" << std::endl; | ||||||
|  |          data << "    console.log(mainpage.innerHTML);" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  function mousemove(e) {" << std::endl; | ||||||
|  |          data << "    var mouseX = getMouseX(e);" << std::endl; | ||||||
|  |          data << "    var mouseY = getMouseY(e);" << std::endl; | ||||||
|  |          data << "    if(ismousedown) {" << std::endl; | ||||||
|  |          data << "    " << std::endl; | ||||||
|  |          data << "      if(dragHint == \"move\") {" << std::endl; | ||||||
|  |          data << "        if(snapToGrid == false) {" << std::endl; | ||||||
|  |          data << "          dragobject.style.left = (mouseX - mousedownx) + \"px\";" << std::endl; | ||||||
|  |          data << "          dragobject.style.top = (mouseY - mousedowny) + \"px\";" << std::endl; | ||||||
|  |          data << "        } else {" << std::endl; | ||||||
|  |          data << "          dragobject.style.left = (Math.round((mouseX - mousedownx) / gridSize) * gridSize) + \"px\";" << std::endl; | ||||||
|  |          data << "          dragobject.style.top = (Math.round((mouseY - mousedowny) / gridSize) * gridSize) + \"px\";" << std::endl; | ||||||
|  |          data << "	}" << std::endl; | ||||||
|  |          data << "        if((mouseX - mousedownx) < 0)" << std::endl; | ||||||
|  |          data << "	  dragobject.style.left = \"0px\";" << std::endl; | ||||||
|  |          data << "	if((mouseY - mousedowny) < 0)" << std::endl; | ||||||
|  |          data << "	  dragobject.style.top = \"0px\";" << std::endl; | ||||||
|  |          data << "	if((mouseX - mousedownx + parseFloat(dragobject.style.width)) > parseFloat(mainpage.style.width)) " << std::endl; | ||||||
|  |          data << "	  dragobject.style.left = (mouseX - mousedownx) + \"px\"; " << std::endl; | ||||||
|  |          data << "      } else if(dragHint == \"rightbottomresize\") {      " << std::endl; | ||||||
|  |          data << "        dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";" << std::endl; | ||||||
|  |          data << "        dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl; | ||||||
|  |          data << "      } else if(dragHint == \"rightresize\") {      " << std::endl; | ||||||
|  |          data << "        if(snapToGrid == false) {" << std::endl; | ||||||
|  |          data << "          dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";	" << std::endl; | ||||||
|  |          data << "	} else {" << std::endl; | ||||||
|  |          data << "          dragobject.style.width = (Math.round((mouseX - mouseDownLeft) / gridSize) * gridSize) + \"px\";	" << std::endl; | ||||||
|  |          data << "	}" << std::endl; | ||||||
|  |          data << "      } else if(dragHint == \"bottomresize\") { " << std::endl; | ||||||
|  |          data << "        if(snapToGrid == false) {" << std::endl; | ||||||
|  |          data << "          dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl; | ||||||
|  |          data << "	} else {" << std::endl; | ||||||
|  |          data << "          dragobject.style.height = (Math.round((mouseY - mouseDownTop) / gridSize) * gridSize) + \"px\";" << std::endl; | ||||||
|  |          data << "	}" << std::endl; | ||||||
|  |          data << "      } else if(dragHint == \"leftresize\") {      " << std::endl; | ||||||
|  |          data << "        dragobject.style.left = mouseX + \"px\";" << std::endl; | ||||||
|  |          data << "        dragobject.style.width = (mouseDownWidth + (mouseDownLeft - mouseX)) + \"px\";" << std::endl; | ||||||
|  |          data << "      } else if(dragHint == \"topresize\") {      " << std::endl; | ||||||
|  |          data << "        dragobject.style.top = mouseY + \"px\";" << std::endl; | ||||||
|  |          data << "        dragobject.style.height = (mouseDownHeight + (mouseDownTop - mouseY)) + \"px\";" << std::endl; | ||||||
|  |          data << "      }" << std::endl; | ||||||
|  |          data << "      " << std::endl; | ||||||
|  |          data << "            data.innerHTML = \"<p>\" + dragobject.nodeName + \"<br>\" +  " << std::endl; | ||||||
|  |          data << "	                       \"Action: \" + dragHint + \"<br>\" +" << std::endl; | ||||||
|  |          data << "			       \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl; | ||||||
|  |          data << "			       \"MouseOver Location: \" + (mouseX - dragobject.offsetLeft) + \":\" + (mouseY - dragobject.offsetTop) + \"<br>\" + " << std::endl; | ||||||
|  |          data << "			       \"Location: \" + dragobject.style.left + \":\" + dragobject.style.top + \"<br>\" + " << std::endl; | ||||||
|  |          data << "			       \"Size: \" + dragobject.style.width + \":\" + dragobject.style.height + \"<br>\" + " << std::endl; | ||||||
|  |          data << "                               \"</p>\";" << std::endl; | ||||||
|  |          data << "    " << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "    } else {" << std::endl; | ||||||
|  |          data << "      var mouseabove = document.elementFromPoint(mouseX + mainpage.offsetLeft, mouseY + mainpage.offsetTop);" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "      if((mouseabove.id != \"mainpage\") && (mouseabove.id != \"grid\")) {" << std::endl; | ||||||
|  |          data << "	" << std::endl; | ||||||
|  |          data << "	data.innerHTML = \"<p>\" + mouseabove.nodeName + \"<br>\" +  " << std::endl; | ||||||
|  |          data << "	                         \"Action: \" + dragHint + \"<br>\" +" << std::endl; | ||||||
|  |          data << " 			         \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl; | ||||||
|  |          data << "				 \"MouseOver Location: \" + (mouseX - mouseabove.offsetLeft) + \":\" + (mouseY - mouseabove.offsetTop) + \"<br>\" + " << std::endl; | ||||||
|  |          data << "				 \"Location: \" + mouseabove.style.left + \":\" + mouseabove.style.top + \"<br>\" + " << std::endl; | ||||||
|  |          data << "				 \"Size: \" + mouseabove.style.width + \":\" + mouseabove.style.height + \"<br>\" + " << std::endl; | ||||||
|  |          data << "                                 \"</p>\";" << std::endl; | ||||||
|  |          data << "	" << std::endl; | ||||||
|  |          data << "	if((mouseabove.nodeName == \"DIV\") || " << std::endl; | ||||||
|  |          data << "	   (mouseabove.nodeName == \"IMG\") || " << std::endl; | ||||||
|  |          data << "	   (mouseabove.nodeName == \"BUTTON\") ||" << std::endl; | ||||||
|  |          data << "	   (mouseabove.nodeName == \"INPUT\") ||" << std::endl; | ||||||
|  |          data << "	   (mouseabove.nodeName == \"SPAN\")) {" << std::endl; | ||||||
|  |          data << "		" << std::endl; | ||||||
|  |          data << "	  if((parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl; | ||||||
|  |          data << "             (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"nwse-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"rightbottomresize\";	  " << std::endl; | ||||||
|  |          data << "	  } else if((parseFloat(mouseabove.style.left) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl; | ||||||
|  |          data << "                    ((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop))) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"nesw-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"righttopresize\";	  " << std::endl; | ||||||
|  |          data << "	  } else if(((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) && " << std::endl; | ||||||
|  |          data << "                    (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"nesw-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"leftbottomresize\";	  " << std::endl; | ||||||
|  |          data << "	  } else if(parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"ew-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"rightresize\";" << std::endl; | ||||||
|  |          data << "	  } else if(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop)) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"ns-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"bottomresize\";" << std::endl; | ||||||
|  |          data << "	  } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"ew-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"leftresize\";" << std::endl; | ||||||
|  |          data << "	  } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop)) {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"ns-resize\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"topresize\";" << std::endl; | ||||||
|  |          data << "	  } else {" << std::endl; | ||||||
|  |          data << "	    mouseabove.style.cursor = \"move\";" << std::endl; | ||||||
|  |          data << "	    dragHint = \"move\";" << std::endl; | ||||||
|  |          data << "	  }" << std::endl; | ||||||
|  |          data << "	} else {" << std::endl; | ||||||
|  |          data << "	  mouseabove.style.cursor = \"default\";" << std::endl; | ||||||
|  |          data << "	}" << std::endl; | ||||||
|  |          data << "      } else {" << std::endl; | ||||||
|  |          data << "        mouseabove.style.cursor = \"default\";" << std::endl; | ||||||
|  |          data << "        dragHint = \"\";" << std::endl; | ||||||
|  |          data << "	data.innerHTML = \"<p></p>\";" << std::endl; | ||||||
|  |          data << "      }" << std::endl; | ||||||
|  |          data << "    }" << std::endl; | ||||||
|  |          data << "    displayParameters();" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "  " << std::endl; | ||||||
|  |          data << "  function displayParameters() {" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "	itemparameters.innerHTML = \"<p>\" + selected.nodeName + \": \" + selected.id + \"<br>\" + " << std::endl; | ||||||
|  |          data << "				 \"Location: \" + selected.style.left + \":\" + selected.style.top + \"<br>\" + " << std::endl; | ||||||
|  |          data << "				 \"Size: \" + selected.style.width + \":\" + selected.style.height + \"<br>\" + " << std::endl; | ||||||
|  |          data << "                                 \"</p>\";" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  | 
 | ||||||
|  |          httpRequest.response.addHeader("Content-Type", "script/javascript"); | ||||||
|  | 
 | ||||||
|  |          return 0; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |    }; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										10
									
								
								__mainmenu.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								__mainmenu.h
									
									
									
									
									
								
							| @ -23,17 +23,17 @@ namespace http { | |||||||
|          data << "  <span>View and Layout Designer</span>" << std::endl; |          data << "  <span>View and Layout Designer</span>" << std::endl; | ||||||
|          data << " </div>" << std::endl; |          data << " </div>" << std::endl; | ||||||
|          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; |          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; | ||||||
|  |          data << "      onmousedown=\"getPage('/entrypoints','main');\">" << std::endl; | ||||||
|  |          data << "  <span>Entry Points</span>" << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; | ||||||
|          data << "      onmousedown=\"getPage('/viewlist','main');\">" << std::endl; |          data << "      onmousedown=\"getPage('/viewlist','main');\">" << std::endl; | ||||||
|          data << "  <span>Data Entity Editor</span>" << std::endl; |          data << "  <span>Data Entity Editor</span>" << std::endl; | ||||||
|          data << " </div>" << std::endl; |          data << " </div>" << std::endl; | ||||||
|          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; |          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; | ||||||
|          data << "      onmousedown=\"getPage('/viewlist','main');\">" << std::endl; |          data << "      onmousedown=\"getPage('/workflow','main');\">" << std::endl; | ||||||
|          data << "  <span>Work Flow Process Management</span>" << std::endl; |          data << "  <span>Work Flow Process Management</span>" << std::endl; | ||||||
|          data << " </div>" << std::endl; |          data << " </div>" << std::endl; | ||||||
|          data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; |  | ||||||
|          data << "      onmousedown=\"getPage('/viewlist','main');\">" << std::endl; |  | ||||||
|          data << "  <span>Storyboard</span>" << std::endl; |  | ||||||
|          data << " </div>" << std::endl; |  | ||||||
|          data << "</div>" << std::endl; |          data << "</div>" << std::endl; | ||||||
|                    |                    | ||||||
|          httpRequest.response.addHeader("Content-Type", "text/html");    |          httpRequest.response.addHeader("Content-Type", "text/html");    | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								__newview.h
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								__newview.h
									
									
									
									
									
								
							| @ -1,25 +0,0 @@ | |||||||
| #ifndef ____newview_h__ |  | ||||||
| #define ____newview_h__ |  | ||||||
| 
 |  | ||||||
| #include "HTTPPage.h" |  | ||||||
| 
 |  | ||||||
| namespace http { |  | ||||||
| 
 |  | ||||||
|    class __newview : public HTTPPage { |  | ||||||
| 
 |  | ||||||
|       int processCommand(std::string request,  |  | ||||||
|                          core::TCPSession *session,  |  | ||||||
|                          HTTPSession *httpSession,  |  | ||||||
|                          HTTPRequest &httpRequest,  |  | ||||||
|                          std::stringstream &data) override { |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|          httpRequest.response.addHeader("Content-Type", "text/html"); |  | ||||||
|          return 0; |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|    }; |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| @ -36,9 +36,12 @@ namespace http { | |||||||
|          data << "function insertAndExecute(id, text) {" << std::endl; |          data << "function insertAndExecute(id, text) {" << std::endl; | ||||||
|          data << "   idresolved = document.getElementById(id);" << std::endl; |          data << "   idresolved = document.getElementById(id);" << std::endl; | ||||||
|          data << "   idresolved.innerHTML = text;" << std::endl; |          data << "   idresolved.innerHTML = text;" << std::endl; | ||||||
|          data << "   var script = idresolved.getElementsByTagName(\"script\");" << std::endl; | 	 data << "   var scriptarr = idresolved.getElementsByTagName(\"script\");" << std::endl; | ||||||
|          data << "   for(var ix=0;ix<script.length;ix++) {" << std::endl; | 	 data << "   if(scriptarr.length > 0) {" << std::endl; | ||||||
|          data << "      eval(script[ix].text);" << std::endl; | 	 data << "      var script = document.createElement(\"script\");" << std::endl; | ||||||
|  | 	 data << "      script.type = \"text/javascript\";" << std::endl; | ||||||
|  | 	 data << "      script.src = scriptarr[0].src;" << std::endl; | ||||||
|  |          data << "      document.getElementsByTagName(\"head\")[0].appendChild(script);" << std::endl; | ||||||
| 	 data << "   }" << std::endl; | 	 data << "   }" << std::endl; | ||||||
|          data << "}" << std::endl; |          data << "}" << std::endl; | ||||||
|              |              | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ namespace http { | |||||||
|          data << "<div>" << std::endl; |          data << "<div>" << std::endl; | ||||||
|           |           | ||||||
|          data << " <div style=\"background: #484; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; |          data << " <div style=\"background: #484; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; | ||||||
|          data << "      onmousedown=\"getPage('/newview','main');\">" << std::endl; |          data << "      onmousedown=\"getPage('/editview','main');\">" << std::endl; | ||||||
|          data << "  <span>Create new view</span>" << std::endl; |          data << "  <span>Create new view</span>" << std::endl; | ||||||
|          data << " </div>" << std::endl; |          data << " </div>" << std::endl; | ||||||
|           |           | ||||||
| @ -31,7 +31,7 @@ namespace http { | |||||||
|             } |             } | ||||||
|              |              | ||||||
|             data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; |             data << " <div style=\"background: #448; color: #fff; width: 400px; margin: 5px; padding: 5px; cursor: pointer;\"" << std::endl; | ||||||
|             data << "      onmousedown=\"getPage('/newview','main');\">" << std::endl; |             data << "      onmousedown=\"getPage('/editview','main');\">" << std::endl; | ||||||
|             data << "  <span>" << directory.get().getName() << "</span>" << std::endl; |             data << "  <span>" << directory.get().getName() << "</span>" << std::endl; | ||||||
|             data << " </div>" << std::endl; |             data << " </div>" << std::endl; | ||||||
|             directory.next(); |             directory.next(); | ||||||
|  | |||||||
							
								
								
									
										102
									
								
								__workflow.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								__workflow.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | |||||||
|  | #ifndef ____workflow_h__ | ||||||
|  | #define ____workflow_h__ | ||||||
|  | 
 | ||||||
|  | #include "HTTPPage.h" | ||||||
|  | 
 | ||||||
|  | namespace http { | ||||||
|  | 
 | ||||||
|  |    class __workflow : public HTTPPage { | ||||||
|  | 
 | ||||||
|  |       int processCommand(std::string request, core::TCPSession *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) {	    | ||||||
|  |          data << "<svg style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px;\">" << std::endl; | ||||||
|  |          data << " <path id=\"connector0\" data-source=\"start:bottom\" data-dest=\"formpage1\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << " <path id=\"connector1\" data-source=\"formpage1:next\" data-dest=\"formpage2\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << " <path id=\"connector2\" data-source=\"formpage2:next\" data-dest=\"formpage3\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << " <path id=\"connector3\" data-source=\"formpage2:previous\" data-dest=\"formpage1\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << " <path id=\"connector4\" data-source=\"formpage3:previous\" data-dest=\"formpage2\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << " <path id=\"connector5\" data-source=\"formpage3:process\" data-dest=\"processform\" d=\"\" stroke=\"#FFFFFF\" stroke-width=\"1\" fill=\"none\" />" << std::endl; | ||||||
|  |          data << "</svg>" << std::endl; | ||||||
|  |          data << "<div style=\"position: absolute; width: 200px; top: 20px; left: 50px; background: #C04040; border: 1px solid white;\" id=\"start\"" << std::endl; | ||||||
|  |          data << "     onmousedown=\"mousedown(this, event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmouseup=\"mouseup(event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmousemove=\"mousemove(event); return true;\">" << std::endl; | ||||||
|  |          data << "[AQ] START" << std::endl; | ||||||
|  |          data << "</div>" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "<div style=\"position: absolute; top: 100px; left: 150px; background: #E0E0E0; border: 1px solid white; color: #000000;\" " << std::endl; | ||||||
|  |          data << "     id=\"formpage1\"" << std::endl; | ||||||
|  |          data << "     onmousedown=\"mousedown(this, event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmouseup=\"mouseup(event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmousemove=\"mousemove(event); return true;\">" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << " <div style=\"width: 200px; height: 20px; padding-left: 3px; background: #4040C0; color: #FFFFFF;\">" << std::endl; | ||||||
|  |          data << "  <span>[XQ] FORM Page 1</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"cancel\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px ;background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Cancel</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"next\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px; background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Next</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << "</div>" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "<div style=\"position: absolute; top: 300px; left: 250px; background: #E0E0E0; border: 1px solid white;\" " << std::endl; | ||||||
|  |          data << "     id=\"formpage2\" " << std::endl; | ||||||
|  |          data << "     onmousedown=\"mousedown(this, event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmouseup=\"mouseup(event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmousemove=\"mousemove(event); return true;\">" << std::endl; | ||||||
|  |          data << " <div style=\"width: 200px; height: 20px; padding-left: 3px; background: #4040C0; color: #FFFFFF;\">" << std::endl; | ||||||
|  |          data << "  <span>[XQ] FORM Page 2</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"previous\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px ;background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Previous</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"next\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px; background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Next</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << "</div>" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "<div style=\"position: absolute; top: 400px; left: 200px; background: #E0E0E0; border: 1px solid white;\" " << std::endl; | ||||||
|  |          data << "     id=\"formpage3\" " << std::endl; | ||||||
|  |          data << "     onmousedown=\"mousedown(this, event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmouseup=\"mouseup(event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmousemove=\"mousemove(event); return true;\">" << std::endl; | ||||||
|  |          data << " <div style=\"width: 200px; height: 20px; padding-left: 3px; background: #4040C0; color: #FFFFFF;\">" << std::endl; | ||||||
|  |          data << "  <span>[XQ] FORM Page 3</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"previous\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px ;background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Previous</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"process\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px; background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Process Form</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << "</div>" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "<div style=\"position: absolute; top: 500px; left: 200px; background: #E0E0E0; border: 1px solid white;\" " << std::endl; | ||||||
|  |          data << "     id=\"processform\" " << std::endl; | ||||||
|  |          data << "     onmousedown=\"mousedown(this, event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmouseup=\"mouseup(event); return true;\" " << std::endl; | ||||||
|  |          data << "     onmousemove=\"mousemove(event); return true;\">" << std::endl; | ||||||
|  |          data << " <div style=\"width: 200px; height: 20px; padding-left: 3px; background: #40C040; color: #FFFFFF;\">" << std::endl; | ||||||
|  |          data << "  <span>[PQ] Process Form</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"previous\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px ;background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Previous</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << " <div data-name=\"process\" style=\"width: 200px; height: 20px; margin-top: 2px; padding-left: 3px; background: #C0C0FF;\">" << std::endl; | ||||||
|  |          data << "  <span>Process Form</span> " << std::endl; | ||||||
|  |          data << " </div>" << std::endl; | ||||||
|  |          data << "</div>" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "<script src=\"/__workflow_js\" />" << std::endl; | ||||||
|  | 
 | ||||||
|  | 	 httpRequest.response.addHeader("Content-Type", "script/javascript"); | ||||||
|  |          return 0; | ||||||
|  | 
 | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |    }; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										97
									
								
								__workflow_js.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								__workflow_js.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,97 @@ | |||||||
|  | #ifndef ____workflow_js_h__ | ||||||
|  | #define ____workflow_js_h__ | ||||||
|  | 
 | ||||||
|  | #include "HTTPPage.h" | ||||||
|  | 
 | ||||||
|  | namespace http { | ||||||
|  | 
 | ||||||
|  |    class __workflow_js : public HTTPPage { | ||||||
|  | 
 | ||||||
|  |       int processCommand(std::string request, core::TCPSession *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) {	    | ||||||
|  |          data << "var mouseDownX;" << std::endl; | ||||||
|  |          data << "var mouseDownY;" << std::endl; | ||||||
|  |          data << "var isMouseDown = false;" << std::endl; | ||||||
|  |          data << "var dragObject;" << std::endl; | ||||||
|  |          data << "var dragHint = \"move\";" << std::endl; | ||||||
|  |          data << "var selected;" << std::endl; | ||||||
|  | 	 data << "listSource();" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function listSource() {" << std::endl; | ||||||
|  |          data << " var connectors = document.getElementsByTagName(\"path\");" << std::endl; | ||||||
|  |          data << " for(var i = 0; connectors[i]; ++i) {" << std::endl; | ||||||
|  |          data << "  var source = connectors[i].getAttribute(\"data-source\");" << std::endl; | ||||||
|  |          data << "  var sourceElem = source.split(\":\");" << std::endl; | ||||||
|  |          data << "  var sourceId = document.getElementById(sourceElem[0]);" << std::endl; | ||||||
|  |          data << "  var offset = 0;" << std::endl; | ||||||
|  |          data << "  if(sourceElem.length > 1) {" << std::endl; | ||||||
|  |          data << "   var options = sourceId.getElementsByTagName(\"div\");" << std::endl; | ||||||
|  |          data << "   for(var o = 0; options[o]; ++o) {" << std::endl; | ||||||
|  |          data << "	 var option = options[o];" << std::endl; | ||||||
|  |          data << "	 if(sourceElem[1] == options[o].getAttribute(\"data-name\")) {" << std::endl; | ||||||
|  |          data << "	    offset = option.offsetTop + (parseInt(option.style.height) / 2);" << std::endl; | ||||||
|  |          data << "	 }" << std::endl; | ||||||
|  |          data << "   }" << std::endl; | ||||||
|  |          data << "  }" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "  var dest = connectors[i].getAttribute(\"data-dest\");" << std::endl; | ||||||
|  |          data << "  var destId = document.getElementById(dest);" << std::endl; | ||||||
|  |          data << "  var d = \"M\" + getPos(sourceId, sourceId.offsetWidth, offset) +" << std::endl; | ||||||
|  |          data << "          \" L\" + getPos(sourceId, sourceId.offsetWidth + 30, offset) + " << std::endl; | ||||||
|  |          data << "          \" L\" + getPos(destId, destId.offsetWidth / 2, -30) + " << std::endl; | ||||||
|  |          data << "          \" L\" + getPos(destId, destId.offsetWidth / 2);" << std::endl; | ||||||
|  |          data << "  connectors[i].setAttribute(\"d\", d);" << std::endl; | ||||||
|  |          data << "//  console.log(d);" << std::endl; | ||||||
|  |          data << " } " << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function getMouseX(e) {" << std::endl; | ||||||
|  |          data << " return e.clientX;" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function getMouseY(e) {" << std::endl; | ||||||
|  |          data << " return e.clientY;" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function getPos(item, offsetX = 0, offsetY = 0) {" << std::endl; | ||||||
|  |          data << " var pos = \" \" + (parseInt(item.style.left) + offsetX);" << std::endl; | ||||||
|  |          data << " pos += \" \" + (parseInt(item.style.top) + offsetY);" << std::endl; | ||||||
|  |          data << " return pos;	" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function mousedown(obj, e) {" << std::endl; | ||||||
|  |          data << " var mouseX = getMouseX(e);" << std::endl; | ||||||
|  |          data << " var mouseY = getMouseY(e);" << std::endl; | ||||||
|  |          data << " mouseDownX = mouseX - obj.offsetLeft;" << std::endl; | ||||||
|  |          data << " mouseDownY = mouseY - obj.offsetTop;" << std::endl; | ||||||
|  |          data << " dragObject = obj;" << std::endl; | ||||||
|  |          data << " selected = obj;" << std::endl; | ||||||
|  |          data << " isMouseDown = true;" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function mouseup(e) {" << std::endl; | ||||||
|  |          data << " isMouseDown = false;" << std::endl; | ||||||
|  |          data << " dragObject = null;" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  |          data << "" << std::endl; | ||||||
|  |          data << "function mousemove(e) {" << std::endl; | ||||||
|  |          data << " var mouseX = getMouseX(e);" << std::endl; | ||||||
|  |          data << " var mouseY = getMouseY(e);" << std::endl; | ||||||
|  |          data << " if(isMouseDown) {" << std::endl; | ||||||
|  |          data << "  if(dragHint == \"move\") {" << std::endl; | ||||||
|  |          data << "   dragObject.style.left = (mouseX - mouseDownX) + \"px\";" << std::endl; | ||||||
|  |          data << "   dragObject.style.top = (mouseY - mouseDownY) + \"px\";  " << std::endl; | ||||||
|  |          data << "   listSource();" << std::endl; | ||||||
|  |          data << "  } " << std::endl; | ||||||
|  |          data << " }" << std::endl; | ||||||
|  |          data << "}" << std::endl; | ||||||
|  | 
 | ||||||
|  | 	 httpRequest.response.addHeader("Content-Type", "script/javascript"); | ||||||
|  |          return 0; | ||||||
|  | 
 | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |    }; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user