|
|
@ -0,0 +1,316 @@
|
|
|
|
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
|
|
<html lang="en" >
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
|
|
|
<meta charset="utf-8">
|
|
|
|
|
|
|
|
<title>OpenRPA</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" type="text/css" href="3rdParty/Semantic-UI-CSS-master/semantic.min.css">
|
|
|
|
|
|
|
|
<script
|
|
|
|
|
|
|
|
src="3rdParty/jQuery/jquery-3.1.1.min.js"
|
|
|
|
|
|
|
|
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
|
|
|
|
|
|
|
|
crossorigin="anonymous"></script>
|
|
|
|
|
|
|
|
<script src="3rdParty/Semantic-UI-CSS-master/semantic.min.js"></script>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
var mGlobal={}
|
|
|
|
|
|
|
|
$(document)
|
|
|
|
|
|
|
|
.ready(function() {
|
|
|
|
|
|
|
|
mGlobal.GUIElement={}
|
|
|
|
|
|
|
|
mGlobal.GenerateUniqueID=function(inPrefix="ID") {
|
|
|
|
|
|
|
|
return inPrefix+Math.round(Math.random()*1000)+"-"+Math.round(Math.random()*10000)+"-"+Math.round(Math.random()*1000)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mGlobal.TreeLoadSubTree =function (inElementId) {
|
|
|
|
|
|
|
|
//Подгрузка массива спецификаций
|
|
|
|
|
|
|
|
lSpecificationArray = mGlobal.GUIElement[inElementId].GUISelectorFull
|
|
|
|
|
|
|
|
///Загрузка данных
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
|
|
type: "POST",
|
|
|
|
|
|
|
|
url: 'GUIAction',
|
|
|
|
|
|
|
|
data: '{"functionName":"ElementGetChildElementList","argsArray":['+JSON.stringify(lSpecificationArray)+']}',
|
|
|
|
|
|
|
|
success:
|
|
|
|
|
|
|
|
function(lData,l2,l3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var lHTMLTree='<div class="ui list">'
|
|
|
|
|
|
|
|
var lResponseJSON=JSON.parse(lData)
|
|
|
|
|
|
|
|
for (i=0;i<lResponseJSON.outputObject.length;i++) {
|
|
|
|
|
|
|
|
var lSubItemHandleId=lResponseJSON.outputObject[i].handle;
|
|
|
|
|
|
|
|
var lSubItemActionOnClick=' onclick="mGlobal.TreeLoadSubTree(\''+lElementId+'\');" '
|
|
|
|
|
|
|
|
var lSubItemActionOnRightClick=' oncontextmenu="mGlobal.ElementHighlightNew(\''+lElementId+'\');" '
|
|
|
|
|
|
|
|
var lElementId = mGlobal.GenerateUniqueID()
|
|
|
|
|
|
|
|
lHTMLTree+='\
|
|
|
|
|
|
|
|
<div class="item handle_'+lSubItemHandleId+'" handle_id="'+lSubItemHandleId+'" id="'+lElementId+'">\
|
|
|
|
|
|
|
|
<i class="folder icon"></i>\
|
|
|
|
|
|
|
|
<div class="content">\
|
|
|
|
|
|
|
|
<div class="header" '+lSubItemActionOnClick+lSubItemActionOnRightClick+'>'+lResponseJSON.outputObject[i].name+'</div>\
|
|
|
|
|
|
|
|
<div class="description" '+lSubItemActionOnClick+lSubItemActionOnRightClick+'>process_id:'+lResponseJSON.outputObject[i].process_id+'; handle:'+lSubItemHandleId+'; class_name: '+lResponseJSON.outputObject[i].class_name+'; RECT:L'+lResponseJSON.outputObject[i].rectangle.left+' T'+lResponseJSON.outputObject[i].rectangle.top+' R'+lResponseJSON.outputObject[i].rectangle.right+' B'+lResponseJSON.outputObject[i].rectangle.bottom+'</div>\
|
|
|
|
|
|
|
|
</div>\
|
|
|
|
|
|
|
|
</div>'
|
|
|
|
|
|
|
|
//Добавить информацию об элементе в словарь JS
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]={};
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]['GUISelectorLocal']=lResponseJSON.outputObject[i]
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]['GUISelectorFull']=Array.from(lSpecificationArray);
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]['GUISelectorFull'].push(lResponseJSON.outputObject[i])
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
lHTMLTree+='</div>'
|
|
|
|
|
|
|
|
$(".ui.main.text.container #"+inElementId+" .content").append(lHTMLTree)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
dataType: "text"
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mGlobal.ElementHighlight =function (inHandleId) {
|
|
|
|
|
|
|
|
///Загрузка данных
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
|
|
type: "POST",
|
|
|
|
|
|
|
|
url: 'GUIAction',
|
|
|
|
|
|
|
|
data: '{"functionName":"ElementRunAction","argsArray":[[{"handle":'+inHandleId+'}],"draw_outline"]}',
|
|
|
|
|
|
|
|
success:
|
|
|
|
|
|
|
|
function(lData,l2,l3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
console.log('Success handle:'+inHandleId)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
dataType: "text"
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mGlobal.ElementHighlightNew =function (inElementId) {
|
|
|
|
|
|
|
|
//Подгрузка массива спецификаций
|
|
|
|
|
|
|
|
lSpecificationArray = mGlobal.GUIElement[inElementId].GUISelectorFull
|
|
|
|
|
|
|
|
///Загрузка данных
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
|
|
type: "POST",
|
|
|
|
|
|
|
|
url: 'GUIAction',
|
|
|
|
|
|
|
|
data: '{"functionName":"ElementDrawOutlineNew","argsArray":['+JSON.stringify(lSpecificationArray)+']}',
|
|
|
|
|
|
|
|
success:
|
|
|
|
|
|
|
|
function(lData,l2,l3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
lDataJSON=JSON.parse(lData);
|
|
|
|
|
|
|
|
if (lDataJSON.hasOwnProperty("Error")) {
|
|
|
|
|
|
|
|
mGlobal.ShowModal("GUI Error",lDataJSON.Error);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
dataType: "text"
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// fix main menu to page on passing
|
|
|
|
|
|
|
|
$('.main.menu').visibility({
|
|
|
|
|
|
|
|
type: 'fixed'
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
$('.overlay').visibility({
|
|
|
|
|
|
|
|
type: 'fixed',
|
|
|
|
|
|
|
|
offset: 80
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// lazy load images
|
|
|
|
|
|
|
|
$('.image').visibility({
|
|
|
|
|
|
|
|
type: 'image',
|
|
|
|
|
|
|
|
transition: 'vertical flip in',
|
|
|
|
|
|
|
|
duration: 500
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// show dropdown on hover
|
|
|
|
|
|
|
|
$('.main.menu .ui.dropdown').dropdown({
|
|
|
|
|
|
|
|
on: 'hover'
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
///Загрузка данных
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
|
|
|
|
type: "POST",
|
|
|
|
|
|
|
|
url: 'GUIAction',
|
|
|
|
|
|
|
|
data: '{"functionName":"ElementGetChildElementList","argsArray":[[]]}',
|
|
|
|
|
|
|
|
success:
|
|
|
|
|
|
|
|
function(lData,l2,l3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var lHTMLTree='<div class="ui list">'
|
|
|
|
|
|
|
|
var lResponseJSON=JSON.parse(lData)
|
|
|
|
|
|
|
|
for (i=0;i<lResponseJSON.outputObject.length;i++) {
|
|
|
|
|
|
|
|
var lElementId = mGlobal.GenerateUniqueID()
|
|
|
|
|
|
|
|
var lSubItemHandleId=lResponseJSON.outputObject[i].handle;
|
|
|
|
|
|
|
|
var lSubItemActionOnClick=' onclick="mGlobal.TreeLoadSubTree(\''+lElementId+'\');" '
|
|
|
|
|
|
|
|
var lSubItemActionOnRightClick=' oncontextmenu="mGlobal.ElementHighlightNew(\''+lElementId+'\');" '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lHTMLTree+='\
|
|
|
|
|
|
|
|
<div class="item handle_'+lSubItemHandleId+'" handle_id="'+lSubItemHandleId+'" id="'+lElementId+'">\
|
|
|
|
|
|
|
|
<i class="folder icon"></i>\
|
|
|
|
|
|
|
|
<div class="content">\
|
|
|
|
|
|
|
|
<div class="header" '+lSubItemActionOnClick+lSubItemActionOnRightClick+'>'+lResponseJSON.outputObject[i].name+'</div>\
|
|
|
|
|
|
|
|
<div class="description" '+lSubItemActionOnClick+lSubItemActionOnRightClick+'>process_id:'+lResponseJSON.outputObject[i].process_id+'; handle:'+lSubItemHandleId+'; class_name: '+lResponseJSON.outputObject[i].class_name+'; RECT:L'+lResponseJSON.outputObject[i].rectangle.left+' T'+lResponseJSON.outputObject[i].rectangle.top+' R'+lResponseJSON.outputObject[i].rectangle.right+' B'+lResponseJSON.outputObject[i].rectangle.bottom+'</div>\
|
|
|
|
|
|
|
|
</div>\
|
|
|
|
|
|
|
|
</div>'
|
|
|
|
|
|
|
|
//Добавить информацию об элементе в словарь JS
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]={};
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]['GUISelectorLocal']=lResponseJSON.outputObject[i]
|
|
|
|
|
|
|
|
mGlobal.GUIElement[lElementId]['GUISelectorFull']=[lResponseJSON.outputObject[i]]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
lHTMLTree+='</div>'
|
|
|
|
|
|
|
|
$(".ui.main.text.container").append(lHTMLTree);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
dataType: "text"
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
mGlobal.ShowModal=function(inHeaderText,inMessageText)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//Установка заголовка
|
|
|
|
|
|
|
|
$('.ui.basic.modal div.header').html(inHeaderText);
|
|
|
|
|
|
|
|
//Установка текста
|
|
|
|
|
|
|
|
$('.ui.basic.modal div.content p').html(inMessageText);
|
|
|
|
|
|
|
|
//Активация модального окна
|
|
|
|
|
|
|
|
$('.ui.basic.modal').modal('show');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style type="text/css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
body {
|
|
|
|
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.main.container {
|
|
|
|
|
|
|
|
margin-top: 2em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.main.menu {
|
|
|
|
|
|
|
|
margin-top: 4em;
|
|
|
|
|
|
|
|
border-radius: 0;
|
|
|
|
|
|
|
|
border: none;
|
|
|
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
|
|
|
transition:
|
|
|
|
|
|
|
|
box-shadow 0.5s ease,
|
|
|
|
|
|
|
|
padding 0.5s ease
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.main.menu .item img.logo {
|
|
|
|
|
|
|
|
margin-right: 1.5em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.overlay {
|
|
|
|
|
|
|
|
float: left;
|
|
|
|
|
|
|
|
margin: 0em 3em 1em 0em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.overlay .menu {
|
|
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
|
|
transition: left 0.5s ease;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.main.menu.fixed {
|
|
|
|
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
|
|
|
|
border: 1px solid #DDD;
|
|
|
|
|
|
|
|
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.overlay.fixed .menu {
|
|
|
|
|
|
|
|
left: 800px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.text.container .left.floated.image {
|
|
|
|
|
|
|
|
margin: 2em 2em 2em -4em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.text.container .right.floated.image {
|
|
|
|
|
|
|
|
margin: 2em -4em 2em 2em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.ui.footer.segment {
|
|
|
|
|
|
|
|
margin: 5em 0em 0em;
|
|
|
|
|
|
|
|
padding: 5em 0em;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="ui main text container">
|
|
|
|
|
|
|
|
<h1 class="ui header">Sticky Example</h1>
|
|
|
|
|
|
|
|
<p>This example shows how to use lazy loaded images, a sticky menu, and a simple text container</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="ui borderless main menu">
|
|
|
|
|
|
|
|
<div class="ui text container">
|
|
|
|
|
|
|
|
<div class="header item">
|
|
|
|
|
|
|
|
Project Name
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a href="#" class="item">Blog</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Articles</a>
|
|
|
|
|
|
|
|
<a href="#" class="ui right floated dropdown item">
|
|
|
|
|
|
|
|
Dropdown <i class="dropdown icon"></i>
|
|
|
|
|
|
|
|
<div class="menu">
|
|
|
|
|
|
|
|
<div class="item">Link Item</div>
|
|
|
|
|
|
|
|
<div class="item">Link Item</div>
|
|
|
|
|
|
|
|
<div class="divider"></div>
|
|
|
|
|
|
|
|
<div class="header">Header Item</div>
|
|
|
|
|
|
|
|
<div class="item">
|
|
|
|
|
|
|
|
<i class="dropdown icon"></i>
|
|
|
|
|
|
|
|
Sub Menu
|
|
|
|
|
|
|
|
<div class="menu">
|
|
|
|
|
|
|
|
<div class="item">Link Item</div>
|
|
|
|
|
|
|
|
<div class="item">Link Item</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="item">Link Item</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="ui inverted vertical footer segment">
|
|
|
|
|
|
|
|
<div class="ui center aligned container">
|
|
|
|
|
|
|
|
<div class="ui stackable inverted divided grid">
|
|
|
|
|
|
|
|
<div class="three wide column">
|
|
|
|
|
|
|
|
<h4 class="ui inverted header">Group 1</h4>
|
|
|
|
|
|
|
|
<div class="ui inverted link list">
|
|
|
|
|
|
|
|
<a href="#" class="item">Link One</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Two</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Three</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Four</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="three wide column">
|
|
|
|
|
|
|
|
<h4 class="ui inverted header">Group 2</h4>
|
|
|
|
|
|
|
|
<div class="ui inverted link list">
|
|
|
|
|
|
|
|
<a href="#" class="item">Link One</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Two</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Three</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Four</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="three wide column">
|
|
|
|
|
|
|
|
<h4 class="ui inverted header">Group 3</h4>
|
|
|
|
|
|
|
|
<div class="ui inverted link list">
|
|
|
|
|
|
|
|
<a href="#" class="item">Link One</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Two</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Three</a>
|
|
|
|
|
|
|
|
<a href="#" class="item">Link Four</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="seven wide column">
|
|
|
|
|
|
|
|
<h4 class="ui inverted header">Footer Header</h4>
|
|
|
|
|
|
|
|
<p>Extra space for a call to action inside the footer that could help re-engage users.</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ui inverted section divider"></div>
|
|
|
|
|
|
|
|
<div class="ui horizontal inverted small divided link list">
|
|
|
|
|
|
|
|
<a class="item" href="#">Site Map</a>
|
|
|
|
|
|
|
|
<a class="item" href="#">Contact Us</a>
|
|
|
|
|
|
|
|
<a class="item" href="#">Terms and Conditions</a>
|
|
|
|
|
|
|
|
<a class="item" href="#">Privacy Policy</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ui basic modal">
|
|
|
|
|
|
|
|
<div class="ui icon header">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="content">
|
|
|
|
|
|
|
|
<p>Here is the message text!</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="actions">
|
|
|
|
|
|
|
|
<div class="ui red basic cancel inverted button">
|
|
|
|
|
|
|
|
<i class="remove icon"></i>
|
|
|
|
|
|
|
|
No
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="ui green ok inverted button">
|
|
|
|
|
|
|
|
<i class="checkmark icon"></i>
|
|
|
|
|
|
|
|
Yes
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
|
|
|
</html>
|
|
|
|
|
|
|
|
|