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) {
|
||||
|
||||
coreutils::Log(coreutils::LOG_DEBUG_4) << "DATA[" << request << "]";
|
||||
|
||||
coreutils::PString request1(request);
|
||||
HTTPRequest httpRequest(request1);
|
||||
|
||||
|
@ -1,19 +1,21 @@
|
||||
#ifndef __HTTPPageList_h__
|
||||
#define __HTTPPageList_h__
|
||||
# define __HTTPPageList_h__
|
||||
|
||||
#include "TCPSession.h"
|
||||
#include "HTTPRequest.h"
|
||||
#include "__index.h"
|
||||
#include "__script.h"
|
||||
#include "__editview.h"
|
||||
#include "__style.h"
|
||||
#include "__setupadmin.h"
|
||||
#include "__favicon_ico.h"
|
||||
#include "__welcome.h"
|
||||
#include "__mainmenu.h"
|
||||
#include "__newview.h"
|
||||
#include "__configure.h"
|
||||
#include "__viewlist.h"
|
||||
# include "TCPSession.h"
|
||||
# include "HTTPRequest.h"
|
||||
# include "__index.h"
|
||||
# include "__script.h"
|
||||
# include "__editview.h"
|
||||
# include "__editview_js.h"
|
||||
# include "__style.h"
|
||||
# include "__setupadmin.h"
|
||||
# include "__favicon_ico.h"
|
||||
# include "__welcome.h"
|
||||
# include "__mainmenu.h"
|
||||
# include "__configure.h"
|
||||
# include "__viewlist.h"
|
||||
# include "__workflow.h"
|
||||
# include "__workflow_js.h"
|
||||
|
||||
namespace http {
|
||||
|
||||
@ -24,14 +26,16 @@ namespace http {
|
||||
add(index, "/");
|
||||
add(script, "/script");
|
||||
add(editview, "/editview");
|
||||
add(editview_js, "/__editview_js");
|
||||
add(style, "/style");
|
||||
add(setupadmin, "/setupadmin");
|
||||
add(favicon_ico, "/favicon.ico");
|
||||
add(welcome, "/welcome");
|
||||
add(mainmenu, "/mainmenu");
|
||||
add(newview, "/newview");
|
||||
add(configure, "/configure");
|
||||
add(viewlist, "/viewlist");
|
||||
add(workflow, "/workflow");
|
||||
add(workflow_js, "/__workflow_js");
|
||||
}
|
||||
|
||||
bool processRequest(HTTPRequest &httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);
|
||||
@ -48,13 +52,15 @@ namespace http {
|
||||
__script script;
|
||||
__style style;
|
||||
__editview editview;
|
||||
__editview_js editview_js;
|
||||
__setupadmin setupadmin;
|
||||
__favicon_ico favicon_ico;
|
||||
__welcome welcome;
|
||||
__mainmenu mainmenu;
|
||||
__newview newview;
|
||||
__configure configure;
|
||||
__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 << " </div> " << std::endl;
|
||||
data << "" << std::endl;
|
||||
data << " <script>" << 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;
|
||||
data << " <script src=\"/__editview_js\" />" << std::endl;
|
||||
|
||||
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 << " </div>" << 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 << " <span>Data Entity Editor</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('/workflow','main');\">" << std::endl;
|
||||
data << " <span>Work Flow Process Management</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 << " <span>Storyboard</span>" << std::endl;
|
||||
data << " </div>" << std::endl;
|
||||
data << "</div>" << std::endl;
|
||||
|
||||
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
|
11
__script.h
11
__script.h
@ -36,10 +36,13 @@ namespace http {
|
||||
data << "function insertAndExecute(id, text) {" << std::endl;
|
||||
data << " idresolved = document.getElementById(id);" << std::endl;
|
||||
data << " idresolved.innerHTML = text;" << std::endl;
|
||||
data << " var script = idresolved.getElementsByTagName(\"script\");" << std::endl;
|
||||
data << " for(var ix=0;ix<script.length;ix++) {" << std::endl;
|
||||
data << " eval(script[ix].text);" << std::endl;
|
||||
data << " }" << std::endl;
|
||||
data << " var scriptarr = idresolved.getElementsByTagName(\"script\");" << std::endl;
|
||||
data << " if(scriptarr.length > 0) {" << 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;
|
||||
|
||||
httpRequest.response.addHeader("Content-Type", "text/javascript");
|
||||
|
@ -19,7 +19,7 @@ namespace http {
|
||||
data << "<div>" << 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 << " </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 << " onmousedown=\"getPage('/newview','main');\">" << std::endl;
|
||||
data << " onmousedown=\"getPage('/editview','main');\">" << std::endl;
|
||||
data << " <span>" << directory.get().getName() << "</span>" << std::endl;
|
||||
data << " </div>" << std::endl;
|
||||
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