Folder reorganize 1
1
test/kepware/AB.txt
Normal file
@@ -0,0 +1 @@
|
||||
{"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Allen-Bradley ControlLogix Ethernet","common.ALLTYPES_NAME":"AB","common.ALLTYPES_DEVNAME":"ControlLogix","servermain.DEVICE_ID_STRING": "10.10.100.10,1,0","common.ALLTYPES_TAGNAME":"GlobalVar","servermain.TAG_ADDRESS":"GlobalVar","servermain.TAG_DATA_TYPE": 8}
|
||||
449
test/kepware/CSS/jsoneditor.css
Normal file
@@ -0,0 +1,449 @@
|
||||
|
||||
div.jsoneditor {
|
||||
|
||||
}
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor-readonly {
|
||||
border: 1px solid transparent;
|
||||
min-height: 16px;
|
||||
min-width: 32px;
|
||||
padding: 2px;
|
||||
margin: 1px;
|
||||
word-wrap: break-word;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* adjust margin of p elements inside editable divs, needed for Opera, IE */
|
||||
div.jsoneditor-field p,
|
||||
div.jsoneditor-value p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value {
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
div.jsoneditor-readonly {
|
||||
min-width: 16px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-empty {
|
||||
border-color: lightgray;
|
||||
border-style: dashed;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after,
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
pointer-events: none;
|
||||
color: lightgray;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after {
|
||||
content: "field";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
content: "value";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-url,
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
color: green;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
display: inline-block;
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url:hover,
|
||||
a.jsoneditor-value.jsoneditor-url:focus {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-separator {
|
||||
padding: 3px 0;
|
||||
vertical-align: top;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-field[contenteditable=true]:focus,
|
||||
div.jsoneditor-field[contenteditable=true]:hover,
|
||||
div.jsoneditor-value[contenteditable=true]:focus,
|
||||
div.jsoneditor-value[contenteditable=true]:hover,
|
||||
div.jsoneditor-field.jsoneditor-highlight,
|
||||
div.jsoneditor-value.jsoneditor-highlight {
|
||||
background-color: #FFFFAB;
|
||||
border: 1px solid yellow;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-highlight-active,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:hover,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:hover {
|
||||
background-color: #ffee00;
|
||||
border: 1px solid #ffc700;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-string {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-object,
|
||||
div.jsoneditor-value.jsoneditor-array {
|
||||
min-width: 16px;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-number {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-boolean {
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-null {
|
||||
color: #004ED0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-invalid {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.jsoneditor-tree button {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background: transparent url('img/jsoneditor-icons.svg');
|
||||
}
|
||||
|
||||
div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree,
|
||||
div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-collapsed {
|
||||
background-position: 0 -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-expanded {
|
||||
background-position: 0 -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu {
|
||||
background-position: -48px -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:focus,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
background-position: -48px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree *:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button:focus {
|
||||
/* TODO: nice outline for buttons with focus
|
||||
outline: #97B0F8 solid 2px;
|
||||
box-shadow: 0 0 8px #97B0F8;
|
||||
*/
|
||||
background-color: #f5f5f5;
|
||||
outline: #e5e5e5 solid 1px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-invisible {
|
||||
visibility: hidden;
|
||||
background: none;
|
||||
}
|
||||
|
||||
div.jsoneditor {
|
||||
color: #1A1A1A;
|
||||
border: 1px solid #3883fa;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
padding: 0;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
|
||||
div.jsoneditor-tree table.jsoneditor-tree {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-outer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: -35px 0 0 0;
|
||||
padding: 35px 0 0 0;
|
||||
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text,
|
||||
.ace-jsoneditor {
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
outline-width: 0;
|
||||
border: none;
|
||||
background-color: white;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
tr.jsoneditor-highlight,
|
||||
tr.jsoneditor-selected {
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected button.jsoneditor-contextmenu {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea {
|
||||
background: url('img/jsoneditor-icons.svg') -72px -72px;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:focus,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {
|
||||
background-position: -72px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor tr,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor td {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-tree {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor td,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor textarea,
|
||||
.jsoneditor-schema-error {
|
||||
font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #1A1A1A;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* popover */
|
||||
.jsoneditor-schema-error {
|
||||
cursor: default;
|
||||
display: inline-block;
|
||||
/*font-family: arial, sans-serif;*/
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree .jsoneditor-schema-error {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url('img/jsoneditor-icons.svg') -168px -48px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover {
|
||||
background-color: #4c4c4c;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 0 5px rgba(0,0,0,0.4);
|
||||
color: #fff;
|
||||
display: none;
|
||||
padding: 7px 10px;
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above {
|
||||
bottom: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below {
|
||||
top: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left {
|
||||
top: -7px;
|
||||
right: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right {
|
||||
top: -7px;
|
||||
left: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover:before {
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
content: '';
|
||||
display: block;
|
||||
left: 50%;
|
||||
margin-left: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before {
|
||||
border-top: 7px solid #4c4c4c;
|
||||
bottom: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before {
|
||||
border-bottom: 7px solid #4c4c4c;
|
||||
top: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before {
|
||||
border-left: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
right: -14px;
|
||||
left: inherit;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before {
|
||||
border-right: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
left: -14px;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error:hover .jsoneditor-popover,
|
||||
.jsoneditor-schema-error:focus .jsoneditor-popover {
|
||||
display: block;
|
||||
-webkit-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-moz-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-ms-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fade-in {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
@-moz-keyframes fade-in {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
@-ms-keyframes fade-in {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
/*@-webkit-keyframes move-up {*/
|
||||
/*from { bottom: 24px; }*/
|
||||
/*to { bottom: 32px; }*/
|
||||
/*}*/
|
||||
/*@-moz-keyframes move-up {*/
|
||||
/*from { bottom: 24px; }*/
|
||||
/*to { bottom: 32px; }*/
|
||||
/*}*/
|
||||
/*@-ms-keyframes move-up {*/
|
||||
/*from { bottom: 24px; }*/
|
||||
/*to { bottom: 32px; }*/
|
||||
/*}*/
|
||||
|
||||
|
||||
/* JSON schema errors displayed at the bottom of the editor in mode text and code */
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background-color: #ffef8b;
|
||||
border-top: 1px solid #ffd700;
|
||||
}
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors td {
|
||||
padding: 3px 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.jsoneditor-text-errors .jsoneditor-schema-error {
|
||||
border: none;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url('img/jsoneditor-icons.svg') -168px -48px;
|
||||
}
|
||||
|
||||
500
test/kepware/CSS/normalize.css
vendored
Normal file
@@ -0,0 +1,500 @@
|
||||
/*! normalize.css 2012-07-07T09:50 UTC - http://github.com/necolas/normalize.css */
|
||||
|
||||
/* ==========================================================================
|
||||
HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Corrects `block` display not defined in IE6/7/8/9 & FF3.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects `inline-block` display not defined in IE6/7/8/9 & FF3.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
video {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prevents modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling for `hidden` attribute not present in IE7/8/9, FF3, S4.
|
||||
* Known issue: no IE6 support.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Base
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* 1. Corrects text resizing oddly in IE6/7 when body `font-size` is set using
|
||||
* `em` units.
|
||||
* 2. Prevents iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-size: 100%; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses `font-family` inconsistency between `textarea` and other form
|
||||
* elements.
|
||||
*/
|
||||
|
||||
html,
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses margins handled incorrectly in IE6/7.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Links
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Addresses `outline` inconsistency between Chrome and other browsers.
|
||||
*/
|
||||
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
* Improves readability when focused and also mouse hovered in all browsers.
|
||||
* people.opera.com/patrickl/experiments/keyboard/test
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Typography
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Addresses font sizes and margins set differently in IE6/7.
|
||||
* Addresses font sizes within `section` and `article` in FF4+, Chrome, S5.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
margin: 0.83em 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.17em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1em;
|
||||
margin: 1.33em 0;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 0.83em;
|
||||
margin: 1.67em 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 0.75em;
|
||||
margin: 2.33em 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in IE7/8/9, S5, Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses style set to `bolder` in FF3+, S4/5, Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in S5, Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses styling not present in IE6/7/8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses margins set differently in IE6/7.
|
||||
*/
|
||||
|
||||
p,
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects font family set oddly in IE6, S4/5, Chrome.
|
||||
* en.wikipedia.org/wiki/User:Davidgothberg/Test59
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: monospace, serif;
|
||||
_font-family: 'courier new', monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/*
|
||||
* Improves readability of pre-formatted text in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses CSS quotes not supported in IE6/7.
|
||||
*/
|
||||
|
||||
q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses `quotes` property not supported in S4.
|
||||
*/
|
||||
|
||||
q:before,
|
||||
q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prevents `sub` and `sup` affecting `line-height` in all browsers.
|
||||
* gist.github.com/413930
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Lists
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Addresses margins set differently in IE6/7.
|
||||
*/
|
||||
|
||||
dl,
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses paddings set differently in IE6/7.
|
||||
*/
|
||||
|
||||
menu,
|
||||
ol,
|
||||
ul {
|
||||
padding: 0 0 0 40px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects list images handled incorrectly in IE7.
|
||||
*/
|
||||
|
||||
nav ul,
|
||||
nav ol {
|
||||
list-style: none;
|
||||
list-style-image: none;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* 1. Removes border when inside `a` element in IE6/7/8/9, FF3.
|
||||
* 2. Improves image quality when scaled in IE7.
|
||||
* code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0; /* 1 */
|
||||
-ms-interpolation-mode: bicubic; /* 2 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Corrects overflow displayed oddly in IE9.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Figures
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Addresses margin not present in IE6/7/8/9, S5, O11.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Forms
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Corrects margin displayed oddly in IE6/7.
|
||||
*/
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Corrects color not being inherited in IE6/7/8/9.
|
||||
* 2. Corrects text not wrapping in FF3.
|
||||
* 3. Corrects alignment displayed oddly in IE6/7.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0;
|
||||
white-space: normal; /* 2 */
|
||||
*margin-left: -7px; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Corrects font size not being inherited in all browsers.
|
||||
* 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome.
|
||||
* 3. Improves appearance and consistency in all browsers.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
font-size: 100%; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
vertical-align: baseline; /* 3 */
|
||||
*vertical-align: middle; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Addresses FF3/4 setting `line-height` on `input` using `!important` in the
|
||||
* UA stylesheet.
|
||||
*/
|
||||
|
||||
button,
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Corrects inability to style clickable `input` types in iOS.
|
||||
* 3. Improves usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
* 4. Removes inner spacing in IE7 without affecting normal text inputs.
|
||||
* Known issue: inner spacing remains in IE6.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
*overflow: visible; /* 4 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Addresses box sizing set to content-box in IE8/9.
|
||||
* 2. Removes excess padding in IE8/9.
|
||||
* 3. Removes excess padding in IE7.
|
||||
* Known issue: excess padding remains in IE6.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
*height: 13px; /* 3 */
|
||||
*width: 13px; /* 3 */
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Addresses `appearance` set to `searchfield` in S5, Chrome.
|
||||
* 2. Addresses `box-sizing` set to `border-box` in S5, Chrome (include `-moz`
|
||||
* to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*
|
||||
* Removes inner padding and search cancel button in S5, Chrome on OS X.
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/*
|
||||
* Removes inner padding and border in FF3+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 1. Removes default vertical scrollbar in IE6/7/8/9.
|
||||
* 2. Improves readability and alignment in all browsers.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto; /* 1 */
|
||||
vertical-align: top; /* 2 */
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Tables
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
76
test/kepware/CSS/pd.css
Normal file
@@ -0,0 +1,76 @@
|
||||
/*youngtec: #000080, #add8e6*/
|
||||
/*default: #4CAF50,#8dc63f*/
|
||||
/*Change in engine.css $('body').css('background-color', '#4CAF50');*/
|
||||
|
||||
#mainNav .active {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
#assetCreationNav .active {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
#jsonConfigNav .active {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
.inputButton {
|
||||
background-color: #4CAF50;
|
||||
/* Green */
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
color: white;
|
||||
padding: 5px 10px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
|
||||
.dropdown:hover .dropbtn {
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
.dropbtn {
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
font-size: 16px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu {
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
padding: 2px;
|
||||
margin: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: white;
|
||||
background-color: #8dc63f;
|
||||
border-bottom: 1px solid #8dc63f;
|
||||
}
|
||||
|
||||
div.jsoneditor {
|
||||
color: #1A1A1A;
|
||||
border: 1px solid #8dc63f /*#3883fa*/;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
padding: 0;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
background: #8dc63f;
|
||||
}
|
||||
|
||||
458
test/kepware/CSS/styles.css
Normal file
@@ -0,0 +1,458 @@
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
background-color: #dbdbdb;
|
||||
}
|
||||
|
||||
|
||||
/* Force Elements to Self Clear its Children: http://css-tricks.com/snippets/css/clear-fix/ */
|
||||
|
||||
.clearfix:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
* html .group {
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
|
||||
/* IE6 */
|
||||
|
||||
*:first-child+html .group {
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
|
||||
/* IE7 */
|
||||
|
||||
|
||||
/*General Elements*/
|
||||
|
||||
#exampleslogantop {
|
||||
padding: 20px;
|
||||
float: right;
|
||||
font-size: 30px;
|
||||
color: #D5DBDB;
|
||||
}
|
||||
|
||||
#examplesloganbottom {
|
||||
padding-right: 20px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 0px;
|
||||
margin-bottom: 0px;
|
||||
float: right;
|
||||
font-size: 30px;
|
||||
color: #566573;
|
||||
position: relative;
|
||||
bottom: 15px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#header {
|
||||
background: white;
|
||||
width: 100%;
|
||||
float: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: white;
|
||||
float: left;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
max-width: 300px;
|
||||
height: 300px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#userPass,
|
||||
#userName {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
|
||||
/*Navigation Menus*/
|
||||
|
||||
|
||||
/* Main Nav */
|
||||
|
||||
#mainNav {
|
||||
list-style-type: none;
|
||||
overflow: hidden;
|
||||
background-color: #333;
|
||||
width: 100%;
|
||||
float: left;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#mainNav li {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#mainNav li a {
|
||||
display: block;
|
||||
color: white;
|
||||
text-align: center;
|
||||
padding: 5px 5px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#mainNav li a:hover:not(.active) {
|
||||
background-color: #111;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*Asset Creator Nav styling*/
|
||||
|
||||
#assetCreationNav {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
background-color: #333;
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#assetCreationNav li {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#assetCreationNav li a {
|
||||
display: block;
|
||||
color: white;
|
||||
text-align: center;
|
||||
padding: 5px 5px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#assetCreationNav li a:hover:not(.active) {
|
||||
background-color: #111;
|
||||
}
|
||||
|
||||
#devicePanel,
|
||||
#channelPanel,
|
||||
#tagPanel {
|
||||
margin-top: 60px;
|
||||
height: 100%;
|
||||
width: 385.75px;
|
||||
}
|
||||
|
||||
#channelPanel p {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*Json Viewer Nav styling*/
|
||||
|
||||
#jsonConfigNav {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
#jsonConfigNav li {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#jsonConfigNav li a {
|
||||
display: block;
|
||||
color: white;
|
||||
text-align: center;
|
||||
padding: 5px 5px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#jsonConfigNav li a:hover:not(.active) {
|
||||
background-color: #111;
|
||||
}
|
||||
|
||||
/*Asset Creator*/
|
||||
|
||||
#channelType,
|
||||
#deviceModel {
|
||||
display: block;
|
||||
margin: 10px;
|
||||
width: 174px;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
|
||||
/*Event Logger */
|
||||
|
||||
#resultsRow th,
|
||||
#resultsRow td {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
|
||||
/*Text Input styling*/
|
||||
#textJsonInput {
|
||||
border: 3px solid #ccc;
|
||||
width: 96.7%;
|
||||
padding: 10px;
|
||||
height: 232px;
|
||||
}
|
||||
|
||||
#jsonButtons {
|
||||
margin-right: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.drop-down-container {
|
||||
position: relative;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#restServerName,
|
||||
#restServerPort {
|
||||
display: block;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#tagValue {
|
||||
size: 15px;
|
||||
color: green;
|
||||
}
|
||||
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
z-index: 9999;
|
||||
!important overflow: visible;
|
||||
!important
|
||||
}
|
||||
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
min-width: 160px;
|
||||
}
|
||||
|
||||
|
||||
/* Links inside the dropdown */
|
||||
|
||||
.dropdown-content a {
|
||||
color: black;
|
||||
padding: 12px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
/* Change color of dropdown links on hover */
|
||||
|
||||
.dropdown-content a:hover {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
overflow: visible;
|
||||
z-index: 999999999;
|
||||
}
|
||||
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
|
||||
|
||||
#dropdownContainer {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
|
||||
/*Main Container*/
|
||||
|
||||
#maincontainer {
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
/*Stats Bar*/
|
||||
|
||||
#statsBar {
|
||||
position: relative;
|
||||
left: -30px;
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
#statsBar label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#statsBar ul li {
|
||||
display: inline;
|
||||
margin: 0px 5px;
|
||||
}
|
||||
|
||||
#connectedTo a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#jsonObject {
|
||||
min-width: 45%;
|
||||
height: 450px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
#configurator,
|
||||
#deviceList,
|
||||
#useCase1Panel,
|
||||
#iotGatewayPanel {
|
||||
/*jsonObject separated with #jsonObject*/
|
||||
height: 450px;
|
||||
max-width: 24%;
|
||||
min-width: 350px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#tagListContainer {
|
||||
overflow: auto;
|
||||
height: 200px;
|
||||
color: black;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#deviceTree {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#configurator input {
|
||||
display: block;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.card {
|
||||
background: white;
|
||||
border-radius: 2px;
|
||||
display: inline;
|
||||
float: left;
|
||||
height: 400px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.supporting-text {
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
#results {
|
||||
background: white;
|
||||
min-width: 100%;
|
||||
float: left;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
bottom: 0px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
#resultsRow {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#resultsTable,
|
||||
#eventsTable {
|
||||
color: black;
|
||||
width: 40%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#eventsTable tr td {
|
||||
max-width: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#eventsTable td {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#jsoneditor {
|
||||
width: 100%;
|
||||
height: 270px;
|
||||
}
|
||||
|
||||
#copyright {
|
||||
background: #A9A9A9;
|
||||
width: 100%;
|
||||
float: left;
|
||||
height: 50px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#copyright p {
|
||||
margin-left: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.box {
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.box .row.header {
|
||||
flex: 0 1 auto;
|
||||
/* The above is shorthand for:
|
||||
flex-grow: 0,
|
||||
flex-shrink: 1,
|
||||
flex-basis: auto
|
||||
*/
|
||||
}
|
||||
|
||||
.box .row.content {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.box .row.footer {
|
||||
flex: 0 1 300px;
|
||||
}
|
||||
|
||||
#copyrightquotes {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#popUpDiv {
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
background-color: rgba(123, 123, 123, 0.8);
|
||||
display: none;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 200px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
#popupSelect {
|
||||
z-index: 1000;
|
||||
position: absolute;
|
||||
top: 130px;
|
||||
left: 50px;
|
||||
}
|
||||
699
test/kepware/JS/engine.js
Normal file
@@ -0,0 +1,699 @@
|
||||
//DISCLAIMER HERE//
|
||||
|
||||
//Script for the engine
|
||||
//Not releated for v6 API. These are just the client engines to power the logic and data in the front end
|
||||
|
||||
|
||||
|
||||
//Back End Functions that loops non-stop
|
||||
function defaultViewState() {
|
||||
//Sets up the default configurator views
|
||||
$("#textJsonEditor").show();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").hide();
|
||||
$("#channelPanel").show();
|
||||
$("#devicePanel").hide();
|
||||
$("#tagPanel").hide();
|
||||
$("#deleteChannel").hide();
|
||||
$("#deleteDevice").hide();
|
||||
$("#readProjObj").hide();
|
||||
$("#useCase1Panel").hide();
|
||||
$("#iotGatewayPanel").hide();
|
||||
}
|
||||
|
||||
function Loop() {
|
||||
//Checks if debug is enabled
|
||||
if ($("#debugState").is(':checked')) {
|
||||
debugState = true;
|
||||
$("#readProjObj").show();
|
||||
$('body').css('background-color', 'yellow');
|
||||
} else {
|
||||
debugState = false;
|
||||
$("#readProjObj").hide();
|
||||
$('body').css('background-color', '#4CAF50');
|
||||
}
|
||||
//Check if State should be connected. If debug is true, we stop the loop and dont do anything.
|
||||
if (connectState && !debugState) {
|
||||
if (!disconnected) {
|
||||
$("#connectedTo").css("color", "green");
|
||||
$(".hideAfterConnect").hide();
|
||||
$("#updateConfig").hide();
|
||||
var htmlString = "<li><Strong>You are now connected as : </Strong>" + userName + "</li>";
|
||||
$("#connectedUserTxt").html(htmlString);
|
||||
updateStatsBarServer(inputServer);
|
||||
updateStatsBarChannelCount();
|
||||
updateStatsDeviceCount();
|
||||
|
||||
readEventLog();
|
||||
|
||||
var tempblank = [];
|
||||
|
||||
if (eventArrayChanged && (eventArray.toString() != tempblank.toString())) {
|
||||
var tempindex = 0;
|
||||
for (var i = 0; i < eventArray.length; i++) {
|
||||
if (eventArray[i].timestamp == lastKnownTime) {
|
||||
tempindex = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (var j = tempindex; j < eventArray.length; j++) {
|
||||
updateEventLog(eventArray[j].timestamp, eventArray[j].event, eventArray[j].message);
|
||||
}
|
||||
|
||||
lastKnownTime = eventArray[eventArray.length - 1].timestamp;
|
||||
}
|
||||
|
||||
updateProj(inputServer); //For maintaining the latest value
|
||||
if (treeChanged) {
|
||||
updateStatsBarServer(inputServer);
|
||||
updateStatsBarChannelCount();
|
||||
updateStatsDeviceCount();
|
||||
treeChanged = false;
|
||||
drawTree(channelList);
|
||||
|
||||
$('#deviceTree').on('select_node.jstree', function(e, data) {
|
||||
var loMainSelected = data;
|
||||
getNodeAndParent(loMainSelected);
|
||||
});
|
||||
}
|
||||
|
||||
$('#deviceTree').on('ready.jstree', function() {
|
||||
$("#deviceTree").jstree("open_all");
|
||||
});
|
||||
|
||||
//deviceTreeListener();
|
||||
} else {
|
||||
$("#connectedTo").css("color", "red");
|
||||
$(".hideAfterConnect").show();
|
||||
$("#updateConfig").show();
|
||||
}
|
||||
} else {
|
||||
//When disconnected or in debug mode
|
||||
$("#connectedTo").css("color", "red");
|
||||
$(".hideAfterConnect").show();
|
||||
$("#updateConfig").show();
|
||||
}
|
||||
}
|
||||
|
||||
//General Functions
|
||||
function getUserInputs() {
|
||||
inputServer = document.getElementById('server').value;
|
||||
inputChannel = document.getElementById('channel').value;
|
||||
inputChannelType = document.getElementById('channelType').value;
|
||||
inputDevice = document.getElementById('device').value;
|
||||
inputDevID = document.getElementById('deviceId').value;
|
||||
inputTag = document.getElementById('tag').value;
|
||||
inputTagAddr = document.getElementById('tagAddr').value;
|
||||
inputTagType = document.getElementById("tagType").value;
|
||||
inputDriver = document.getElementById('channelType').value;
|
||||
userName = document.getElementById('userName').value;
|
||||
userPass = document.getElementById('userPass').value;
|
||||
|
||||
var authString = userName + ":" + userPass;
|
||||
encodeAuth = btoa(authString);
|
||||
|
||||
}
|
||||
|
||||
function getNodeAndParent(loSelectedNode) {
|
||||
//Gets the Node clicked
|
||||
try {
|
||||
var lnLevel = loSelectedNode.node.parents.length;
|
||||
var lsSelectedID = loSelectedNode.node.id;
|
||||
var loParent = $("#" + lsSelectedID);
|
||||
var selected = loSelectedNode.node.text;
|
||||
var tempList = [];
|
||||
var channel;
|
||||
var device;
|
||||
var driver;
|
||||
for (var ln = 0; ln <= lnLevel - 1; ln++) {
|
||||
loParent = loParent.parent().parent();
|
||||
|
||||
if (loParent.children()[1] !== undefined) {
|
||||
tempList.push(loParent.children()[1].text);
|
||||
}
|
||||
}
|
||||
if (tempList.length === 0) {
|
||||
//This is a channel
|
||||
channel = selected;
|
||||
cselected = selected;
|
||||
console.log("cselected is" + cselected);
|
||||
|
||||
for (var i = 0; i < channelList.length; i++) {
|
||||
if (channel == channelList[i].text) {
|
||||
driver = channelList[i].driver;
|
||||
console.log(driver);
|
||||
}
|
||||
}
|
||||
//console.log("channel is " + channel + ", driver is " + driver);
|
||||
channelSelected(channel, driver);
|
||||
} else {
|
||||
//This is a device
|
||||
channel = tempList[0];
|
||||
cselected = channel;
|
||||
document.getElementById("channel").value = cselected;
|
||||
driver = tempList[0].driver;
|
||||
document.getElementById("channelType").value = driver;
|
||||
device = selected;
|
||||
dselected = selected;
|
||||
document.getElementById("device").value = dselected;
|
||||
console.log("cselected is" + cselected);
|
||||
console.log("dselected is" + dselected);
|
||||
deviceSelected(device, channel);
|
||||
console.log("Getting Tags for " + device + " under " + channel);
|
||||
getTags(device, channel);
|
||||
}
|
||||
} catch (err) {
|
||||
updateLog('Error in fetching selection in tree');
|
||||
}
|
||||
}
|
||||
|
||||
//Dropdown display functions
|
||||
/* When the user clicks on the button, toggle between hiding and showing the dropdown content */
|
||||
function dropdown() {
|
||||
document.getElementById("myDropdown").classList.toggle("show");
|
||||
}
|
||||
|
||||
// Close the dropdown menu if the user clicks outside of it
|
||||
window.onclick = function(event) {
|
||||
if (!event.target.matches('.inputButton')) {
|
||||
|
||||
var dropdowns = document.getElementsByClassName("dropdown-content");
|
||||
var i;
|
||||
for (var i = 0; i < dropdowns.length; i++) {
|
||||
var openDropdown = dropdowns[i];
|
||||
if (openDropdown.classList.contains('show')) {
|
||||
openDropdown.classList.remove('show');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Device List Functions
|
||||
function drawTree(treeObj) {
|
||||
//console.log("Drawing Tree");
|
||||
//console.log("Input is " + treeObj);
|
||||
//Draws the Device list based on the jSON object parsed into it
|
||||
//Has to destroy the tree and create a new one. There are no update function
|
||||
$('#deviceTree').jstree("destroy").empty();
|
||||
$('#deviceTree').jstree({
|
||||
'core': {
|
||||
'check_callback': true,
|
||||
'data': channelList
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function deviceTreeListener() {
|
||||
|
||||
}
|
||||
|
||||
//jSON Configurator Panel
|
||||
function updateText(content) {
|
||||
$("#textJsonInput").val(content);
|
||||
}
|
||||
|
||||
//Custom Event Logger Functions
|
||||
function updateLog(content, status) {
|
||||
//Gets the Timestamp and inserts the content passed into the function
|
||||
if (status == null) {
|
||||
status = "";
|
||||
}
|
||||
|
||||
var d = new Date(),
|
||||
h = (d.getHours() < 10 ? '0' : '') + d.getHours(),
|
||||
m = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes();
|
||||
s = (d.getSeconds() < 10 ? '0' : '') + d.getSeconds();
|
||||
i = h + ':' + m + ':' + s;
|
||||
|
||||
//This function updates the log in the Event Log insert a row at the top of the table
|
||||
var table = document.getElementById("resultsRow");
|
||||
var row = table.insertRow(1);
|
||||
var cell1 = row.insertCell(0);
|
||||
var cell2 = row.insertCell(1);
|
||||
var cell3 = row.insertCell(2);
|
||||
cell1.innerHTML = i;
|
||||
cell2.innerHTML = content;
|
||||
cell3.innerHTML = status;
|
||||
}
|
||||
|
||||
//KSE Logger Functions
|
||||
function updateEventLog(timestamp, eventType, message) {
|
||||
|
||||
var table = document.getElementById("eventsRow");
|
||||
var row = table.insertRow(1);
|
||||
var cell1 = row.insertCell(0);
|
||||
var cell2 = row.insertCell(1);
|
||||
var cell3 = row.insertCell(2);
|
||||
cell1.innerHTML = timestamp;
|
||||
cell2.innerHTML = eventType;
|
||||
cell3.innerHTML = message;
|
||||
}
|
||||
|
||||
|
||||
//Stats Bar functions
|
||||
function updateStatsBarServer(inputServer) {
|
||||
//Updates the Server IP
|
||||
$("#connectedTo").html("<strong>Connected to :</strong>" + "<a href = \"http://" + inputServer + "/config\" target=\"_blank\"</a>" + inputServer + "</li>");
|
||||
}
|
||||
|
||||
function updateStatsBarChannelCount() {
|
||||
//Updates the No. of channels. The Global Variable channelCount is written into by the updateProj Function
|
||||
var count = 0;
|
||||
for (var i = 0; i < channelList.length; i++) {
|
||||
count++;
|
||||
}
|
||||
$("#channelCount").html("<strong>No. of Channels :</strong>" + count + "</li>");
|
||||
}
|
||||
|
||||
function updateStatsDeviceCount() {
|
||||
var count = 0;
|
||||
if (channelList === undefined) {
|
||||
count = 0;
|
||||
} else {
|
||||
for (var i = 0; i < channelList.length; i++) {
|
||||
count = count + channelList[i].children.length;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$("#deviceCount").html("<strong>No. of Devices :</strong>" + count + "</li>");
|
||||
}
|
||||
|
||||
function readProj() {
|
||||
//This function is a single read to the projObj
|
||||
//Upon the sucessful callback, we update the global variables to make them universally accessible
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function() {
|
||||
connectState = true;
|
||||
updateLog("Server is now connected to " + inputServer, status);
|
||||
},
|
||||
error: function() {
|
||||
connectState = false;
|
||||
updateLog("Please check your connection and configuration", status);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function updateProj(inputServer) {
|
||||
////This function is used in the Loop function to update the Global Variable projObj
|
||||
//The following global variables are updated here: projObj
|
||||
//Upon the sucessful callback, we update the global variables to make them universally accessible
|
||||
if (connectState) {
|
||||
//make sure the user wants to stay connected and avoid a situation we continue to update even when the user wants to disconnect
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(JSON) {
|
||||
//success(result,status,xhr)
|
||||
projObj = JSON;
|
||||
var tempList = [];
|
||||
var tempObj = {};
|
||||
|
||||
channelCount = JSON.length;
|
||||
for (var i = 0; i < channelCount; i++) {
|
||||
tempObj = {};
|
||||
tempObj.text = projObj[i]["common.ALLTYPES_NAME"];
|
||||
tempObj.driver = projObj[i]["servermain.MULTIPLE_TYPES_DEVICE_DRIVER"];
|
||||
getDevicesList(projObj[i]["common.ALLTYPES_NAME"]);
|
||||
tempList[i] = tempObj;
|
||||
}
|
||||
|
||||
var tempStr = "";
|
||||
var tempStr2 = "";
|
||||
|
||||
for (var i = 0; i < tempList.length; i++) {
|
||||
tempStr += tempList[i].text;
|
||||
}
|
||||
|
||||
for (var i = 0; i < channelList.length; i++) {
|
||||
tempStr2 += channelList[i].text;
|
||||
}
|
||||
|
||||
if (tempStr == tempStr2) {
|
||||
//we compare the list before writing again to avoid corruption of the data
|
||||
//console.log("List unchanged");
|
||||
} else {
|
||||
channelList = tempList;
|
||||
//console.log("List Updated");
|
||||
treeChanged = true;
|
||||
}
|
||||
},
|
||||
error: function(JSON, status, xhr) {
|
||||
updateLog("Server is Disconnected..", xhr.statusText);
|
||||
disconnected = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function channelSelected(channelName, driverType) {
|
||||
//This function takes a server ip and returns the jSON response
|
||||
//Upon the sucessful callback, we update the global variables to make them universally accessible
|
||||
//Shows up the Channel Panel under Asset Creation
|
||||
$(cselected).toggleClass("expanded");
|
||||
$("#displayChannelPanel").addClass("active");
|
||||
$("#displayDevicePanel").removeClass("active");
|
||||
$("#displayTagPanel").removeClass("active");
|
||||
$("#channelPanel").show();
|
||||
$("#devicePanel").hide();
|
||||
$("#tagPanel").hide();
|
||||
|
||||
$("#channel").val(channelName);
|
||||
$("#channelType").val(driverType);
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
//Updates the json Text Input and the Json Tree View
|
||||
editor.set(data);
|
||||
updateText(JSON.stringify(data));
|
||||
console.log(data);
|
||||
|
||||
document.getElementById("deviceId").value = data[0]["servermain.DEVICE_ID_STRING"];
|
||||
document.getElementById("device").value = data[0]["common.ALLTYPES_NAME"];
|
||||
},
|
||||
error: function() {}
|
||||
});
|
||||
}
|
||||
|
||||
function deviceSelected(deviceName, channelName) {
|
||||
$("#displayChannelPanel").removeClass("active");
|
||||
$("#displayDevicePanel").addClass("active");
|
||||
$("#displayTagPanel").removeClass("active");
|
||||
$("#channelPanel").hide();
|
||||
$("#devicePanel").show();
|
||||
$("#tagPanel").hide();
|
||||
|
||||
$("#deviceName").val(deviceName);
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices/' + deviceName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
//Updates the json Text Input and the Json Tree View
|
||||
updateText(JSON.stringify(data));
|
||||
editor.set(data);
|
||||
$("#deviceId").val(data["servermain.DEVICE_ID_STRING"]);
|
||||
$("#channelType").val(data["servermain.MULTIPLE_TYPES_DEVICE_DRIVER"]);
|
||||
inputDevIDOld = data["servermain.DEVICE_ID_STRING"];
|
||||
console.log(inputDevIDOld);
|
||||
},
|
||||
error: function() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//OPERATIONS THAT GET INPUTS
|
||||
function loadMdbsFile() {
|
||||
//var url = string(document.getElementById("importMdbsJSON").value); //future improvement?
|
||||
$("#displayText").addClass("active");
|
||||
$("#displayTree").removeClass("active");
|
||||
$("#displayTagList").removeClass("active");
|
||||
$("#textJsonEditor").show();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").hide();
|
||||
var url = "Modbus.txt";
|
||||
var result = "";
|
||||
var stringJson = "";
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: url,
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
result = data;
|
||||
//Update text field wiht JSON from file
|
||||
updateText(result);
|
||||
//Parse JSON into the fields for object creation/update
|
||||
inputJSON = document.getElementById('textJsonInput');
|
||||
parsedJSON = JSON.parse(inputJSON.value);
|
||||
//alert(parsedJSON['common.ALLTYPES_NAME']); //debug alert
|
||||
inputChannel = parsedJSON['common.ALLTYPES_NAME'];
|
||||
inputChannelType = parsedJSON['servermain.MULTIPLE_TYPES_DEVICE_DRIVER'];
|
||||
inputDevice = parsedJSON['common.ALLTYPES_DEVNAME'];
|
||||
inputDevID = parsedJSON['servermain.DEVICE_ID_STRING'];
|
||||
inputTag = parsedJSON['common.ALLTYPES_TAGNAME'];
|
||||
inputTagAddr = parsedJSON['servermain.TAG_ADDRESS'];
|
||||
inputTagType = parsedJSON['servermain.TAG_DATA_TYPE'];
|
||||
document.getElementById("channel").value = inputChannel;
|
||||
document.getElementById("channelType").value = inputChannelType;
|
||||
document.getElementById("device").value = inputDevice;
|
||||
document.getElementById("deviceId").value = inputDevID;
|
||||
document.getElementById("tag").value = inputTag;
|
||||
document.getElementById("tagAddr").value = inputTagAddr;
|
||||
document.getElementById("tagType").value = inputTagType;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function loadABFile() {
|
||||
//var url = string(document.getElementById("importMdbsJSON").value); //future improvement?
|
||||
$("#displayText").addClass("active");
|
||||
$("#displayTree").removeClass("active");
|
||||
$("#displayTagList").removeClass("active");
|
||||
$("#textJsonEditor").show();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").hide();
|
||||
var url = "AB.txt";
|
||||
var result = "";
|
||||
var stringJson = "";
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: url,
|
||||
dataType: 'text',
|
||||
success: function(data) {
|
||||
result = data;
|
||||
//Update text field wiht JSON from file
|
||||
updateText(result);
|
||||
//Parse JSON into the fields for object creation/update
|
||||
inputJSON = document.getElementById('textJsonInput');
|
||||
parsedJSON = JSON.parse(inputJSON.value);
|
||||
//alert(parsedJSON['common.ALLTYPES_NAME']); //debug alert
|
||||
|
||||
inputChannel = parsedJSON['common.ALLTYPES_NAME'];
|
||||
inputChannelType = parsedJSON['servermain.MULTIPLE_TYPES_DEVICE_DRIVER'];
|
||||
inputDevice = parsedJSON['common.ALLTYPES_DEVNAME'];
|
||||
inputDevID = parsedJSON['servermain.DEVICE_ID_STRING'];
|
||||
inputTag = parsedJSON['common.ALLTYPES_TAGNAME'];
|
||||
inputTagAddr = parsedJSON['servermain.TAG_ADDRESS'];
|
||||
inputTagType = parsedJSON['servermain.TAG_DATA_TYPE'];
|
||||
|
||||
document.getElementById("channel").value = inputChannel;
|
||||
document.getElementById("channelType").value = inputChannelType;
|
||||
document.getElementById("device").value = inputDevice;
|
||||
document.getElementById("deviceId").value = inputDevID;
|
||||
document.getElementById("tag").value = inputTag;
|
||||
document.getElementById("tagAddr").value = inputTagAddr;
|
||||
document.getElementById("tagType").value = inputTagType;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function getDevicesList(channelName) {
|
||||
//This function takes in a Channel Name and addes the list of devices into the global object Channel List
|
||||
//e.g. getDevicesList(Modbus TCP/IP);
|
||||
$.ajax({
|
||||
//An ajax call to the end point for the "Modbus TCP/IP"
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
var tempList = [];
|
||||
var tempDeviceModelList = [];
|
||||
//Loops through the returned JSON and writes into an array of devices
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
tempList[i] = data[i]["common.ALLTYPES_NAME"];
|
||||
tempDeviceModelList[i] = data[i]["servermain.DEVICE_MODEL"];
|
||||
}
|
||||
// The temp list is created. E.g.{16 Bit Device,8 Bit Device}
|
||||
for (var j = 0; j < channelCount; j++) {
|
||||
//We now look for the obj that belongs to the channel name in channelList
|
||||
if (channelList[j].text == channelName) {
|
||||
//console.log(channelList[j].text + " Found");
|
||||
//Trying to recreate the same format and do the comparison
|
||||
var tempArray = [];
|
||||
var tempObj = {};
|
||||
|
||||
tempObj.text = channelName;
|
||||
tempObj.children = tempList;
|
||||
tempObj.deviceModel = tempDeviceModelList;
|
||||
|
||||
tempArray[1] = tempObj;
|
||||
|
||||
var string1 = JSON.stringify(channelList[j].children);
|
||||
var string2 = JSON.stringify(tempArray[1].children);
|
||||
|
||||
//Finally we can compare
|
||||
|
||||
if (string1 == string2) {
|
||||
//Device unchanged. No need to do anything
|
||||
//console.log("Device List for " + channelName + " is same");
|
||||
} else {
|
||||
//Device List is different. Add in the new list
|
||||
//console.log("Device List for " + channelName + " is different");
|
||||
channelList[j].children = tempList;
|
||||
channelList[j].deviceModel = tempDeviceModelList;
|
||||
//console.log("Added Children List for " + channelName);
|
||||
treeChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
error: function() {
|
||||
updateLog("Error getting device for " + channelName + "in getDeviceList");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function getChannelProperties(channelName) {
|
||||
// retrieves the Channel Properies based on input
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/drivers/channels/' + channelName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data, status, xhr) {
|
||||
//console.log(xhr.responseText);
|
||||
},
|
||||
error: function(data, status, xhr) {
|
||||
//console.log(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getTags(deviceName, channelName) {
|
||||
$("#displayTagList").addClass("active");
|
||||
$("#displayText").removeClass("active");
|
||||
$("#displayTree").removeClass("active");
|
||||
$("#textJsonEditor").hide();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").show();
|
||||
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices/' + deviceName + '/tags',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
var readresultsview = "<tr align=" + 'left' + "><th>Tag Name</th><th>Address</th></tr>";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
readresultsview += "<td>" + data[i]["common.ALLTYPES_NAME"] + "</td><td>" + data[i]["servermain.TAG_ADDRESS"] + "</td></tr>";
|
||||
}
|
||||
document.getElementById("tagReadResults").innerHTML = readresultsview;
|
||||
},
|
||||
error: function() {}
|
||||
});
|
||||
}
|
||||
|
||||
function updateTags(deviceName, channelName) {
|
||||
console.log("Refreshing Tag List");
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices/' + deviceName + '/tags',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
var readresultsview = "<tr align=" + 'left' + "><th>Tag Name</th><th>Address</th></tr>";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
readresultsview += "<td>" + data[i]["common.ALLTYPES_NAME"] + "</td><td>" + data[i]["servermain.TAG_ADDRESS"] + "</td></tr>";
|
||||
}
|
||||
document.getElementById("tagReadResults").innerHTML = readresultsview;
|
||||
},
|
||||
error: function() {}
|
||||
});
|
||||
}
|
||||
|
||||
//Unfortunately, we do not provide a list of drivers via the API yet. We therefore hardcoded the enumerated data. Please refer to the documentation for more information
|
||||
function retreiveDeviceModel(driver, model) {
|
||||
if (driver == "Modbus TCP/IP Ethernet") {
|
||||
switch (model) {
|
||||
case 0:
|
||||
return "Modbus";
|
||||
case 1:
|
||||
return "Mailbox";
|
||||
case 2:
|
||||
return "Instromet";
|
||||
case 3:
|
||||
return "Roxar RFM";
|
||||
case 4:
|
||||
return "Fluenta FGM";
|
||||
case 5:
|
||||
return "Applicom";
|
||||
case 6:
|
||||
return "CEG";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
if (driver == "Simulator") {
|
||||
switch (model) {
|
||||
case 0:
|
||||
return "16 Bit Device";
|
||||
case 1:
|
||||
return "8 Bit Device ";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
63
test/kepware/JS/globalVariables.js
Normal file
@@ -0,0 +1,63 @@
|
||||
//For storing user inputs
|
||||
var inputServer; //Server IP
|
||||
var inputChannel; //Channel to create
|
||||
var inputChannelOld; //Channel to modify
|
||||
var inputChannelType; //Channel Type or driver type
|
||||
var inputDevice; //Device name
|
||||
var inputDeviceOld; //Device to modify
|
||||
var inputDriver; //Device Driver
|
||||
var inputDevID; //Device ID (IP address)
|
||||
var inputDevIDOld; //Device ID to modfiy
|
||||
var inputTag; //Tag name
|
||||
var inputTagAddr; //Tag address
|
||||
var inputTagType; //Tag data type
|
||||
var inputTagOld; //Tag name to modfiy
|
||||
var inputTagAddrOld; //Tag address to modfiy
|
||||
var inputTagTypeOld; //Tag data type to modfiy
|
||||
var userName;
|
||||
var userPass;
|
||||
var encodeAuth;
|
||||
|
||||
//Server Information
|
||||
var connectState = false;
|
||||
var debugState = false;
|
||||
var channelCount = 0;
|
||||
var deviceCount = 0;
|
||||
var tagCount = 0;
|
||||
var sampleRate = 1000;
|
||||
var supportedDrivers;
|
||||
var disconnected = false;
|
||||
|
||||
//Objects for storing Project Information
|
||||
var projObj;
|
||||
var channelList = [];
|
||||
var tagList = [];
|
||||
var currentSelected = [];
|
||||
var eventArray = [];
|
||||
var eventArrayChanged = false;
|
||||
var lastKnownTime;
|
||||
|
||||
//channelList contains a list of json Obj
|
||||
//{ text: (Channel name)
|
||||
//children: (Device array List)
|
||||
//deviceModel: (Enumerations of the device driver)
|
||||
//driver: (The driver the device is using)
|
||||
//}
|
||||
|
||||
var deviceList = {};
|
||||
var treeChanged = false;
|
||||
var func1 = 0;
|
||||
var func2 = 0;
|
||||
var func3 = 0;
|
||||
|
||||
//DeviceList variables
|
||||
var dselected;
|
||||
var cselected;
|
||||
var tselected;
|
||||
var taddrselected;
|
||||
|
||||
//jsConfig Objects
|
||||
var container = document.getElementById('jsoneditor');
|
||||
var options = {};
|
||||
var editor = new JSONEditor(container, options);
|
||||
|
||||
4
test/kepware/JS/jquery.min.js
vendored
Normal file
307
test/kepware/JS/main.js
Normal file
@@ -0,0 +1,307 @@
|
||||
//DISCLAIMER HERE//
|
||||
|
||||
//Main Execution
|
||||
$(document).ready(function() {
|
||||
console.log("initial state is " + connectState);
|
||||
defaultViewState();
|
||||
|
||||
updateLog("v6 Webclient is loaded.");
|
||||
|
||||
//Non Stop Events
|
||||
setInterval("Loop();", sampleRate);
|
||||
|
||||
//Listeners
|
||||
$("#updateConfig").click(function() {
|
||||
getUserInputs();
|
||||
updateLog("Connecting as " + userName + "...");
|
||||
readProj();
|
||||
$("#deleteChannel").show();
|
||||
$("#deleteDevice").show();
|
||||
});
|
||||
|
||||
//Main Nav
|
||||
$("#v6Configurator").click(function() {
|
||||
$("#v6Configurator").addClass("active");
|
||||
$("#useCase1").removeClass("active");
|
||||
$("#iotGateway").removeClass("active");
|
||||
|
||||
$("#configurator").show();
|
||||
$("#deviceList").show();
|
||||
$("#jsonObject").show();
|
||||
$("#useCase1Panel").hide();
|
||||
$("#iotGatewayPanel").hide();
|
||||
});
|
||||
|
||||
$("#useCase1").click(function() {
|
||||
$("#v6Configurator").removeClass("active");
|
||||
$("#useCase1").addClass("active");
|
||||
$("#iotGateway").removeClass("active");
|
||||
|
||||
$("#configurator").hide();
|
||||
$("#deviceList").show();
|
||||
$("#jsonObject").show();
|
||||
$("#useCase1Panel").show();
|
||||
$("#iotGatewayPanel").hide();
|
||||
});
|
||||
|
||||
$("#iotGateway").click(function() {
|
||||
$("#v6Configurator").removeClass("active");
|
||||
$("#useCase1").removeClass("active");
|
||||
$("#iotGateway").addClass("active");
|
||||
|
||||
$("#configurator").hide();
|
||||
$("#deviceList").show();
|
||||
$("#jsonObject").show();
|
||||
$("#useCase1Panel").hide();
|
||||
$("#iotGatewayPanel").show();
|
||||
});
|
||||
|
||||
//ZE BUTTONS
|
||||
$("#createCh").click(function() {
|
||||
if (connectState) {
|
||||
getUserInputs();
|
||||
updateLog("Creating a " + inputChannelType + " named " + inputChannel);
|
||||
createChannel(inputServer, inputChannelType, inputChannel);
|
||||
} else {
|
||||
updateLog("Please connect the server first");
|
||||
}
|
||||
});
|
||||
|
||||
$("#createDevice").click(function() {
|
||||
if (connectState) {
|
||||
getUserInputs();
|
||||
updateLog("Creating " + inputDevice + " with ID " + inputDevID + "for driver" + inputDriver);
|
||||
createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver);
|
||||
} else {
|
||||
updateLog("Please connect the server first");
|
||||
}
|
||||
});
|
||||
|
||||
$("#createTag").click(function() {
|
||||
if (connectState) {
|
||||
getUserInputs();
|
||||
updateLog("Creating " + inputTag + " with address " + inputTagAddr);
|
||||
createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr);
|
||||
getTags(inputDevice, inputChannel);
|
||||
} else {
|
||||
updateLog("Please connect the server first");
|
||||
}
|
||||
});
|
||||
|
||||
$("#readProjObj").click(function() {
|
||||
updateLog("Reading ProjObj...");
|
||||
if (projObj === null) {
|
||||
updateLog("ProjObj is not Loaded. Please connect to Server first");
|
||||
// your code here.
|
||||
} else {
|
||||
editor.set(projObj);
|
||||
var stringJson = JSON.stringify(projObj, null, 2);
|
||||
//Stringify it and update into the text area
|
||||
updateText(stringJson);
|
||||
updateLog("Please view in in the editor panel");
|
||||
}
|
||||
});
|
||||
|
||||
$("#getJSON").click(function() {
|
||||
updateLog("Getting the Obj");
|
||||
var textInput = document.getElementById("textJsonInput").value;
|
||||
var jsonInput = JSON.parse(textInput);
|
||||
console.log(jsonInput);
|
||||
setJson(jsonInput);
|
||||
});
|
||||
|
||||
//Nav Menus
|
||||
$("#displayText").click(function() {
|
||||
//Text for the Json Object Viewer
|
||||
$("#displayText").addClass("active");
|
||||
$("#displayTree").removeClass("active");
|
||||
$("#displayTagList").removeClass("active");
|
||||
$("#textJsonEditor").show();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").hide();
|
||||
});
|
||||
|
||||
$("#displayTree").click(function() {
|
||||
//jsTree for the Json object view
|
||||
$("#displayTree").addClass("active");
|
||||
$("#displayText").removeClass("active");
|
||||
$("#displayTagList").removeClass("active");
|
||||
$("#textJsonEditor").hide();
|
||||
$("#jsonEditorContainer").show();
|
||||
$("#tagListContainer").hide();
|
||||
});
|
||||
|
||||
$("#displayTagList").click(function() {
|
||||
$("#displayTagList").addClass("active");
|
||||
$("#displayText").removeClass("active");
|
||||
$("#displayTree").removeClass("active");
|
||||
$("#textJsonEditor").hide();
|
||||
$("#jsonEditorContainer").hide();
|
||||
$("#tagListContainer").show();
|
||||
|
||||
});
|
||||
|
||||
$("#displayChannelPanel").click(function() {
|
||||
$("#displayChannelPanel").addClass("active");
|
||||
$("#displayDevicePanel").removeClass("active");
|
||||
$("#displayTagPanel").removeClass("active");
|
||||
$("#channelPanel").show();
|
||||
$("#devicePanel").hide();
|
||||
$("#tagPanel").hide();
|
||||
});
|
||||
|
||||
$("#displayDevicePanel").click(function() {
|
||||
$("#displayChannelPanel").removeClass("active");
|
||||
$("#displayDevicePanel").addClass("active");
|
||||
$("#displayTagPanel").removeClass("active");
|
||||
$("#channelPanel").hide();
|
||||
$("#devicePanel").show();
|
||||
$("#tagPanel").hide();
|
||||
});
|
||||
|
||||
$("#displayTagPanel").click(function() {
|
||||
$("#displayChannelPanel").removeClass("active");
|
||||
$("#displayDevicePanel").removeClass("active");
|
||||
$("#displayTagPanel").addClass("active");
|
||||
$("#channelPanel").hide();
|
||||
$("#devicePanel").hide();
|
||||
$("#tagPanel").show();
|
||||
});
|
||||
|
||||
$("#drawTree").click(function() {
|
||||
console.log(channelList);
|
||||
drawTree(channelList);
|
||||
});
|
||||
|
||||
$("#createDeviceTree").click(function() {
|
||||
addChild();
|
||||
});
|
||||
|
||||
$("#deleteChannel").click(function() {
|
||||
delChannel(cselected);
|
||||
});
|
||||
|
||||
$("#deleteDevice").click(function() {
|
||||
delDevice(dselected, cselected);
|
||||
});
|
||||
|
||||
$('#deleteTag').click(function() {
|
||||
delTag(dselected, cselected, tselected);
|
||||
updateTags(dselected, cselected);
|
||||
});
|
||||
|
||||
$("#importMdbsJSON").click(function() {
|
||||
updateLog("Loading file...");
|
||||
$('input[type=file]').trigger('click');
|
||||
loadMdbsFile();
|
||||
updateLog("File loaded successfully, click the Create button.");
|
||||
});
|
||||
|
||||
$("#importABJSON").click(function() {
|
||||
updateLog("Loading file...");
|
||||
$('input[type=file]').trigger('click');
|
||||
loadABFile();
|
||||
updateLog("File loaded successfully, click the Create button.");
|
||||
});
|
||||
|
||||
$("#modCh").click(function() {
|
||||
updateLog("Attempting to modify object for " + cselected);
|
||||
modChannel(cselected);
|
||||
});
|
||||
|
||||
$("#modDev").click(function() {
|
||||
updateLog("Attempting to modify object for " + dselected);
|
||||
modDevice(dselected);
|
||||
});
|
||||
|
||||
$("#modTag").click(function() {
|
||||
updateLog("Attempting to modify object for " + tselected);
|
||||
modTag(tselected, taddrselected);
|
||||
});
|
||||
|
||||
$("#createAll").click(function() {
|
||||
updateLog("Attempting to create all objects in template");
|
||||
if (connectState) {
|
||||
getUserInputs();
|
||||
//createChannel(inputServer, inputChannelType, inputChannel);
|
||||
//getUserInputs();
|
||||
func1 = createChannel(inputServer, inputChannelType, inputChannel);
|
||||
func2 = createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver);
|
||||
func3 = createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr);
|
||||
$when(func1).done($when(func2).done(func3));
|
||||
getTags(inputDevice, inputChannel);
|
||||
} else {
|
||||
updateLog("Please connect the server first");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#tagReadResults').on('click', 'tr', function() {
|
||||
$("#displayChannelPanel").removeClass("active");
|
||||
$("#displayDevicePanel").removeClass("active");
|
||||
$("#displayTagPanel").addClass("active");
|
||||
$("#channelPanel").hide();
|
||||
$("#devicePanel").hide();
|
||||
$("#tagPanel").show();
|
||||
|
||||
var td = this.cells[0]; // the first <td>
|
||||
var td2 = this.cells[1];
|
||||
var td3 = this.cells[2];
|
||||
tselected = $(td).text();
|
||||
taddrselected = $(td2).text();
|
||||
//ttypeselected = $(td3).text();
|
||||
//updateLog(taddrselected + ttypeselected);
|
||||
|
||||
$("#tag").val(tselected);
|
||||
$("#tagAddr").val(taddrselected);
|
||||
|
||||
if (tselected != "Tag Name") {
|
||||
updateLog("Tag " + tselected + " is selected from " + dselected + " under " + cselected);
|
||||
var selected = $(this).hasClass("highlight");
|
||||
$("#tagReadResults tr").removeClass("highlight");
|
||||
if (!selected)
|
||||
$(this).addClass("highlight");
|
||||
}
|
||||
getUserInputs();
|
||||
inputTagTypeOld = inputTagType; //Tag data type to modfiy
|
||||
});
|
||||
|
||||
//IoT Gateway
|
||||
$("#createRESTServer").click(function() {
|
||||
var restnameInput = document.getElementById("restServerName");
|
||||
var restport = document.getElementById("restServerPort");
|
||||
console.log(restnameInput.value, restport.value);
|
||||
createRestServer(restnameInput.value, restport.value);
|
||||
});
|
||||
|
||||
$("#addtoIoTGateway").click(function() {
|
||||
var tagAddrString = cselected + '.' + dselected + '.' + tselected;
|
||||
var restnameInput = document.getElementById("restServerName");
|
||||
console.log("Adding " + tagAddrString + ' to ' + restnameInput.value);
|
||||
addRestTag(restnameInput.value, tagAddrString);
|
||||
});
|
||||
|
||||
$("#readTag").click(function() {
|
||||
var tagAddrString = cselected + '.' + dselected + '.' + tselected;
|
||||
var readNonStop = document.getElementById("readNonStop").checked;
|
||||
var restport = document.getElementById("restServerPort");
|
||||
var readInterval = setInterval(readLoop, 1000);
|
||||
|
||||
function readLoop() {
|
||||
console.log(readNonStop);
|
||||
readNonStop = document.getElementById("readNonStop").checked;
|
||||
if (readNonStop) {
|
||||
readTag(tagAddrString, restport.value);
|
||||
} else {
|
||||
readTag(tagAddrString, restport.value);
|
||||
clearInterval(readInterval);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#deleteRESTServer").click(function() {
|
||||
var restnameInput = document.getElementById("restServerName");
|
||||
deleteRestServer(restnameInput.value);
|
||||
});
|
||||
|
||||
}); /* End of Ready*/
|
||||
115
test/kepware/JS/useCase1.js
Normal file
@@ -0,0 +1,115 @@
|
||||
$("#delAll").click(function(){
|
||||
deleteAllbutton();
|
||||
});
|
||||
|
||||
function deleteAllbutton(){
|
||||
var x;
|
||||
|
||||
if (confirm("Are you sure you want to delete all?") === true) {
|
||||
delAllChannels();
|
||||
} else {
|
||||
alert("Aborted");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$("#demoProj").click(function(){
|
||||
//Creates the Channels, Devices, Tags
|
||||
deleteAllbutton();
|
||||
|
||||
//createChannel(inputServer, inputChannelType, inputChannel)
|
||||
for(var i=1; i<3; i++){
|
||||
var chName = "Channel"+i;
|
||||
createChannel(inputServer, "Simulator", chName);
|
||||
}
|
||||
createChannel(inputServer, "Modbus TCP/IP Ethernet", "Modbus");
|
||||
|
||||
//createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver)
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.1", "Slave 1", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.2", "Slave 2", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "Channel1", "1", "Device 1", "Simulator");
|
||||
createDevice(inputServer, "Channel2", "2", "Device 2", "Simulator");
|
||||
|
||||
//createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr)
|
||||
createTag(inputServer, "Modbus", "Slave 1", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 1", "Temp", "400002");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "Temp", "400002");
|
||||
|
||||
createTag(inputServer, "Channel1", "Device 1", "K", "USER(1000,K)");
|
||||
createTag(inputServer, "Channel1", "Device 1", "S", "USER(1000,S)");
|
||||
createTag(inputServer, "Channel1", "Device 1", "E", "USER(1000,E)");
|
||||
createTag(inputServer, "Channel1", "Device 1", "6", "USER(1000,6)");
|
||||
|
||||
createTag(inputServer, "Channel2", "Device 2", "RAMP", "RAMP (120, 35, 100, 4)");
|
||||
createTag(inputServer, "Channel2", "Device 2", "RANDOM", "RANDOM (30, -20, 75)");
|
||||
createTag(inputServer, "Channel2", "Device 2", "SINE", "SINE (10, -40.000000, 40.000000, 0.050000, 0)");
|
||||
});
|
||||
|
||||
$("#templateA").click(function(){
|
||||
//BMS Suite
|
||||
deleteAllbutton();
|
||||
|
||||
//createChannel(inputServer, inputChannelType, inputChannel)
|
||||
createChannel(inputServer, "Simulator", "SNMP");
|
||||
createChannel(inputServer, "Simulator", "Bacnet");
|
||||
createChannel(inputServer, "Modbus TCP/IP Ethernet", "Modbus");
|
||||
|
||||
//createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver)
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.1", "Slave 1", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.2", "Slave 2", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "SNMP", "1", "UPS", "Simulator");
|
||||
createDevice(inputServer, "BACNET", "2", "AHU-1-1", "Simulator");
|
||||
|
||||
//createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr)
|
||||
createTag(inputServer, "Modbus", "Slave 1", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 1", "Temp", "400002");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "Temp", "400002");
|
||||
|
||||
createTag(inputServer, "SNMP", "UPS", "V1", "RANDOM (30, -200, 200)");
|
||||
createTag(inputServer, "SNMP", "UPS", "V2", "RANDOM (40, -200, 240)");
|
||||
createTag(inputServer, "SNMP", "UPS", "V3", "RANDOM (50, -200, 200)");
|
||||
|
||||
createTag(inputServer, "Bacnet", "AHU-1-1", "AI", "SINE (10, -40.000000, 40.000000, 0.050000, 0)");
|
||||
createTag(inputServer, "Bacnet", "AHU-1-1", "AO", "SINE (10, -40.000000, 40.000000, 0.050000, 0)");
|
||||
createTag(inputServer, "Bacnet", "AHU-1-1", "TEMP1", "SINE (10, -40.000000, 40.000000, 0.050000, 0)");
|
||||
});
|
||||
|
||||
$("#templateB").click(function(){
|
||||
//Manufacturing Suite
|
||||
deleteAllbutton();
|
||||
|
||||
//createChannel(inputServer, inputChannelType, inputChannel)
|
||||
createChannel(inputServer, "Simulator", "Allen Bradley");
|
||||
createChannel(inputServer, "Simulator", "Siemens");
|
||||
createChannel(inputServer, "Simulator", "Omron");
|
||||
createChannel(inputServer, "Simulator", "Mitsubishi");
|
||||
createChannel(inputServer, "Modbus TCP/IP Ethernet", "Modbus");
|
||||
|
||||
//createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver)
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.1", "Slave 1", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "Modbus", "127.0.0.1.2", "Slave 2", "Modbus TCP/IP Ethernet");
|
||||
createDevice(inputServer, "Allen Bradley", "1", "ControlLogix 5580", "Simulator");
|
||||
createDevice(inputServer, "Siemens", "2", "S7-1500", "Simulator");
|
||||
createDevice(inputServer, "Omron", "2", "NJ Series", "Simulator");
|
||||
createDevice(inputServer, "Mitsubishi", "2", "Q Series", "Simulator");
|
||||
|
||||
//createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr)
|
||||
createTag(inputServer, "Modbus", "Slave 1", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 1", "Temp", "400002");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "RH", "400001");
|
||||
createTag(inputServer, "Modbus", "Slave 2", "Temp", "400002");
|
||||
|
||||
createTag(inputServer, "Allen Bradley", "ControlLogix 5580", "T4:0", "RANDOM (30, -200, 200)");
|
||||
createTag(inputServer, "Allen Bradley", "ControlLogix 5580", "CS1:1", "RANDOM (30, -200, 200)");
|
||||
createTag(inputServer, "Allen Bradley", "ControlLogix 5580", "CS1:2", "RANDOM (30, -200, 200)");
|
||||
|
||||
createTag(inputServer, "Siemens", "S7-1500", "B0", "RANDOM (40, -200, 240)");
|
||||
createTag(inputServer, "Siemens", "S7-1500", "B1", "RANDOM (40, -200, 240)");
|
||||
|
||||
createTag(inputServer, "Omron", "NJ Series", "MyArray[1,0]", "RANDOM (50, -200, 200)");
|
||||
|
||||
});
|
||||
|
||||
|
||||
401
test/kepware/JS/v6CommonAPI.js
Normal file
@@ -0,0 +1,401 @@
|
||||
//DISCLAIMER HERE//
|
||||
|
||||
//This sample demonstrates the calls for each of the end point for Create, Delete, Modify Operations
|
||||
//Note that this code is not recommended for production due to the security reasons. For production, please use HTTPS with the relevant CA certs as well as CORS setup accordingly. Do consider the use of our OPC UA Tunnel together with a DMZ PC for systems that are exposed to the internet. Consult your IT team for more information.
|
||||
|
||||
//CREATE OPERATIONS - v6
|
||||
|
||||
//The create channel function takes in the inputServer (IP address), Channel Type and Channel Name to create the channel
|
||||
function createChannel(inputServer, inputChannelType, inputChannel) {
|
||||
for (var i = 0; i < channelList.length; i++) {
|
||||
if (inputChannel == channelList[i]) {
|
||||
updateLog("Channel of the same name already exist.");
|
||||
}
|
||||
}
|
||||
updateLog("Creating a " + inputChannelType + " named " + inputChannel);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/',
|
||||
data: '{"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "' + inputChannelType + '","common.ALLTYPES_NAME":"' + inputChannel + '"}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function() {
|
||||
updateLog("Channel " + inputChannel + " created.", status);
|
||||
funcdone = 1;
|
||||
},
|
||||
error: function() {
|
||||
updateLog("Channel " + inputChannel + " failed.", status);
|
||||
funcdone = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//The create Device function allows you to take in the inputServer (IP address), inputChannel (Channel Name), input DevID (Device ID), inputDevice (Device Name), inputDriver (Driver Type) to create a tag
|
||||
function createDevice(inputServer, inputChannel, inputDevID, inputDevice, inputDriver) {
|
||||
updateLog("Creating " + inputDevice + " with ID " + inputDevID + " for driver " + inputDriver);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + '/devices',
|
||||
data: '{"common.ALLTYPES_NAME":"' + inputDevice + '","servermain.DEVICE_MODEL":0,"servermain.DEVICE_ID_STRING": "' + inputDevID + '","servermain.DEVICE_CHANNEL_ASSIGNMENT":"' + inputChannel + '","servermain.MULTIPLE_TYPES_DEVICE_DRIVER":"' + inputDriver + '"}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, status) {
|
||||
updateLog(inputDevice + " created under " + inputChannel, status);
|
||||
funcdone = 2;
|
||||
},
|
||||
error: function(JSON, status) {
|
||||
updateLog("Creation of " + inputDevice + " failed.", status);
|
||||
funcdone = 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//The create Tag function allows you to take in the inputServer (IP address), inputChannel (Channel Name), input Device (Device Name), inputTag (Tag Name), inputTagAddr (Tag Adress) to create a device
|
||||
function createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr) {
|
||||
console.log(inputDevice);
|
||||
console.log(inputTag + inputTagAddr);
|
||||
updateLog("Creating " + inputTag + " with address " + inputTagAddr);
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + '/devices/' + inputDevice + '/tags',
|
||||
data: '{"common.ALLTYPES_NAME":"' + inputTag + '","servermain.TAG_ADDRESS":"' + inputTagAddr + '","servermain.TAG_DATA_TYPE":' + inputTagType + '}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, status, xhr) {
|
||||
updateLog(inputTag + " created under " + inputDevice, status);
|
||||
updateTags(dselected, cselected);
|
||||
//console.log(d);
|
||||
},
|
||||
error: function(JSON, status, xhr) {
|
||||
updateLog("Creation of " + inputTag + " failed.", status);
|
||||
//console.log(d);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//DELETE OPERATIONS - v6
|
||||
|
||||
//Deletes all channel. We update he log and loop through the global variable to delete all the channels one by one
|
||||
function delAllChannels() {
|
||||
var oldList = [];
|
||||
|
||||
oldList = channelList;
|
||||
console.log(oldList);
|
||||
|
||||
updateLog("Deleting everything...");
|
||||
|
||||
for (var i = 0; i < oldList.length; i++) {
|
||||
$.ajax({
|
||||
type: 'DELETE',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + oldList[i].text,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data, status) {},
|
||||
error: function(data, status) {}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//Deletes a single channel
|
||||
//Takes in the channel name and deletes it
|
||||
function delChannel(channelName) {
|
||||
updateLog("Deleting " + channelName);
|
||||
$.ajax({
|
||||
type: 'DELETE',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data, status) {
|
||||
updateLog("Delete Channel Success", status);
|
||||
},
|
||||
error: function(data, status) {
|
||||
updateLog("Delete Channel Fail", status);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Delete an device. We take in the device Name and channel Name to delete it
|
||||
function delDevice(deviceName, channelName) {
|
||||
updateLog("Deleting " + device + "under Channel Name" + channelName);
|
||||
$.ajax({
|
||||
type: 'DELETE',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices/' + deviceName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data, status) {
|
||||
updateLog("Delete Device Success", status);
|
||||
},
|
||||
error: function(data, status) {
|
||||
updateLog("Delete Device Fail", status);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Deletes a tag. We take in the device Name, Channel Name, Tag Name to delete.
|
||||
function delTag(deviceName, channelName, tagName) {
|
||||
updateLog("Deleting Tag " + tagName + " from Device " + deviceName + " under " + channelName);
|
||||
$.ajax({
|
||||
type: 'DELETE',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + channelName + '/devices/' + deviceName + '/tags/' + tagName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data, status) {
|
||||
updateLog("Delete Tag Success", status);
|
||||
updateTags(dselected, cselected);
|
||||
},
|
||||
error: function(data, status) {
|
||||
updateLog("Delete Tag Fail", status);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//MODIFYING OPERATIONS - v6
|
||||
|
||||
//Detects changes made in the text field and updates the existing object defined in the Asset tab accordingly
|
||||
//Stores existing object data
|
||||
function modChannel(cselected) {
|
||||
inputChannelOld = cselected;
|
||||
inputChannel = document.getElementById("channel").value;
|
||||
|
||||
if (inputChannelOld != inputChannel) {
|
||||
updateLog('Updating Channel name to ' + inputChannel); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannelOld,
|
||||
data: '{"common.ALLTYPES_NAME":"' + inputChannel + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
treeChanged = true;
|
||||
console.log(d);
|
||||
updateLog("Channel name changed to " + inputChannel);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
updateLog("Channel name update failed, check your settings.");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
updateLog("Channel updates failed, remember to select the Channel you wish to modify from the tree panel on the left");
|
||||
}
|
||||
}
|
||||
|
||||
//Detects changes made in the text field and updates the existing object defined in the Asset tab accordingly
|
||||
//Stores existing object data
|
||||
function modDevice(dselected) {
|
||||
|
||||
inputDeviceOld = dselected;
|
||||
inputDevice = document.getElementById("device").value;
|
||||
inputDevID = document.getElementById("deviceId").value;
|
||||
inputChannel = document.getElementById("channel").value;
|
||||
|
||||
if (inputDeviceOld != inputDevice && inputDevIDOld != inputDevID) {
|
||||
updateLog('Error - please only update one property at a time.'); //debug alert
|
||||
} else {
|
||||
if (inputDeviceOld != inputDevice) {
|
||||
updateLog('Updating Device name to ' + inputDevice); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + "/devices/" + inputDeviceOld,
|
||||
data: '{"common.ALLTYPES_NAME":"' + inputDevice + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
treeChanged = true;
|
||||
console.log(d);
|
||||
updateLog("Device name changed to " + inputDevice);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
updateLog("Device updates failed, remember to select the Device you wish to modify from the tree panel on the left");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (inputDevIDOld != inputDevID) {
|
||||
updateLog('Updating Device ID to ' + inputDevID); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + "/devices/" + inputDeviceOld,
|
||||
data: '{"servermain.DEVICE_ID_STRING":"' + inputDevID + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
treeChanged = true;
|
||||
console.log(d);
|
||||
updateLog("Device ID changed to " + inputDevID);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
updateLog("Device updates failed, remember to select the Device you wish to modify from the tree panel on the left");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Detects changes made in the text field and updates the existing object defined in the Asset tab accordingly
|
||||
//Stores existing object data
|
||||
function modTag(tselected, taddrselected) {
|
||||
inputTagOld = tselected; //Tag name to modfiy
|
||||
inputTag = document.getElementById("tag").value; //Get new Tag
|
||||
inputTagAddrOld = taddrselected;
|
||||
inputTagAddr = document.getElementById("tagAddr").value; //Tag address to modfiy
|
||||
inputTagType = document.getElementById("tagType").value; //Tag data type to modfiy
|
||||
inputDevice = document.getElementById("device").value;
|
||||
inputChannel = document.getElementById("channel").value;
|
||||
|
||||
if (inputTagOld != inputTag) {
|
||||
updateLog('Updating Tag name to ' + inputTag); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + "/devices/" + inputDevice + "/tags/" + inputTagOld,
|
||||
data: '{"common.ALLTYPES_NAME":"' + inputTag + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
updateLog("Tag name changed to " + inputTag);
|
||||
updateTags(dselected, cselected);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
//updateLog("Tag updates failed, remember to select the Tag you wish to modify from the tag panel on the right");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (inputTagAddrOld != inputTagAddr) {
|
||||
updateLog('Updating Tag Address to ' + inputTagAddr); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + "/devices/" + inputDevice + "/tags/" + inputTagOld,
|
||||
data: '{"servermain.TAG_ADDRESS":"' + inputTagAddr + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
updateLog("Tag Address changed to " + inputTagAddr);
|
||||
updateTags(dselected, cselected);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
//updateLog("Tag updates failed, remember to select the Tag you wish to modify from the tag panel on the right");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (inputTagTypeOld != inputTagType) {
|
||||
updateLog('Updating Tag Data Type to ' + inputTagType); //debug alert
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + "/devices/" + inputDevice + "/tags/" + inputTagOld,
|
||||
data: '{"servermain.TAG_DATA_TYPE":"' + inputTagType + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(JSON, xhr, d) {
|
||||
treeChanged = true;
|
||||
console.log(d);
|
||||
updateLog("Tag Data Type changed to " + inputTagType);
|
||||
},
|
||||
error: function(JSON, xhr, d) {
|
||||
console.log(d);
|
||||
updateLog("Check your tag settings, ensure this data type exists");
|
||||
// updateLog("Tag updates failed, remember to select the Tag you wish to modify from the tag panel on the right");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
updateLog("Tag updates failed, remember to select the Tag you wish to modify from the tag panel on the right");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//MISC FUNCITONS BUT RELEVANT TO V6
|
||||
//Function updates and writes JSON object into Server to load the preconfigured JSON
|
||||
function setJson(jsonObj) {
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
url: inputServer + '/config/v1/project/channels/' + inputChannel,
|
||||
//Removed .value as we have a global varibale storing it
|
||||
data: '{"common.ALLTYPES_NAME":"' + jsonObj['common.ALLTYPES_NAME'] + '","Force_Update": true}',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(d) {
|
||||
console.log(d);
|
||||
},
|
||||
error: function() {
|
||||
console.log(d);
|
||||
}
|
||||
});
|
||||
}
|
||||
145
test/kepware/JS/v6_1CommonAPI.js
Normal file
@@ -0,0 +1,145 @@
|
||||
//In v6, we introduced the following key addition to the Common API.
|
||||
//- Addition of Tags to IoT Gateway
|
||||
// - Config API
|
||||
// The following codes are usable only for 6.1 and above
|
||||
|
||||
//Function for event Log.
|
||||
function readEventLog() {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://' + inputServer + '/config/v1/event_log?limit=1000',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data) {
|
||||
//We send HTTP request at 1s rate. In one min, there will be 100 security only event
|
||||
var tempArray = [];
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i].event != 'Security') {
|
||||
tempArray.push(data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (eventArray.toString() != tempArray.toString()) {
|
||||
eventArray = tempArray;
|
||||
console.log("EventArray Changed");
|
||||
eventArrayChanged = true;
|
||||
}
|
||||
},
|
||||
error: function(data) {
|
||||
updateLog("Error retrieving KSE log");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createRestServer(serverName, port) {
|
||||
port = parseInt(port);
|
||||
|
||||
var tempdata = {
|
||||
"common.ALLTYPES_NAME": serverName,
|
||||
"iot_gateway.AGENTTYPES_TYPE": "REST Server",
|
||||
"iot_gateway.REST_SERVER_ALLOW_ANONYMOUS_LOGIN": true,
|
||||
"iot_gateway.REST_SERVER_CORS_ALLOWED_ORIGINS": "*",
|
||||
"iot_gateway.REST_SERVER_ENABLE_WRITE_ENDPOINT": true,
|
||||
"iot_gateway.REST_SERVER_NETWORK_ADAPTER": "Localhost only",
|
||||
"iot_gateway.REST_SERVER_PORT_NUMBER": port,
|
||||
"iot_gateway.REST_SERVER_USE_HTTPS": false
|
||||
};
|
||||
tempdata = JSON.stringify(tempdata);
|
||||
console.log(tempdata);
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'http://' + inputServer + '/config/v1/project/_iot_gateway/rest_servers',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
data: tempdata,
|
||||
success: function() {
|
||||
updateLog(serverName + " has been created");
|
||||
},
|
||||
error: function(data, status, xhr) {
|
||||
console.log(data.responseJSON.message);
|
||||
updateLog(data.responseJSON.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function deleteRestServer(serverName) {
|
||||
$.ajax({
|
||||
type: 'DELETE',
|
||||
url: 'http://' + inputServer + '/config/v1/project/_iot_gateway/rest_servers/' + serverName,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function() {
|
||||
updateLog(serverName + "deleted");
|
||||
},
|
||||
error: function(e) {
|
||||
updateLog("Error adding item");
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addRestTag(serverName, tagaddr) {
|
||||
var tempdata = {
|
||||
"iot_gateway.IOT_ITEM_SERVER_TAG": tagaddr,
|
||||
};
|
||||
tempdata = JSON.stringify(tempdata);
|
||||
console.log(tempdata);
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'http://' + inputServer + '/config/v1/project/_iot_gateway/rest_servers/' + serverName + '/iot_items',
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
data: tempdata,
|
||||
success: function() {
|
||||
updateLog(tag + " added");
|
||||
},
|
||||
error: function(e) {
|
||||
updateLog("Error adding item");
|
||||
console.log(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function readTag(tagaddr, port) {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'http://127.0.0.1:' + port + '/iotgateway/read?ids=' + tagaddr,
|
||||
contentType: 'application/json',
|
||||
xhrFields: {
|
||||
withCredentials: false
|
||||
},
|
||||
headers: {
|
||||
'Authorization': 'Basic ' + encodeAuth
|
||||
},
|
||||
success: function(data) {
|
||||
console.log(data.readResults[0].v);
|
||||
$("#tagValue").html("<p>" + data.readResults[0].v + "</p>");
|
||||
},
|
||||
error: function(data) {
|
||||
updateLog(data.responseJSON.message);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
893
test/kepware/JSONEditor/dist/img/jsoneditor-icons.svg
vendored
Normal file
@@ -0,0 +1,893 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="216"
|
||||
height="144"
|
||||
id="svg4136"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r"
|
||||
sodipodi:docname="jsoneditor-icons.svg">
|
||||
<title
|
||||
id="title6512">JSON Editor Icons</title>
|
||||
<metadata
|
||||
id="metadata4148">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>JSON Editor Icons</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs4146" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
id="namedview4144"
|
||||
showgrid="true"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="97.217248"
|
||||
inkscape:cy="59.950227"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4136"
|
||||
showguides="false"
|
||||
borderlayer="false"
|
||||
inkscape:showpageshadow="true"
|
||||
showborder="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4640"
|
||||
empspacing="24" />
|
||||
</sodipodi:namedview>
|
||||
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
|
||||
<g
|
||||
id="g4394">
|
||||
<rect
|
||||
x="4"
|
||||
y="4"
|
||||
width="16"
|
||||
height="16"
|
||||
id="svg_1"
|
||||
style="fill:#1aae1c;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ec3f29;fill-opacity:0.94117647;stroke:none;stroke-width:0"
|
||||
x="28.000006"
|
||||
y="3.999995"
|
||||
width="16"
|
||||
height="16"
|
||||
id="svg_1-7" />
|
||||
<rect
|
||||
id="rect4165"
|
||||
height="16"
|
||||
width="16"
|
||||
y="3.999995"
|
||||
x="52.000004"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="172.00002"
|
||||
y="3.9999852"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4175" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="196"
|
||||
y="3.999995"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4175-3" />
|
||||
<g
|
||||
style="stroke:none"
|
||||
id="g4299">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-1"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:none"
|
||||
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,19.029435,12.000001)"
|
||||
id="g4299-3">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-0"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-1-9"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="55.000004"
|
||||
y="7.0000048"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="svg_1-7-5" />
|
||||
<rect
|
||||
id="rect4354"
|
||||
height="6.9999905"
|
||||
width="6.9999909"
|
||||
y="10.00001"
|
||||
x="58"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#3c80df;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94117647"
|
||||
x="58.000004"
|
||||
y="10.000005"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="svg_1-7-5-7" />
|
||||
<g
|
||||
id="g4378">
|
||||
<rect
|
||||
id="svg_1-7-5-3"
|
||||
height="1.9999965"
|
||||
width="7.9999909"
|
||||
y="10.999999"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="7.0000005"
|
||||
width="11.999995"
|
||||
height="1.9999946"
|
||||
id="rect4374" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="14.999996"
|
||||
width="3.9999928"
|
||||
height="1.9999995"
|
||||
id="rect4376" />
|
||||
</g>
|
||||
<g
|
||||
id="g4383"
|
||||
transform="matrix(1,0,0,-1,-23.999995,23.999995)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="10.999999"
|
||||
width="7.9999909"
|
||||
height="1.9999965"
|
||||
id="rect4385" />
|
||||
<rect
|
||||
id="rect4387"
|
||||
height="1.9999946"
|
||||
width="11.999995"
|
||||
y="7.0000005"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4389"
|
||||
height="1.9999995"
|
||||
width="3.9999928"
|
||||
y="14.999996"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
</g>
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="76"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-4"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4351"
|
||||
d="m 85.10447,6.0157384 -0.0156,1.4063 c 3.02669,-0.2402 0.33008,3.6507996 2.48438,4.5780996 -2.18694,1.0938 0.49191,4.9069 -2.45313,4.5781 l -0.0156,1.4219 c 5.70828,0.559 1.03264,-5.1005 4.70313,-5.2656 l 0,-1.4063 c -3.61303,-0.027 1.11893,-5.7069996 -4.70313,-5.3124996 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4351-9"
|
||||
d="m 82.78125,5.9984384 0.0156,1.4063 c -3.02668,-0.2402 -0.33007,3.6506996 -2.48437,4.5780996 2.18694,1.0938 -0.49192,4.9069 2.45312,4.5781 l 0.0156,1.4219 c -5.70827,0.559 -1.03263,-5.1004 -4.70312,-5.2656 l 0,-1.4063 c 3.61303,-0.027 -1.11894,-5.7070996 4.70312,-5.3124996 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="100"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-25"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2987"
|
||||
d="m 103.719,5.6719384 0,12.7187996 3.03125,0 0,-1.5313 -1.34375,0 0,-9.6249996 1.375,0 0,-1.5625 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2987-1"
|
||||
d="m 112.2185,5.6721984 0,12.7187996 -3.03125,0 0,-1.5313 1.34375,0 0,-9.6249996 -1.375,0 0,-1.5625 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-73"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3780"
|
||||
d="m 126.2824,17.602938 1.78957,0 1.14143,-2.8641 5.65364,0 1.14856,2.8641 1.76565,0 -4.78687,-11.1610996 -1.91903,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3782"
|
||||
d="m 129.72704,13.478838 4.60852,0.01 -2.30426,-5.5497996 z"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="148"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-35"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5008-2"
|
||||
d="m 156.47655,5.8917384 0,2.1797 0.46093,2.3983996 1.82813,0 0.39844,-2.3983996 0,-2.1797 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5008-2-8"
|
||||
d="m 152.51561,5.8906384 0,2.1797 0.46094,2.3983996 1.82812,0 0.39844,-2.3983996 0,-2.1797 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
</g>
|
||||
<rect
|
||||
x="4"
|
||||
y="27.999994"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4432"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="28.000006"
|
||||
y="27.99999"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4434" />
|
||||
<rect
|
||||
id="rect4436"
|
||||
height="16"
|
||||
width="16"
|
||||
y="27.99999"
|
||||
x="52.000004"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;stroke:#000000;stroke-width:0"
|
||||
x="172.00002"
|
||||
y="27.999981"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4446" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;stroke:#000000;stroke-width:0"
|
||||
x="196"
|
||||
y="27.99999"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4448" />
|
||||
<g
|
||||
id="g4466"
|
||||
style="stroke:none"
|
||||
transform="translate(0,23.999995)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4468"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4470"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,19.029435,35.999996)"
|
||||
id="g4472"
|
||||
style="stroke:none">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4474"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4476"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="55.000004"
|
||||
y="31"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="rect4478" />
|
||||
<rect
|
||||
id="rect4480"
|
||||
height="6.9999905"
|
||||
width="6.9999909"
|
||||
y="34.000008"
|
||||
x="58"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#d3d3d3;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#d3d3d3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
x="58.000004"
|
||||
y="34.000004"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="rect4482" />
|
||||
<g
|
||||
id="g4484"
|
||||
transform="translate(0,23.999995)">
|
||||
<rect
|
||||
id="rect4486"
|
||||
height="1.9999965"
|
||||
width="7.9999909"
|
||||
y="10.999999"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="7.0000005"
|
||||
width="11.999995"
|
||||
height="1.9999946"
|
||||
id="rect4488" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="14.999996"
|
||||
width="3.9999928"
|
||||
height="1.9999995"
|
||||
id="rect4490" />
|
||||
</g>
|
||||
<g
|
||||
id="g4492"
|
||||
transform="matrix(1,0,0,-1,-23.999995,47.99999)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="10.999999"
|
||||
width="7.9999909"
|
||||
height="1.9999965"
|
||||
id="rect4494" />
|
||||
<rect
|
||||
id="rect4496"
|
||||
height="1.9999946"
|
||||
width="11.999995"
|
||||
y="7.0000005"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4498"
|
||||
height="1.9999995"
|
||||
width="3.9999928"
|
||||
y="14.999996"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-8"
|
||||
width="16"
|
||||
height="16"
|
||||
x="76"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 85.10448,30.015537 -0.0156,1.4063 c 3.02668,-0.2402 0.33007,3.6508 2.48438,4.5781 -2.18695,1.0938 0.49191,4.90688 -2.45313,4.57808 l -0.0156,1.4219 c 5.70827,0.559 1.03263,-5.10048 4.70313,-5.26558 l 0,-1.4063 c -3.61304,-0.027 1.11893,-5.707 -4.70313,-5.3125 z"
|
||||
id="path4351-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 82.78126,29.998237 0.0156,1.4063 c -3.02668,-0.2402 -0.33008,3.6507 -2.48438,4.5781 2.18694,1.0938 -0.49191,4.90688 2.45313,4.57808 l 0.0156,1.4219 c -5.70828,0.559 -1.03264,-5.10038 -4.70313,-5.26558 l 0,-1.4063 c 3.61303,-0.027 -1.11893,-5.7071 4.70313,-5.3125 z"
|
||||
id="path4351-9-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-65"
|
||||
width="16"
|
||||
height="16"
|
||||
x="100"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 103.719,29.671937 0,12.71878 3.03125,0 0,-1.5313 -1.34375,0 0,-9.62498 1.375,0 0,-1.5625 z"
|
||||
id="path2987-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 112.2185,29.671937 0,12.71878 -3.03125,0 0,-1.5313 1.34375,0 0,-9.62498 -1.375,0 0,-1.5625 z"
|
||||
id="path2987-1-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-92"
|
||||
width="16"
|
||||
height="16"
|
||||
x="124"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 126.2824,41.602917 1.78957,0 1.14143,-2.86408 5.65364,0 1.14856,2.86408 1.76565,0 -4.78687,-11.16108 -1.91902,0 z"
|
||||
id="path3780-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
d="m 129.72704,37.478837 4.60852,0.01 -2.30426,-5.5498 z"
|
||||
id="path3782-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-47"
|
||||
width="16"
|
||||
height="16"
|
||||
x="148"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 156.47656,29.891737 0,2.1797 0.46093,2.3984 1.82813,0 0.39844,-2.3984 0,-2.1797 z"
|
||||
id="path5008-2-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 152.51562,29.890637 0,2.1797 0.46094,2.3984 1.82812,0 0.39844,-2.3984 0,-2.1797 z"
|
||||
id="path5008-2-8-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<rect
|
||||
id="svg_1-7-2"
|
||||
height="1.9999961"
|
||||
width="11.999996"
|
||||
y="64"
|
||||
x="54"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="svg_1-7-2-2"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="52"
|
||||
x="80.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="85.000008"
|
||||
y="52"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4561" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="80.000008"
|
||||
y="58"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4563" />
|
||||
<rect
|
||||
id="rect4565"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="58"
|
||||
x="85.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4567"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="64"
|
||||
x="80.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="85.000008"
|
||||
y="64"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4569" />
|
||||
<circle
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4571"
|
||||
cx="110.06081"
|
||||
cy="57.939209"
|
||||
r="4.7438836" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="116.64566"
|
||||
y="-31.79752"
|
||||
width="4.229713"
|
||||
height="6.4053884"
|
||||
id="rect4563-2"
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
|
||||
<path
|
||||
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 125,56 138.77027,56.095 132,64 Z"
|
||||
id="path4613"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4615"
|
||||
d="M 149,64 162.77027,63.905 156,56 Z"
|
||||
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="54"
|
||||
y="53"
|
||||
width="11.999996"
|
||||
height="1.9999961"
|
||||
id="rect4638" />
|
||||
<rect
|
||||
id="svg_1-7-2-24"
|
||||
height="1.9999957"
|
||||
width="12.99999"
|
||||
y="-56"
|
||||
x="53"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="53"
|
||||
y="-66"
|
||||
width="12.99999"
|
||||
height="1.9999957"
|
||||
id="rect4657" />
|
||||
<rect
|
||||
id="rect4659"
|
||||
height="0.99999291"
|
||||
width="11.999999"
|
||||
y="57"
|
||||
x="54"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="54"
|
||||
y="88.000122"
|
||||
width="11.999996"
|
||||
height="1.9999961"
|
||||
id="rect4661" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="80.000008"
|
||||
y="76.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4663" />
|
||||
<rect
|
||||
id="rect4665"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="76.000122"
|
||||
x="85.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect4667"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="82.000122"
|
||||
x="80.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="85.000008"
|
||||
y="82.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4669" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="80.000008"
|
||||
y="88.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4671" />
|
||||
<rect
|
||||
id="rect4673"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="88.000122"
|
||||
x="85.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.7438836"
|
||||
cy="81.939331"
|
||||
cx="110.06081"
|
||||
id="circle4675"
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#d3d3d3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
|
||||
id="rect4677"
|
||||
height="6.4053884"
|
||||
width="4.229713"
|
||||
y="-14.826816"
|
||||
x="133.6163"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:#d3d3d3;stroke-width:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4679"
|
||||
d="m 125,80.000005 13.77027,0.09499 L 132,87.999992 Z"
|
||||
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 149,88.0002 162.77027,87.9052 156,80.0002 Z"
|
||||
id="path4681"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
id="rect4683"
|
||||
height="1.9999961"
|
||||
width="11.999996"
|
||||
y="77.000122"
|
||||
x="54"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="77.000122"
|
||||
y="-56"
|
||||
width="12.99999"
|
||||
height="1.9999957"
|
||||
id="rect4685" />
|
||||
<rect
|
||||
id="rect4687"
|
||||
height="1.9999957"
|
||||
width="12.99999"
|
||||
y="-66"
|
||||
x="77.000122"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="54"
|
||||
y="81.000122"
|
||||
width="11.999999"
|
||||
height="0.99999291"
|
||||
id="rect4689" />
|
||||
<rect
|
||||
id="rect4761-1"
|
||||
height="1.9999945"
|
||||
width="15.99999"
|
||||
y="101"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-0"
|
||||
height="1.9999945"
|
||||
width="15.99999"
|
||||
y="105"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-7"
|
||||
height="1.9999945"
|
||||
width="9"
|
||||
y="109"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1"
|
||||
height="1.9999945"
|
||||
width="12"
|
||||
y="125"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4"
|
||||
height="1.9999945"
|
||||
width="10"
|
||||
y="137"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4-4"
|
||||
height="1.9999945"
|
||||
width="10"
|
||||
y="129"
|
||||
x="82"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4-4-3"
|
||||
height="1.9999945"
|
||||
width="9"
|
||||
y="133"
|
||||
x="82"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 36.398438,100.0254 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,100.5991 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1452 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533865,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550756,0 6.710442,-2.4113 7.650391,-5.9414 0.939949,-3.5301 -0.618463,-7.2736 -3.710938,-9.0703 -1.159678,-0.6738 -2.431087,-1.0231 -3.701171,-1.0625 z"
|
||||
id="path4138" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 59.722656,99.9629 c -1.270084,0.039 -2.541493,0.3887 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5402 -3.710937,9.0703 0.939949,3.5301 4.09768,5.9414 7.648437,5.9414 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4056 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
|
||||
id="path4138-1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 10.5,100 0,2 -2.4999996,0 L 12,107 l 4,-5 -2.5,0 0,-2 -3,0 z"
|
||||
id="path3055-0-77" />
|
||||
<path
|
||||
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.966;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 4.9850574,108.015 14.0298856,-0.03"
|
||||
id="path5244-5-0-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.966;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 4.9849874,132.015 14.0298866,-0.03"
|
||||
id="path5244-5-0-5-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 36.398438,123.9629 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,124.5366 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1453 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533864,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550757,0 6.710442,-2.4093 7.650391,-5.9394 0.939949,-3.5301 -0.618463,-7.2756 -3.710938,-9.0723 -1.159678,-0.6737 -2.431087,-1.0231 -3.701171,-1.0625 z"
|
||||
id="path4138-12" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 59.722656,123.9629 c -1.270084,0.039 -2.541493,0.3888 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5422 -3.710937,9.0723 0.939949,3.5301 4.09768,5.9394 7.648437,5.9394 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4055 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
|
||||
id="path4138-1-3" />
|
||||
<path
|
||||
id="path6191"
|
||||
d="m 10.5,116 0,-2 -2.4999996,0 L 12,109 l 4,5 -2.5,0 0,2 -3,0 z"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 10.5,129 0,-2 -2.4999996,0 L 12,122 l 4,5 -2.5,0 0,2 -3,0 z"
|
||||
id="path6193" />
|
||||
<path
|
||||
id="path6195"
|
||||
d="m 10.5,135 0,2 -2.4999996,0 L 12,142 l 4,-5 -2.5,0 0,-2 -3,0 z"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4500"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:cy="60.073242"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 16.66742,60.073242 -3.833708,2.213392 -3.8337072,2.213393 0,-4.426785 0,-4.426784 3.8337082,2.213392 z"
|
||||
inkscape:transform-center-x="-1.2779026" />
|
||||
<path
|
||||
inkscape:transform-center-x="1.277902"
|
||||
d="m -31.500004,60.073242 -3.833708,2.213392 -3.833707,2.213393 0,-4.426785 0,-4.426784 3.833707,2.213392 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="1.0471976"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:cy="60.073242"
|
||||
sodipodi:cx="-36.611614"
|
||||
sodipodi:sides="3"
|
||||
id="path4502"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star"
|
||||
transform="scale(-1,1)" />
|
||||
<path
|
||||
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="1.0471976"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:cy="60.073212"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:sides="3"
|
||||
id="path4504"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star"
|
||||
transform="matrix(0,1,-1,0,72.0074,71.7877)"
|
||||
inkscape:transform-center-y="1.2779029" />
|
||||
<path
|
||||
inkscape:transform-center-y="-1.2779026"
|
||||
transform="matrix(0,-1,-1,0,96,96)"
|
||||
sodipodi:type="star"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4506"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:cy="60.073212"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4615-5"
|
||||
d="m 171.82574,65.174193 16.34854,0 -8.17427,-13.348454 z"
|
||||
style="fill:#fbb917;fill-opacity:1;fill-rule:evenodd;stroke:#fbb917;stroke-width:1.65161395;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 179,55 0,6 2,0 0,-6"
|
||||
id="path4300"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 179,62 0,2 2,0 0,-2"
|
||||
id="path4300-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 35 KiB |
9722
test/kepware/JSONEditor/dist/jsoneditor-minimalist.js
vendored
Normal file
1
test/kepware/JSONEditor/dist/jsoneditor-minimalist.map
vendored
Normal file
35
test/kepware/JSONEditor/dist/jsoneditor-minimalist.min.js
vendored
Normal file
929
test/kepware/JSONEditor/dist/jsoneditor.css
vendored
Normal file
@@ -0,0 +1,929 @@
|
||||
/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */
|
||||
|
||||
div.jsoneditor input {
|
||||
height: auto;
|
||||
border: inherit;
|
||||
}
|
||||
|
||||
div.jsoneditor input:focus {
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
div.jsoneditor table {
|
||||
border-collapse: collapse;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
div.jsoneditor td,
|
||||
div.jsoneditor th {
|
||||
padding: 0;
|
||||
display: table-cell;
|
||||
text-align: left;
|
||||
vertical-align: inherit;
|
||||
border-radius: inherit;
|
||||
}
|
||||
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor-readonly {
|
||||
border: 1px solid transparent;
|
||||
min-height: 16px;
|
||||
min-width: 32px;
|
||||
padding: 2px;
|
||||
margin: 1px;
|
||||
word-wrap: break-word;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* adjust margin of p elements inside editable divs, needed for Opera, IE */
|
||||
|
||||
div.jsoneditor-field p,
|
||||
div.jsoneditor-value p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value {
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
div.jsoneditor-readonly {
|
||||
min-width: 16px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-empty {
|
||||
border-color: lightgray;
|
||||
border-style: dashed;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after,
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
pointer-events: none;
|
||||
color: lightgray;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after {
|
||||
content: "field";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
content: "value";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-url,
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
color: green;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
display: inline-block;
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url:hover,
|
||||
a.jsoneditor-value.jsoneditor-url:focus {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-separator {
|
||||
padding: 3px 0;
|
||||
vertical-align: top;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-field[contenteditable=true]:focus,
|
||||
div.jsoneditor-field[contenteditable=true]:hover,
|
||||
div.jsoneditor-value[contenteditable=true]:focus,
|
||||
div.jsoneditor-value[contenteditable=true]:hover,
|
||||
div.jsoneditor-field.jsoneditor-highlight,
|
||||
div.jsoneditor-value.jsoneditor-highlight {
|
||||
background-color: #FFFFAB;
|
||||
border: 1px solid yellow;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-highlight-active,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:hover,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:hover {
|
||||
background-color: #ffee00;
|
||||
border: 1px solid #ffc700;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-string {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-object,
|
||||
div.jsoneditor-value.jsoneditor-array {
|
||||
min-width: 16px;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-number {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-boolean {
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-null {
|
||||
color: #004ED0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-invalid {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background: transparent url("img/jsoneditor-icons.svg");
|
||||
}
|
||||
|
||||
div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree,
|
||||
div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-collapsed {
|
||||
background-position: 0 -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-expanded {
|
||||
background-position: 0 -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu {
|
||||
background-position: -48px -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:focus,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
background-position: -48px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree *:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button:focus {
|
||||
/* TODO: nice outline for buttons with focus
|
||||
outline: #97B0F8 solid 2px;
|
||||
box-shadow: 0 0 8px #97B0F8;
|
||||
*/
|
||||
background-color: #f5f5f5;
|
||||
outline: #e5e5e5 solid 1px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-invisible {
|
||||
visibility: hidden;
|
||||
background: none;
|
||||
}
|
||||
|
||||
div.jsoneditor {
|
||||
color: #1A1A1A;
|
||||
border: 1px solid #3883fa;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
padding: 0;
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree table.jsoneditor-tree {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-outer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: -35px 0 0 0;
|
||||
padding: 35px 0 0 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text,
|
||||
.ace-jsoneditor {
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
outline-width: 0;
|
||||
border: none;
|
||||
background-color: white;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
tr.jsoneditor-highlight,
|
||||
tr.jsoneditor-selected {
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected button.jsoneditor-contextmenu {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea {
|
||||
background: url("img/jsoneditor-icons.svg") -72px -72px;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:focus,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {
|
||||
background-position: -72px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor tr,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor td {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-tree {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor td,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor textarea,
|
||||
.jsoneditor-schema-error {
|
||||
font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #1A1A1A;
|
||||
}
|
||||
|
||||
/* popover */
|
||||
|
||||
.jsoneditor-schema-error {
|
||||
cursor: default;
|
||||
display: inline-block;
|
||||
/*font-family: arial, sans-serif;*/
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree .jsoneditor-schema-error {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") -168px -48px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover {
|
||||
background-color: #4c4c4c;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 0 5px rgba(0,0,0,0.4);
|
||||
color: #fff;
|
||||
display: none;
|
||||
padding: 7px 10px;
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above {
|
||||
bottom: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below {
|
||||
top: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left {
|
||||
top: -7px;
|
||||
right: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right {
|
||||
top: -7px;
|
||||
left: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover:before {
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
content: '';
|
||||
display: block;
|
||||
left: 50%;
|
||||
margin-left: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before {
|
||||
border-top: 7px solid #4c4c4c;
|
||||
bottom: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before {
|
||||
border-bottom: 7px solid #4c4c4c;
|
||||
top: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before {
|
||||
border-left: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
right: -14px;
|
||||
left: inherit;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before {
|
||||
border-right: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
left: -14px;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error:hover .jsoneditor-popover,
|
||||
.jsoneditor-schema-error:focus .jsoneditor-popover {
|
||||
display: block;
|
||||
-webkit-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-moz-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-ms-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*@-webkit-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/*@-moz-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/*@-ms-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/* JSON schema errors displayed at the bottom of the editor in mode text and code */
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background-color: #ffef8b;
|
||||
border-top: 1px solid #ffd700;
|
||||
}
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors td {
|
||||
padding: 3px 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.jsoneditor-text-errors .jsoneditor-schema-error {
|
||||
border: none;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") -168px -48px;
|
||||
}
|
||||
/* ContextMenu - main menu */
|
||||
|
||||
div.jsoneditor-contextmenu-root {
|
||||
position: relative;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu {
|
||||
position: absolute;
|
||||
box-sizing: content-box;
|
||||
z-index: 99999;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul,
|
||||
div.jsoneditor-contextmenu li {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 124px;
|
||||
background: white;
|
||||
border: 1px solid #d3d3d3;
|
||||
box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3);
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 124px;
|
||||
height: 24px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
color: #4d4d4d;
|
||||
background: transparent;
|
||||
font-size: 10pt;
|
||||
font-family: arial, sans-serif;
|
||||
box-sizing: border-box;
|
||||
line-height: 26px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Fix button padding in firefox */
|
||||
|
||||
div.jsoneditor-contextmenu ul li button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button:hover,
|
||||
div.jsoneditor-contextmenu ul li button:focus {
|
||||
color: #1a1a1a;
|
||||
background-color: #f5f5f5;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-default {
|
||||
width: 92px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand {
|
||||
float: right;
|
||||
width: 32px;
|
||||
height: 24px;
|
||||
border-left: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu div.jsoneditor-icon {
|
||||
float: left;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-image: url("img/jsoneditor-icons.svg");
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button div.jsoneditor-expand {
|
||||
float: right;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") 0 -72px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu div.jsoneditor-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon {
|
||||
background-position: -24px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon {
|
||||
background-position: -24px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon {
|
||||
background-position: 0 -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon {
|
||||
background-position: 0 -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon {
|
||||
background-position: -48px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon {
|
||||
background-position: -48px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon {
|
||||
background-position: -168px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon {
|
||||
background-position: -168px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon {
|
||||
background-position: -192px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon {
|
||||
background-position: -192px 0;
|
||||
}
|
||||
|
||||
/* ContextMenu - sub menu */
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus {
|
||||
color: white;
|
||||
background-color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul {
|
||||
display: none;
|
||||
position: relative;
|
||||
left: -10px;
|
||||
top: 0;
|
||||
border: none;
|
||||
box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5);
|
||||
padding: 0 10px;
|
||||
/* TODO: transition is not supported on IE8-9 */
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul li button {
|
||||
padding-left: 24px;
|
||||
animation: all ease-in-out 1s;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul li button:hover,
|
||||
div.jsoneditor-contextmenu ul li ul li button:focus {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon {
|
||||
background-position: -144px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -144px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon {
|
||||
background-position: -120px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -120px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon {
|
||||
background-position: -72px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -72px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon {
|
||||
background-position: -96px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -96px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon {
|
||||
background-image: none;
|
||||
width: 6px;
|
||||
}
|
||||
div.jsoneditor-menu {
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
padding: 2px;
|
||||
margin: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: white;
|
||||
background-color: #3883fa;
|
||||
border-bottom: 1px solid #3883fa;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
margin: 2px;
|
||||
padding: 0;
|
||||
border-radius: 2px;
|
||||
border: 1px solid transparent;
|
||||
background: transparent url("img/jsoneditor-icons.svg");
|
||||
color: white;
|
||||
opacity: 0.8;
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:hover,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:hover {
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
border: 1px solid rgba(255,255,255,0.4);
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:focus,
|
||||
div.jsoneditor-menu > button:active,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:focus,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:active {
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:disabled,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:disabled {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-collapse-all {
|
||||
background-position: 0 -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-expand-all {
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-undo {
|
||||
background-position: -24px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-undo:disabled {
|
||||
background-position: -24px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-redo {
|
||||
background-position: -48px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-redo:disabled {
|
||||
background-position: -48px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-compact {
|
||||
background-position: -72px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-format {
|
||||
background-position: -72px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > div.jsoneditor-modes {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button {
|
||||
background-image: none;
|
||||
width: auto;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-separator,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-separator {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a {
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: white;
|
||||
opacity: 0.8;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a.jsoneditor-poweredBy {
|
||||
font-size: 8pt;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
table.jsoneditor-search input,
|
||||
table.jsoneditor-search div.jsoneditor-results {
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #1A1A1A;
|
||||
background: transparent;
|
||||
/* For Firefox */
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-results {
|
||||
color: white;
|
||||
padding-right: 5px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search {
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
top: 4px;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-frame {
|
||||
border: 1px solid transparent;
|
||||
background-color: white;
|
||||
padding: 0 2px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-frame table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.jsoneditor-search input {
|
||||
width: 120px;
|
||||
border: none;
|
||||
outline: none;
|
||||
margin: 1px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button {
|
||||
width: 16px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
background: url("img/jsoneditor-icons.svg");
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-refresh {
|
||||
width: 18px;
|
||||
background-position: -99px -73px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-next {
|
||||
cursor: pointer;
|
||||
background-position: -124px -73px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-next:hover {
|
||||
background-position: -124px -49px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-previous {
|
||||
cursor: pointer;
|
||||
background-position: -148px -73px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-previous:hover {
|
||||
background-position: -148px -49px;
|
||||
}
|
||||
36348
test/kepware/JSONEditor/dist/jsoneditor.js
vendored
Normal file
1
test/kepware/JSONEditor/dist/jsoneditor.map
vendored
Normal file
1
test/kepware/JSONEditor/dist/jsoneditor.min.css
vendored
Normal file
41
test/kepware/JSONEditor/dist/which files do I need.md
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# Which files do I need?
|
||||
|
||||
Ehhh, that's quite some files in this dist folder. Which files do I need?
|
||||
|
||||
|
||||
## Full version
|
||||
|
||||
If you're not sure which version to use, use the full version.
|
||||
|
||||
Which files are needed when using the full version?
|
||||
|
||||
- jsoneditor.min.js
|
||||
- jsoneditor.map (optional, for debugging purposes only)
|
||||
- jsoneditor.min.css
|
||||
- img/jsoneditor-icons.svg
|
||||
|
||||
|
||||
## Minimalist version
|
||||
|
||||
The minimalist version has excluded the following libraries:
|
||||
|
||||
- `ace` (via `brace`), used for the code editor.
|
||||
- `ajv`, used for JSON schema validation.
|
||||
|
||||
This reduces the the size of the minified and gzipped JavaScript file from
|
||||
about 160 kB to about 40 kB.
|
||||
|
||||
When to use the minimalist version?
|
||||
|
||||
- If you don't need the mode "code" and don't need JSON schema validation.
|
||||
- Or if you want to provide `ace` and/or `ajv` yourself via the configuration
|
||||
options, for example when you already use Ace in other parts of your
|
||||
web application too and don't want to bundle the library twice.
|
||||
|
||||
Which files are needed when using the minimalist version?
|
||||
|
||||
- jsoneditor-minimalist.min.js
|
||||
- jsoneditor-minimalist.map (optional, for debugging purposes only)
|
||||
- jsoneditor.min.css
|
||||
- img/jsoneditor-icons.svg
|
||||
|
||||
1
test/kepware/Modbus.txt
Normal file
@@ -0,0 +1 @@
|
||||
{"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Modbus TCP/IP Ethernet","common.ALLTYPES_NAME":"Mdbs","common.ALLTYPES_DEVNAME":"PLC1","servermain.DEVICE_ID_STRING": "10.10.100.10.1","common.ALLTYPES_TAGNAME":"Holding1","servermain.TAG_ADDRESS":"400001","servermain.TAG_DATA_TYPE": 8}
|
||||
893
test/kepware/dist/img/jsoneditor-icons.svg
vendored
Normal file
@@ -0,0 +1,893 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="216"
|
||||
height="144"
|
||||
id="svg4136"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r"
|
||||
sodipodi:docname="jsoneditor-icons.svg">
|
||||
<title
|
||||
id="title6512">JSON Editor Icons</title>
|
||||
<metadata
|
||||
id="metadata4148">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>JSON Editor Icons</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs4146" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1028"
|
||||
id="namedview4144"
|
||||
showgrid="true"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="97.217248"
|
||||
inkscape:cy="59.950227"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4136"
|
||||
showguides="false"
|
||||
borderlayer="false"
|
||||
inkscape:showpageshadow="true"
|
||||
showborder="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4640"
|
||||
empspacing="24" />
|
||||
</sodipodi:namedview>
|
||||
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
|
||||
<g
|
||||
id="g4394">
|
||||
<rect
|
||||
x="4"
|
||||
y="4"
|
||||
width="16"
|
||||
height="16"
|
||||
id="svg_1"
|
||||
style="fill:#1aae1c;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ec3f29;fill-opacity:0.94117647;stroke:none;stroke-width:0"
|
||||
x="28.000006"
|
||||
y="3.999995"
|
||||
width="16"
|
||||
height="16"
|
||||
id="svg_1-7" />
|
||||
<rect
|
||||
id="rect4165"
|
||||
height="16"
|
||||
width="16"
|
||||
y="3.999995"
|
||||
x="52.000004"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="172.00002"
|
||||
y="3.9999852"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4175" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="196"
|
||||
y="3.999995"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4175-3" />
|
||||
<g
|
||||
style="stroke:none"
|
||||
id="g4299">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-1"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:none"
|
||||
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,19.029435,12.000001)"
|
||||
id="g4299-3">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-0"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="svg_1-1-1-9"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="55.000004"
|
||||
y="7.0000048"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="svg_1-7-5" />
|
||||
<rect
|
||||
id="rect4354"
|
||||
height="6.9999905"
|
||||
width="6.9999909"
|
||||
y="10.00001"
|
||||
x="58"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#3c80df;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94117647"
|
||||
x="58.000004"
|
||||
y="10.000005"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="svg_1-7-5-7" />
|
||||
<g
|
||||
id="g4378">
|
||||
<rect
|
||||
id="svg_1-7-5-3"
|
||||
height="1.9999965"
|
||||
width="7.9999909"
|
||||
y="10.999999"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="7.0000005"
|
||||
width="11.999995"
|
||||
height="1.9999946"
|
||||
id="rect4374" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="14.999996"
|
||||
width="3.9999928"
|
||||
height="1.9999995"
|
||||
id="rect4376" />
|
||||
</g>
|
||||
<g
|
||||
id="g4383"
|
||||
transform="matrix(1,0,0,-1,-23.999995,23.999995)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="10.999999"
|
||||
width="7.9999909"
|
||||
height="1.9999965"
|
||||
id="rect4385" />
|
||||
<rect
|
||||
id="rect4387"
|
||||
height="1.9999946"
|
||||
width="11.999995"
|
||||
y="7.0000005"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4389"
|
||||
height="1.9999995"
|
||||
width="3.9999928"
|
||||
y="14.999996"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
</g>
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="76"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-4"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4351"
|
||||
d="m 85.10447,6.0157384 -0.0156,1.4063 c 3.02669,-0.2402 0.33008,3.6507996 2.48438,4.5780996 -2.18694,1.0938 0.49191,4.9069 -2.45313,4.5781 l -0.0156,1.4219 c 5.70828,0.559 1.03264,-5.1005 4.70313,-5.2656 l 0,-1.4063 c -3.61303,-0.027 1.11893,-5.7069996 -4.70313,-5.3124996 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4351-9"
|
||||
d="m 82.78125,5.9984384 0.0156,1.4063 c -3.02668,-0.2402 -0.33007,3.6506996 -2.48437,4.5780996 2.18694,1.0938 -0.49192,4.9069 2.45312,4.5781 l 0.0156,1.4219 c -5.70827,0.559 -1.03263,-5.1004 -4.70312,-5.2656 l 0,-1.4063 c 3.61303,-0.027 -1.11894,-5.7070996 4.70312,-5.3124996 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="100"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-25"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2987"
|
||||
d="m 103.719,5.6719384 0,12.7187996 3.03125,0 0,-1.5313 -1.34375,0 0,-9.6249996 1.375,0 0,-1.5625 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path2987-1"
|
||||
d="m 112.2185,5.6721984 0,12.7187996 -3.03125,0 0,-1.5313 1.34375,0 0,-9.6249996 -1.375,0 0,-1.5625 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="124"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-73"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3780"
|
||||
d="m 126.2824,17.602938 1.78957,0 1.14143,-2.8641 5.65364,0 1.14856,2.8641 1.76565,0 -4.78687,-11.1610996 -1.91903,0 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3782"
|
||||
d="m 129.72704,13.478838 4.60852,0.01 -2.30426,-5.5497996 z"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="3.9999199"
|
||||
x="148"
|
||||
height="16"
|
||||
width="16"
|
||||
id="rect3754-35"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5008-2"
|
||||
d="m 156.47655,5.8917384 0,2.1797 0.46093,2.3983996 1.82813,0 0.39844,-2.3983996 0,-2.1797 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5008-2-8"
|
||||
d="m 152.51561,5.8906384 0,2.1797 0.46094,2.3983996 1.82812,0 0.39844,-2.3983996 0,-2.1797 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
</g>
|
||||
<rect
|
||||
x="4"
|
||||
y="27.999994"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4432"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
x="28.000006"
|
||||
y="27.99999"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4434" />
|
||||
<rect
|
||||
id="rect4436"
|
||||
height="16"
|
||||
width="16"
|
||||
y="27.99999"
|
||||
x="52.000004"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;stroke:#000000;stroke-width:0"
|
||||
x="172.00002"
|
||||
y="27.999981"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4446" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;stroke:#000000;stroke-width:0"
|
||||
x="196"
|
||||
y="27.99999"
|
||||
width="16"
|
||||
height="16"
|
||||
id="rect4448" />
|
||||
<g
|
||||
id="g4466"
|
||||
style="stroke:none"
|
||||
transform="translate(0,23.999995)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4468"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4470"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,19.029435,35.999996)"
|
||||
id="g4472"
|
||||
style="stroke:none">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4474"
|
||||
height="1.9999986"
|
||||
width="9.9999924"
|
||||
y="10.999998"
|
||||
x="7.0000048" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0"
|
||||
id="rect4476"
|
||||
height="9.9999838"
|
||||
width="1.9999955"
|
||||
y="7.0000114"
|
||||
x="11.000005" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="55.000004"
|
||||
y="31"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="rect4478" />
|
||||
<rect
|
||||
id="rect4480"
|
||||
height="6.9999905"
|
||||
width="6.9999909"
|
||||
y="34.000008"
|
||||
x="58"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#d3d3d3;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#d3d3d3;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
x="58.000004"
|
||||
y="34.000004"
|
||||
width="6.9999909"
|
||||
height="6.9999905"
|
||||
id="rect4482" />
|
||||
<g
|
||||
id="g4484"
|
||||
transform="translate(0,23.999995)">
|
||||
<rect
|
||||
id="rect4486"
|
||||
height="1.9999965"
|
||||
width="7.9999909"
|
||||
y="10.999999"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="7.0000005"
|
||||
width="11.999995"
|
||||
height="1.9999946"
|
||||
id="rect4488" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="14.999996"
|
||||
width="3.9999928"
|
||||
height="1.9999995"
|
||||
id="rect4490" />
|
||||
</g>
|
||||
<g
|
||||
id="g4492"
|
||||
transform="matrix(1,0,0,-1,-23.999995,47.99999)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
|
||||
x="198"
|
||||
y="10.999999"
|
||||
width="7.9999909"
|
||||
height="1.9999965"
|
||||
id="rect4494" />
|
||||
<rect
|
||||
id="rect4496"
|
||||
height="1.9999946"
|
||||
width="11.999995"
|
||||
y="7.0000005"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4498"
|
||||
height="1.9999995"
|
||||
width="3.9999928"
|
||||
y="14.999996"
|
||||
x="198"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-8"
|
||||
width="16"
|
||||
height="16"
|
||||
x="76"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 85.10448,30.015537 -0.0156,1.4063 c 3.02668,-0.2402 0.33007,3.6508 2.48438,4.5781 -2.18695,1.0938 0.49191,4.90688 -2.45313,4.57808 l -0.0156,1.4219 c 5.70827,0.559 1.03263,-5.10048 4.70313,-5.26558 l 0,-1.4063 c -3.61304,-0.027 1.11893,-5.707 -4.70313,-5.3125 z"
|
||||
id="path4351-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 82.78126,29.998237 0.0156,1.4063 c -3.02668,-0.2402 -0.33008,3.6507 -2.48438,4.5781 2.18694,1.0938 -0.49191,4.90688 2.45313,4.57808 l 0.0156,1.4219 c -5.70828,0.559 -1.03264,-5.10038 -4.70313,-5.26558 l 0,-1.4063 c 3.61303,-0.027 -1.11893,-5.7071 4.70313,-5.3125 z"
|
||||
id="path4351-9-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-65"
|
||||
width="16"
|
||||
height="16"
|
||||
x="100"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 103.719,29.671937 0,12.71878 3.03125,0 0,-1.5313 -1.34375,0 0,-9.62498 1.375,0 0,-1.5625 z"
|
||||
id="path2987-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 112.2185,29.671937 0,12.71878 -3.03125,0 0,-1.5313 1.34375,0 0,-9.62498 -1.375,0 0,-1.5625 z"
|
||||
id="path2987-1-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-92"
|
||||
width="16"
|
||||
height="16"
|
||||
x="124"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 126.2824,41.602917 1.78957,0 1.14143,-2.86408 5.65364,0 1.14856,2.86408 1.76565,0 -4.78687,-11.16108 -1.91902,0 z"
|
||||
id="path3780-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
d="m 129.72704,37.478837 4.60852,0.01 -2.30426,-5.5498 z"
|
||||
id="path3782-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none"
|
||||
id="rect3754-47"
|
||||
width="16"
|
||||
height="16"
|
||||
x="148"
|
||||
y="27.99992" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 156.47656,29.891737 0,2.1797 0.46093,2.3984 1.82813,0 0.39844,-2.3984 0,-2.1797 z"
|
||||
id="path5008-2-1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
d="m 152.51562,29.890637 0,2.1797 0.46094,2.3984 1.82812,0 0.39844,-2.3984 0,-2.1797 z"
|
||||
id="path5008-2-8-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<rect
|
||||
id="svg_1-7-2"
|
||||
height="1.9999961"
|
||||
width="11.999996"
|
||||
y="64"
|
||||
x="54"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="svg_1-7-2-2"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="52"
|
||||
x="80.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="85.000008"
|
||||
y="52"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4561" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="80.000008"
|
||||
y="58"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4563" />
|
||||
<rect
|
||||
id="rect4565"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="58"
|
||||
x="85.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4567"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="64"
|
||||
x="80.000008"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="85.000008"
|
||||
y="64"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4569" />
|
||||
<circle
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4571"
|
||||
cx="110.06081"
|
||||
cy="57.939209"
|
||||
r="4.7438836" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="116.64566"
|
||||
y="-31.79752"
|
||||
width="4.229713"
|
||||
height="6.4053884"
|
||||
id="rect4563-2"
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
|
||||
<path
|
||||
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 125,56 138.77027,56.095 132,64 Z"
|
||||
id="path4613"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4615"
|
||||
d="M 149,64 162.77027,63.905 156,56 Z"
|
||||
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="54"
|
||||
y="53"
|
||||
width="11.999996"
|
||||
height="1.9999961"
|
||||
id="rect4638" />
|
||||
<rect
|
||||
id="svg_1-7-2-24"
|
||||
height="1.9999957"
|
||||
width="12.99999"
|
||||
y="-56"
|
||||
x="53"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
|
||||
x="53"
|
||||
y="-66"
|
||||
width="12.99999"
|
||||
height="1.9999957"
|
||||
id="rect4657" />
|
||||
<rect
|
||||
id="rect4659"
|
||||
height="0.99999291"
|
||||
width="11.999999"
|
||||
y="57"
|
||||
x="54"
|
||||
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="54"
|
||||
y="88.000122"
|
||||
width="11.999996"
|
||||
height="1.9999961"
|
||||
id="rect4661" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="80.000008"
|
||||
y="76.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4663" />
|
||||
<rect
|
||||
id="rect4665"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="76.000122"
|
||||
x="85.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect4667"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="82.000122"
|
||||
x="80.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="85.000008"
|
||||
y="82.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4669" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="80.000008"
|
||||
y="88.000122"
|
||||
width="2.9999907"
|
||||
height="2.9999905"
|
||||
id="rect4671" />
|
||||
<rect
|
||||
id="rect4673"
|
||||
height="2.9999905"
|
||||
width="2.9999907"
|
||||
y="88.000122"
|
||||
x="85.000008"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.7438836"
|
||||
cy="81.939331"
|
||||
cx="110.06081"
|
||||
id="circle4675"
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#d3d3d3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
|
||||
id="rect4677"
|
||||
height="6.4053884"
|
||||
width="4.229713"
|
||||
y="-14.826816"
|
||||
x="133.6163"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:#d3d3d3;stroke-width:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4679"
|
||||
d="m 125,80.000005 13.77027,0.09499 L 132,87.999992 Z"
|
||||
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 149,88.0002 162.77027,87.9052 156,80.0002 Z"
|
||||
id="path4681"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
id="rect4683"
|
||||
height="1.9999961"
|
||||
width="11.999996"
|
||||
y="77.000122"
|
||||
x="54"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="matrix(0,1,-1,0,0,0)"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="77.000122"
|
||||
y="-56"
|
||||
width="12.99999"
|
||||
height="1.9999957"
|
||||
id="rect4685" />
|
||||
<rect
|
||||
id="rect4687"
|
||||
height="1.9999957"
|
||||
width="12.99999"
|
||||
y="-66"
|
||||
x="77.000122"
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
transform="matrix(0,1,-1,0,0,0)" />
|
||||
<rect
|
||||
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
|
||||
x="54"
|
||||
y="81.000122"
|
||||
width="11.999999"
|
||||
height="0.99999291"
|
||||
id="rect4689" />
|
||||
<rect
|
||||
id="rect4761-1"
|
||||
height="1.9999945"
|
||||
width="15.99999"
|
||||
y="101"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-0"
|
||||
height="1.9999945"
|
||||
width="15.99999"
|
||||
y="105"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-7"
|
||||
height="1.9999945"
|
||||
width="9"
|
||||
y="109"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1"
|
||||
height="1.9999945"
|
||||
width="12"
|
||||
y="125"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4"
|
||||
height="1.9999945"
|
||||
width="10"
|
||||
y="137"
|
||||
x="76.000008"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4-4"
|
||||
height="1.9999945"
|
||||
width="10"
|
||||
y="129"
|
||||
x="82"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<rect
|
||||
id="rect4761-1-1-4-4-3"
|
||||
height="1.9999945"
|
||||
width="9"
|
||||
y="133"
|
||||
x="82"
|
||||
style="fill:#ffffff;fill-opacity:0.80000007;stroke:none;stroke-width:0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 36.398438,100.0254 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,100.5991 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1452 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533865,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550756,0 6.710442,-2.4113 7.650391,-5.9414 0.939949,-3.5301 -0.618463,-7.2736 -3.710938,-9.0703 -1.159678,-0.6738 -2.431087,-1.0231 -3.701171,-1.0625 z"
|
||||
id="path4138" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 59.722656,99.9629 c -1.270084,0.039 -2.541493,0.3887 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5402 -3.710937,9.0703 0.939949,3.5301 4.09768,5.9414 7.648437,5.9414 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4056 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
|
||||
id="path4138-1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 10.5,100 0,2 -2.4999996,0 L 12,107 l 4,-5 -2.5,0 0,-2 -3,0 z"
|
||||
id="path3055-0-77" />
|
||||
<path
|
||||
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.966;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 4.9850574,108.015 14.0298856,-0.03"
|
||||
id="path5244-5-0-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.966;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 4.9849874,132.015 14.0298866,-0.03"
|
||||
id="path5244-5-0-5-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 36.398438,123.9629 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,124.5366 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1453 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533864,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550757,0 6.710442,-2.4093 7.650391,-5.9394 0.939949,-3.5301 -0.618463,-7.2756 -3.710938,-9.0723 -1.159678,-0.6737 -2.431087,-1.0231 -3.701171,-1.0625 z"
|
||||
id="path4138-12" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 59.722656,123.9629 c -1.270084,0.039 -2.541493,0.3888 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5422 -3.710937,9.0723 0.939949,3.5301 4.09768,5.9394 7.648437,5.9394 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4055 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
|
||||
id="path4138-1-3" />
|
||||
<path
|
||||
id="path6191"
|
||||
d="m 10.5,116 0,-2 -2.4999996,0 L 12,109 l 4,5 -2.5,0 0,2 -3,0 z"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="m 10.5,129 0,-2 -2.4999996,0 L 12,122 l 4,5 -2.5,0 0,2 -3,0 z"
|
||||
id="path6193" />
|
||||
<path
|
||||
id="path6195"
|
||||
d="m 10.5,135 0,2 -2.4999996,0 L 12,142 l 4,-5 -2.5,0 0,-2 -3,0 z"
|
||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.966;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:type="star"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4500"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:cy="60.073242"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 16.66742,60.073242 -3.833708,2.213392 -3.8337072,2.213393 0,-4.426785 0,-4.426784 3.8337082,2.213392 z"
|
||||
inkscape:transform-center-x="-1.2779026" />
|
||||
<path
|
||||
inkscape:transform-center-x="1.277902"
|
||||
d="m -31.500004,60.073242 -3.833708,2.213392 -3.833707,2.213393 0,-4.426785 0,-4.426784 3.833707,2.213392 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="1.0471976"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:cy="60.073242"
|
||||
sodipodi:cx="-36.611614"
|
||||
sodipodi:sides="3"
|
||||
id="path4502"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star"
|
||||
transform="scale(-1,1)" />
|
||||
<path
|
||||
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="false"
|
||||
sodipodi:arg2="1.0471976"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:cy="60.073212"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:sides="3"
|
||||
id="path4504"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star"
|
||||
transform="matrix(0,1,-1,0,72.0074,71.7877)"
|
||||
inkscape:transform-center-y="1.2779029" />
|
||||
<path
|
||||
inkscape:transform-center-y="-1.2779026"
|
||||
transform="matrix(0,-1,-1,0,96,96)"
|
||||
sodipodi:type="star"
|
||||
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="path4506"
|
||||
sodipodi:sides="3"
|
||||
sodipodi:cx="11.55581"
|
||||
sodipodi:cy="60.073212"
|
||||
sodipodi:r1="5.1116104"
|
||||
sodipodi:r2="2.5558052"
|
||||
sodipodi:arg1="0"
|
||||
sodipodi:arg2="1.0471976"
|
||||
inkscape:flatsided="false"
|
||||
inkscape:rounded="0"
|
||||
inkscape:randomized="0"
|
||||
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4615-5"
|
||||
d="m 171.82574,65.174193 16.34854,0 -8.17427,-13.348454 z"
|
||||
style="fill:#fbb917;fill-opacity:1;fill-rule:evenodd;stroke:#fbb917;stroke-width:1.65161395;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 179,55 0,6 2,0 0,-6"
|
||||
id="path4300"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 179,62 0,2 2,0 0,-2"
|
||||
id="path4300-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 35 KiB |
9722
test/kepware/dist/jsoneditor-minimalist.js
vendored
Normal file
1
test/kepware/dist/jsoneditor-minimalist.map
vendored
Normal file
35
test/kepware/dist/jsoneditor-minimalist.min.js
vendored
Normal file
906
test/kepware/dist/jsoneditor.css
vendored
Normal file
@@ -0,0 +1,906 @@
|
||||
/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */
|
||||
|
||||
div.jsoneditor input {
|
||||
height: auto;
|
||||
border: inherit;
|
||||
}
|
||||
|
||||
div.jsoneditor input:focus {
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
div.jsoneditor table {
|
||||
border-collapse: collapse;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
div.jsoneditor td,
|
||||
div.jsoneditor th {
|
||||
padding: 0;
|
||||
display: table-cell;
|
||||
text-align: left;
|
||||
vertical-align: inherit;
|
||||
border-radius: inherit;
|
||||
}
|
||||
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor-readonly {
|
||||
border: 1px solid transparent;
|
||||
min-height: 16px;
|
||||
min-width: 32px;
|
||||
padding: 2px;
|
||||
margin: 1px;
|
||||
word-wrap: break-word;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* adjust margin of p elements inside editable divs, needed for Opera, IE */
|
||||
|
||||
div.jsoneditor-field p,
|
||||
div.jsoneditor-value p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value {
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
div.jsoneditor-readonly {
|
||||
min-width: 16px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-empty {
|
||||
border-color: lightgray;
|
||||
border-style: dashed;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after,
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
pointer-events: none;
|
||||
color: lightgray;
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-empty::after {
|
||||
content: "field";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-empty::after {
|
||||
content: "value";
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-url,
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
color: green;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url {
|
||||
display: inline-block;
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
a.jsoneditor-value.jsoneditor-url:hover,
|
||||
a.jsoneditor-value.jsoneditor-url:focus {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-separator {
|
||||
padding: 3px 0;
|
||||
vertical-align: top;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
div.jsoneditor-field[contenteditable=true]:focus,
|
||||
div.jsoneditor-field[contenteditable=true]:hover,
|
||||
div.jsoneditor-value[contenteditable=true]:focus,
|
||||
div.jsoneditor-value[contenteditable=true]:hover,
|
||||
div.jsoneditor-field.jsoneditor-highlight,
|
||||
div.jsoneditor-value.jsoneditor-highlight {
|
||||
background-color: #FFFFAB;
|
||||
border: 1px solid yellow;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-field.jsoneditor-highlight-active,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-field.jsoneditor-highlight-active:hover,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:focus,
|
||||
div.jsoneditor-value.jsoneditor-highlight-active:hover {
|
||||
background-color: #ffee00;
|
||||
border: 1px solid #ffc700;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-string {
|
||||
color: #008000;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-object,
|
||||
div.jsoneditor-value.jsoneditor-array {
|
||||
min-width: 16px;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-number {
|
||||
color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-boolean {
|
||||
color: #ff8c00;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-null {
|
||||
color: #004ED0;
|
||||
}
|
||||
|
||||
div.jsoneditor-value.jsoneditor-invalid {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background: transparent url("img/jsoneditor-icons.svg");
|
||||
}
|
||||
|
||||
div.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree,
|
||||
div.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-collapsed {
|
||||
background-position: 0 -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-expanded {
|
||||
background-position: 0 -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu {
|
||||
background-position: -48px -72px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu:focus,
|
||||
div.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
background-position: -48px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree *:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button:focus {
|
||||
/* TODO: nice outline for buttons with focus
|
||||
outline: #97B0F8 solid 2px;
|
||||
box-shadow: 0 0 8px #97B0F8;
|
||||
*/
|
||||
background-color: #f5f5f5;
|
||||
outline: #e5e5e5 solid 1px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-invisible {
|
||||
visibility: hidden;
|
||||
background: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.jsoneditor-tree table.jsoneditor-tree {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-outer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: -35px 0 0 0;
|
||||
padding: 35px 0 0 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text,
|
||||
.ace-jsoneditor {
|
||||
min-height: 150px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
textarea.jsoneditor-text {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
outline-width: 0;
|
||||
border: none;
|
||||
background-color: white;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
tr.jsoneditor-highlight,
|
||||
tr.jsoneditor-selected {
|
||||
background-color: #e6e6e6;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected button.jsoneditor-contextmenu {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea {
|
||||
background: url("img/jsoneditor-icons.svg") -72px -72px;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:hover,
|
||||
div.jsoneditor-tree button.jsoneditor-dragarea:focus,
|
||||
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {
|
||||
background-position: -72px -48px;
|
||||
}
|
||||
|
||||
div.jsoneditor tr,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor td {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor td.jsoneditor-tree {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.jsoneditor-field,
|
||||
div.jsoneditor-value,
|
||||
div.jsoneditor td,
|
||||
div.jsoneditor th,
|
||||
div.jsoneditor textarea,
|
||||
.jsoneditor-schema-error {
|
||||
font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #1A1A1A;
|
||||
}
|
||||
|
||||
/* popover */
|
||||
|
||||
.jsoneditor-schema-error {
|
||||
cursor: default;
|
||||
display: inline-block;
|
||||
/*font-family: arial, sans-serif;*/
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-tree .jsoneditor-schema-error {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") -168px -48px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover {
|
||||
background-color: #4c4c4c;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 0 5px rgba(0,0,0,0.4);
|
||||
color: #fff;
|
||||
display: none;
|
||||
padding: 7px 10px;
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above {
|
||||
bottom: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below {
|
||||
top: 32px;
|
||||
left: -98px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left {
|
||||
top: -7px;
|
||||
right: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right {
|
||||
top: -7px;
|
||||
left: 32px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover:before {
|
||||
border-right: 7px solid transparent;
|
||||
border-left: 7px solid transparent;
|
||||
content: '';
|
||||
display: block;
|
||||
left: 50%;
|
||||
margin-left: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before {
|
||||
border-top: 7px solid #4c4c4c;
|
||||
bottom: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before {
|
||||
border-bottom: 7px solid #4c4c4c;
|
||||
top: -7px;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before {
|
||||
border-left: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
right: -14px;
|
||||
left: inherit;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before {
|
||||
border-right: 7px solid #4c4c4c;
|
||||
border-top: 7px solid transparent;
|
||||
border-bottom: 7px solid transparent;
|
||||
content: '';
|
||||
top: 19px;
|
||||
left: -14px;
|
||||
margin-left: inherit;
|
||||
margin-top: -7px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.jsoneditor-schema-error:hover .jsoneditor-popover,
|
||||
.jsoneditor-schema-error:focus .jsoneditor-popover {
|
||||
display: block;
|
||||
-webkit-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-moz-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
-ms-animation: fade-in .3s linear 1, move-up .3s linear 1;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes fade-in {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*@-webkit-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/*@-moz-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/*@-ms-keyframes move-up {*/
|
||||
|
||||
/*from { bottom: 24px; }*/
|
||||
|
||||
/*to { bottom: 32px; }*/
|
||||
|
||||
/*}*/
|
||||
|
||||
/* JSON schema errors displayed at the bottom of the editor in mode text and code */
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background-color: #ffef8b;
|
||||
border-top: 1px solid #ffd700;
|
||||
}
|
||||
|
||||
.jsoneditor .jsoneditor-text-errors td {
|
||||
padding: 3px 6px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.jsoneditor-text-errors .jsoneditor-schema-error {
|
||||
border: none;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") -168px -48px;
|
||||
}
|
||||
/* ContextMenu - main menu */
|
||||
|
||||
div.jsoneditor-contextmenu-root {
|
||||
position: relative;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu {
|
||||
position: absolute;
|
||||
box-sizing: content-box;
|
||||
z-index: 99999;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul,
|
||||
div.jsoneditor-contextmenu li {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 124px;
|
||||
background: white;
|
||||
border: 1px solid #d3d3d3;
|
||||
box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3);
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 124px;
|
||||
height: 24px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
color: #4d4d4d;
|
||||
background: transparent;
|
||||
font-size: 10pt;
|
||||
font-family: arial, sans-serif;
|
||||
box-sizing: border-box;
|
||||
line-height: 26px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Fix button padding in firefox */
|
||||
|
||||
div.jsoneditor-contextmenu ul li button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button:hover,
|
||||
div.jsoneditor-contextmenu ul li button:focus {
|
||||
color: #1a1a1a;
|
||||
background-color: #f5f5f5;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-default {
|
||||
width: 92px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand {
|
||||
float: right;
|
||||
width: 32px;
|
||||
height: 24px;
|
||||
border-left: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu div.jsoneditor-icon {
|
||||
float: left;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-image: url("img/jsoneditor-icons.svg");
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button div.jsoneditor-expand {
|
||||
float: right;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0 4px 0 0;
|
||||
background: url("img/jsoneditor-icons.svg") 0 -72px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu div.jsoneditor-separator {
|
||||
height: 0;
|
||||
border-top: 1px solid #e5e5e5;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon {
|
||||
background-position: -24px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon {
|
||||
background-position: -24px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon {
|
||||
background-position: 0 -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon {
|
||||
background-position: 0 -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon {
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon {
|
||||
background-position: -48px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon {
|
||||
background-position: -48px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon {
|
||||
background-position: -168px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon {
|
||||
background-position: -168px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon {
|
||||
background-position: -192px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon {
|
||||
background-position: -192px 0;
|
||||
}
|
||||
|
||||
/* ContextMenu - sub menu */
|
||||
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover,
|
||||
div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus {
|
||||
color: white;
|
||||
background-color: #ee422e;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul {
|
||||
display: none;
|
||||
position: relative;
|
||||
left: -10px;
|
||||
top: 0;
|
||||
border: none;
|
||||
box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5);
|
||||
padding: 0 10px;
|
||||
/* TODO: transition is not supported on IE8-9 */
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul li button {
|
||||
padding-left: 24px;
|
||||
animation: all ease-in-out 1s;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu ul li ul li button:hover,
|
||||
div.jsoneditor-contextmenu ul li ul li button:focus {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon {
|
||||
background-position: -144px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -144px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon {
|
||||
background-position: -120px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -120px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon {
|
||||
background-position: -72px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -72px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon {
|
||||
background-position: -96px -24px;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon,
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon {
|
||||
background-position: -96px 0;
|
||||
}
|
||||
|
||||
div.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon {
|
||||
background-image: none;
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
|
||||
div.jsoneditor-menu > button,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
margin: 2px;
|
||||
padding: 0;
|
||||
border-radius: 2px;
|
||||
border: 1px solid transparent;
|
||||
background: transparent url("img/jsoneditor-icons.svg");
|
||||
color: white;
|
||||
opacity: 0.8;
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:hover,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:hover {
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
border: 1px solid rgba(255,255,255,0.4);
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:focus,
|
||||
div.jsoneditor-menu > button:active,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:focus,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:active {
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button:disabled,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button:disabled {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-collapse-all {
|
||||
background-position: 0 -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-expand-all {
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-undo {
|
||||
background-position: -24px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-undo:disabled {
|
||||
background-position: -24px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-redo {
|
||||
background-position: -48px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-redo:disabled {
|
||||
background-position: -48px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-compact {
|
||||
background-position: -72px -96px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-format {
|
||||
background-position: -72px -120px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > div.jsoneditor-modes {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button {
|
||||
background-image: none;
|
||||
width: auto;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu > button.jsoneditor-separator,
|
||||
div.jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-separator {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a {
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: white;
|
||||
opacity: 0.8;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
div.jsoneditor-menu a.jsoneditor-poweredBy {
|
||||
font-size: 8pt;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
table.jsoneditor-search input,
|
||||
table.jsoneditor-search div.jsoneditor-results {
|
||||
font-family: arial, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #1A1A1A;
|
||||
background: transparent;
|
||||
/* For Firefox */
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-results {
|
||||
color: white;
|
||||
padding-right: 5px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search {
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
top: 4px;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-frame {
|
||||
border: 1px solid transparent;
|
||||
background-color: white;
|
||||
padding: 0 2px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table.jsoneditor-search div.jsoneditor-frame table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.jsoneditor-search input {
|
||||
width: 120px;
|
||||
border: none;
|
||||
outline: none;
|
||||
margin: 1px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button {
|
||||
width: 16px;
|
||||
height: 24px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
background: url("img/jsoneditor-icons.svg");
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-refresh {
|
||||
width: 18px;
|
||||
background-position: -99px -73px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-next {
|
||||
cursor: pointer;
|
||||
background-position: -124px -73px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-next:hover {
|
||||
background-position: -124px -49px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-previous {
|
||||
cursor: pointer;
|
||||
background-position: -148px -73px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
table.jsoneditor-search button.jsoneditor-previous:hover {
|
||||
background-position: -148px -49px;
|
||||
}
|
||||
36348
test/kepware/dist/jsoneditor.js
vendored
Normal file
1
test/kepware/dist/jsoneditor.map
vendored
Normal file
1
test/kepware/dist/jsoneditor.min.css
vendored
Normal file
41
test/kepware/dist/which files do I need.md
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# Which files do I need?
|
||||
|
||||
Ehhh, that's quite some files in this dist folder. Which files do I need?
|
||||
|
||||
|
||||
## Full version
|
||||
|
||||
If you're not sure which version to use, use the full version.
|
||||
|
||||
Which files are needed when using the full version?
|
||||
|
||||
- jsoneditor.min.js
|
||||
- jsoneditor.map (optional, for debugging purposes only)
|
||||
- jsoneditor.min.css
|
||||
- img/jsoneditor-icons.svg
|
||||
|
||||
|
||||
## Minimalist version
|
||||
|
||||
The minimalist version has excluded the following libraries:
|
||||
|
||||
- `ace` (via `brace`), used for the code editor.
|
||||
- `ajv`, used for JSON schema validation.
|
||||
|
||||
This reduces the the size of the minified and gzipped JavaScript file from
|
||||
about 160 kB to about 40 kB.
|
||||
|
||||
When to use the minimalist version?
|
||||
|
||||
- If you don't need the mode "code" and don't need JSON schema validation.
|
||||
- Or if you want to provide `ace` and/or `ajv` yourself via the configuration
|
||||
options, for example when you already use Ace in other parts of your
|
||||
web application too and don't want to bundle the library twice.
|
||||
|
||||
Which files are needed when using the minimalist version?
|
||||
|
||||
- jsoneditor-minimalist.min.js
|
||||
- jsoneditor-minimalist.map (optional, for debugging purposes only)
|
||||
- jsoneditor.min.css
|
||||
- img/jsoneditor-icons.svg
|
||||
|
||||
22
test/kepware/documentation/changelog.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
26th MAR 2017
|
||||
=============
|
||||
Global Variables:
|
||||
-Added eventArray for storing KSE events
|
||||
-Added lastKnownPosition for tracking of where the latest events are
|
||||
|
||||
index.html:
|
||||
-Added Custom Event Diag for config
|
||||
|
||||
styles.css:
|
||||
-Styled to fit at 40% width under #resultsTable, #eventsTable
|
||||
|
||||
v6CommonAPI.js:
|
||||
-added readEventLog(); <- Extracts Event Logs
|
||||
|
||||
engine.js:
|
||||
-Added updateEventsLog(content,status);
|
||||
|
||||
Bug Fix:
|
||||
- Added Var for each for loop. Might be the cause of race conditions.
|
||||
- Added for loop into useCase1.js for a for loop example
|
||||
- Added deleteAllbutton in usecase1.js Routine 1
|
||||
256
test/kepware/index.html
Normal file
@@ -0,0 +1,256 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>V6 Web Config Client</title>
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="static\images\favicon-16x16.png"></link>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<!-- Custom CSS -->
|
||||
<link rel="stylesheet" href="CSS/normalize.css"></link>
|
||||
<link rel="stylesheet" href="CSS/styles.css"></link>
|
||||
<link rel="stylesheet" href="CSS/pd.css"></link>
|
||||
<link rel="stylesheet" href="jsTree/themes/default/style.min.css" /></link>
|
||||
<script src="jQuery/jquery-1.12.1.min.js"></script>
|
||||
<script src="jsTree/jstree.min.js"></script>
|
||||
<!--jsEditor-->
|
||||
<link href="dist/jsoneditor.css" rel="stylesheet" type="text/css">
|
||||
</script>
|
||||
<script src="dist/jsoneditor.js"></script>
|
||||
</head>
|
||||
<!-- End of Head-->
|
||||
|
||||
<body>
|
||||
<div class="box">
|
||||
<div id="header" class="row header">
|
||||
<a href="https://www.kepware.com/"><img class="logo" src="static\images\Kepware-Logo-800px.png" class="logo" alt="Kepware Logo" width="150px;"></a>
|
||||
<!--<a href=""><img class="logo" src="static\images\PD.png" class="logo" alt="PD Logo" width="150px;"></a>-->
|
||||
<label id="exampleslogantop" float="center">Example Code Example Code Example Code Example Code Example Code Example Code Example Code</label>
|
||||
<div id="statsBar">you
|
||||
<ul>
|
||||
<li id="connectedUserTxt"></li>
|
||||
<label class="hideAfterConnect" for="userName"><strong>User: </strong></label>
|
||||
<input class="hideAfterConnect" id="userName" type="text" value="Administrator"></input>
|
||||
<label class="hideAfterConnect" for="userPass"><strong>PW: </strong></label>
|
||||
<input class="hideAfterConnect" id="userPass" type="password"></input>
|
||||
<label class="hideAfterConnect" for="server"><strong>IP and Port: </strong></label>
|
||||
<input class="hideAfterConnect" id="server" type="text" value="127.0.0.1:57412"></input>
|
||||
<!--Change your default IP here-->
|
||||
<input id="updateConfig" type="button" value="Connect" class="inputButton "></input>
|
||||
<li id="connectedTo"><strong>Connected to:</strong>Not Connected</li>
|
||||
<li id="channelCount"><strong>No. of Channels:</strong>Not Connected</li>
|
||||
<li id="deviceCount"><strong>No. of Devices:</strong>Not Connected</li>
|
||||
<li><strong>Debug Mode: <input id="debugState" type="checkbox"></strong></li>
|
||||
<button id="readProjObj" class="inputButton">Refresh Project Tree</button>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- End Stats bar-->
|
||||
<div id="mainNav">
|
||||
<li><a class="active" id="v6Configurator">Configurator</a></li>
|
||||
<li><a id="useCase1">Subroutine Demo</a></li>
|
||||
<li><a id="iotGateway">IoT Gateway</a></li>
|
||||
</div>
|
||||
<!--End of Main Nav-->
|
||||
</div>
|
||||
<!--End Header-->
|
||||
|
||||
|
||||
<div id="maincontainer" class="row content">
|
||||
<div class="card" id="deviceList">
|
||||
<div class="supporting-text">
|
||||
<h4>Tree View</h4>
|
||||
<div>Select a Channel or Device object in order to view and modify its properties.</div>
|
||||
<div id="deviceTree">Click "Connect" above to load the project tree.</div>
|
||||
<button id="deleteChannel" class="inputButton">Delete Channel</button>
|
||||
<button id="deleteDevice" class="inputButton">Delete Device</button>
|
||||
</div>
|
||||
<!-- End of Supporting text for device List-->
|
||||
</div>
|
||||
<!-- End deviceList Card-->
|
||||
|
||||
<div class="card" id="configurator">
|
||||
<div class="supporting-text">
|
||||
<!--Nav Menu-->
|
||||
<h4>Asset Creation and Modification</h4>
|
||||
<ul id="assetCreationNav">
|
||||
<li><a class="active" id="displayChannelPanel">Channel</a></li>
|
||||
<li><a id="displayDevicePanel">Device</a></li>
|
||||
<li><a id="displayTagPanel">Tag</a></li>
|
||||
</ul>
|
||||
<div id="channelPanel">
|
||||
<p>Enter the Channel to create or the Channel properties you wish to modify.</p>
|
||||
<label for="channel">Channel Name</label>
|
||||
<input name="channel" id="channel" type="text" value="Channel1" maxlength="256" size="20">
|
||||
|
||||
<label for="channelType">Channel Type</label>
|
||||
<select id="channelType">
|
||||
<option value="ABB Totalflow">ABB Totalflow</option>
|
||||
<option value="Allen-Bradley ControlLogix Ethernet">Allen-Bradley ControlLogix Ethernet</option>
|
||||
<option value="Simulator">Simulator</option>
|
||||
<option value="Modbus TCP/IP Ethernet">Modbus TCP/IP Ethernet</option>
|
||||
<option value="Siemens TCP/IP Ethernet">Siemens TCP/IP Ethernet</option>
|
||||
</select>
|
||||
|
||||
<input id="createCh" type="button" value="Create" class="inputButton"></input>
|
||||
<input id="modCh" type="button" value="Modify" class="inputButton"></input>
|
||||
</div>
|
||||
<!--End of channelPanel-->
|
||||
<div id="devicePanel">
|
||||
<p>Enter the Device to create or the Device properties you wish to modify.</p>
|
||||
<label for="device">Device Name</label>
|
||||
<input name="device" id="device" type="text" value="Device1" maxlength="256" size="20">
|
||||
<label for="deviceId">Device ID</label>
|
||||
<input name="deviceId" id="deviceId" type="text" maxlength="256" size="20" value="<255.255.255.255>.255">
|
||||
<input id="createDevice" type="button" value="Create" class="inputButton"></input>
|
||||
<input id="modDev" type="button" value="Modify" class="inputButton"></input>
|
||||
</div>
|
||||
<!--End of devicePanel-->
|
||||
<div id="tagPanel">
|
||||
<!--<p>Enter the Tag to create or the Tag properties you wish to modify.</p>-->
|
||||
<label for="tag">Tag Name</label>
|
||||
<input name="tag" id="tag" type="text" maxlength="256" size="20" value="Tag1"></input>
|
||||
<label for="tagAddr">Tag Address</label>
|
||||
<input name="tagAddr" id="tagAddr" type="text" maxlength="256" size="20" value="400001"></input>
|
||||
<label for="tagType">Tag Data Type</label>
|
||||
<input name="tagType" id="tagType" type="text" maxlength="256" size="20" value="-1"></input>
|
||||
<input id="createTag" type="button" value="Create" class="inputButton"></input>
|
||||
<input id="modTag" type="button" value="Modify" class="inputButton"></input>
|
||||
<!--no way currently to mod tags-->
|
||||
</div>
|
||||
<!--End of tagPanel-->
|
||||
</div>
|
||||
<!--End of Supporting Text for configurator-->
|
||||
</div>
|
||||
<!--End of configurator-->
|
||||
|
||||
<div class="card" id="useCase1Panel">
|
||||
<div class="supporting-text">
|
||||
<h4>Predefined Routines</h4>
|
||||
<p>This Button creates a bunch of simulator and Modbus channels, complete with devices and Tags</p>
|
||||
<button id="delAll" class="inputButton">Delete All</button>
|
||||
<p>This Button creates a bunch of simulator and Modbus channels, complete with devices and Tags</p>
|
||||
<button id="demoProj" class="inputButton">Demo Project</button>
|
||||
<p>Create Templates for various sites or machines.</p>
|
||||
<button id="templateA" class="inputButton">A</button>
|
||||
<button id="templateB" class="inputButton">B</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--End useCase1Panel-->
|
||||
|
||||
<div class="card" id="iotGatewayPanel">
|
||||
<div class="supporting-text">
|
||||
<h4>IoT Gateway</h4>
|
||||
<p>Name of REST Server </p>
|
||||
<input id='restServerName' value='Rest_Server'></input>
|
||||
<input id='restServerPort' value='39320'></input>
|
||||
<button id="createRESTServer" class="inputButton">Create REST Server</button>
|
||||
<button id="deleteRESTServer" class="inputButton">Delete REST Server</button>
|
||||
<button id="readTag" class="inputButton">Read Tag</button>
|
||||
<input id="readNonStop" type="checkbox">
|
||||
<p id="tagValue">Select the Tag and click read Tag to see the value</p>
|
||||
</div>
|
||||
</div>
|
||||
<!--End iotGatewayPanel-->
|
||||
|
||||
<div class="card" id="jsonObject">
|
||||
<div class="supporting-text" id="dropdownContainer">
|
||||
<h4>Data Viewer</h4>
|
||||
<!--<p>Import a file to create Objects in the Configuration. Modify the JSON in the text editor to make object changes.</p>-->
|
||||
<div id="jsonConfigNav">
|
||||
<li><a class="active" id="displayText">Text input</a></li>
|
||||
<li><a id="displayTree">Tree View</a></li>
|
||||
<li><a id="displayTagList">Tag List</a></li>
|
||||
</div>
|
||||
<div id="textJsonEditor">
|
||||
<textarea id="textJsonInput"></textarea>
|
||||
</div>
|
||||
<!--End of Text Input-->
|
||||
<div id="jsonEditorContainer">
|
||||
<div id="jsoneditor"></div>
|
||||
</div>
|
||||
<!--End of jsonEditor-->
|
||||
<div id="tagListContainer">
|
||||
<table id="tagReadResults">
|
||||
<tr align="left">
|
||||
<th>Tag Name</th>
|
||||
<th>Address</th>
|
||||
</tr>
|
||||
<tr align="left">
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<p id="jsonButtons">
|
||||
<div class="drop-down-container">
|
||||
<div class="dropdown">
|
||||
<button class="inputButton dropbtn">Import JSON Template</button>
|
||||
<div class="dropdown-content">
|
||||
<a href="#Modbus.txt" src="Modbus.txt" id="importMdbsJSON">Modbus</a>
|
||||
<a href="#ABTemplate.txt" src="ABTemplate.txt" id="importABJSON">AB ControlLogix</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="createAll" class="inputButton">Create All Objects in Template</button>
|
||||
<button id="deleteTag" class="inputButton">Delete Selected Tag</button>
|
||||
<button id="addtoIoTGateway" class="inputButton">Add to IoTGateway</button>
|
||||
</p>
|
||||
<!--End of json Configurator inputs-->
|
||||
</div>
|
||||
</div>
|
||||
<!--End jsonObject-->
|
||||
</div>
|
||||
<!-- End Main Container-->
|
||||
<div class="row footer">
|
||||
<div id="results">
|
||||
<div class="supporting-text" id="resultsTable">
|
||||
<h4>Custom Client Diagnostics</h4>
|
||||
<table id="resultsRow">
|
||||
<tr align="left">
|
||||
<th>Time</th>
|
||||
<th>Event</th>
|
||||
<th>HTTP Status</th>
|
||||
</tr>
|
||||
<tr align="left">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="supporting-text" id="eventsTable">
|
||||
<h4>Custom Event Diagnostics</h4>
|
||||
<table id="eventsRow">
|
||||
<tr align="left">
|
||||
<th>Server Time</th>
|
||||
<th>Event Type</th>
|
||||
<th>Message</th>
|
||||
</tr>
|
||||
<tr align="left">
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!--End Results-->
|
||||
<div id="copyright">
|
||||
<p id="examplesloganbottom">Demo Purpose Only Demo Purpose Only Demo Purpose Only Demo Purpose</p>
|
||||
<p id="copyrightquotes">© 2016 Kepware Technologies. All Rights Reserved. Best viewed with Firefox. Not supported on IE/Edge.</p>
|
||||
</div>
|
||||
<!--End Copyright-->
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!--End of Box-->
|
||||
</body>
|
||||
|
||||
<script src="JS/globalVariables.js"></script>
|
||||
<script src="JS/v6CommonAPI.js"></script>
|
||||
<script src="JS/v6_1CommonAPI.js"></script>
|
||||
<script src="JS/engine.js"></script>
|
||||
<script src="JS/main.js"></script>
|
||||
<script src="JS/useCase1.js"></script>
|
||||
|
||||
</html>
|
||||
5
test/kepware/jQuery/jquery-1.12.1.min.js
vendored
Normal file
6
test/kepware/jsTree/jstree.min.js
vendored
Normal file
BIN
test/kepware/jsTree/themes/default-dark/32px.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
test/kepware/jsTree/themes/default-dark/40px.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
1146
test/kepware/jsTree/themes/default-dark/style.css
Normal file
1
test/kepware/jsTree/themes/default-dark/style.min.css
vendored
Normal file
BIN
test/kepware/jsTree/themes/default-dark/throbber.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
test/kepware/jsTree/themes/default/32px.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
test/kepware/jsTree/themes/default/40px.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
1102
test/kepware/jsTree/themes/default/style.css
Normal file
1
test/kepware/jsTree/themes/default/style.min.css
vendored
Normal file
BIN
test/kepware/jsTree/themes/default/throbber.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
test/kepware/static/images/Kepware-Logo-800px.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
test/kepware/static/images/PD_.PNG
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
test/kepware/static/images/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 27 KiB |