<!DOCTYPE html>
<html>
<head>
<title>Editor</title>
<link data-require="bootstrap-css@*" data-semver="3.2.0" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" />
<link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2013.3.1119/styles/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="http://cdn.kendostatic.com/2013.3.1119/styles/kendo.default.min.css" rel="stylesheet" type="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2013.3.1119/js/kendo.all.min.js"></script>
<script type="text/javascript" src="app.js"></script>
<script src="http://demos.telerik.com/kendo-ui/content/shared/js/products.js"></script>
</head>
<body>
<div id="entityList" class="entities"></div>
<div>
<textarea id="editor" class="editorArea" style="width:100%; height:400px;" placeholder="Hello"></textarea>
</div>
<div id="instructions">
<h4>Instructions of use</h4>
<ul>
<li>Drag a symbol onto the editor</li>
<li>Complete an expression by typing in variables</li>
<li>Click Play icon to view the expression in HTML format</li>
<li>Click Trash icon to clear the expression from the editor</li>
</ul>
</div>
</body>
</html>
html, body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
body {
font: 12px/1.5 Tahoma,sans-serif;
}
.entities {
list-style-type: none;
display: inline-block;
margin-right: 15px;
font-size: 18px;
padding: 15px;
padding-left: 15px;
cursor: pointer;
border: 0px;
}
.entityIcon {
font-size: 16px;
color: blue;
}
.divEditor {
height: 200px;
margin: 10px;
border: 1px solid black;
}
.overlay {
opacity: 0;
background-color: blue;
width: 100%;
height: 400px;
z-index: 10;
margin: 0;
padding: 0;
position: absolute;
}
.k-editor .k-clear
{
background: 50% 50% no-repeat url(http://png-4.findicons.com/files/icons/2675/premium_pixels/16/trash.png);
}
.k-editor .k-run
{
background: 50% 50% no-repeat url(https://jira.appcelerator.org/secure/attachment/15016/run.png);
}
$(document).ready(function() {
/* kendo List */
var htmlEntities = [{
"id": 1,
"name": "+"
}, {
"id": 2,
"name": "−"
}, {
"id": 3,
"name": "×"
}, {
"id": 4,
"name": "÷"
}, {
"id": 5,
"name": "%"
},
{
"id": 6,
"name": "("
},{
"id": 7,
"name": ")"
}];
var entityList_ds = new kendo.data.DataSource({
data: htmlEntities
});
var entityListView = $("#entityList").kendoListView({
dataSource: entityList_ds,
template: "<li data-id='${uid}' class='entities'>#=name#</li>"
}).data("kendoListView");
$("#entityList").kendoDraggable({
filter: "li",
hint: function(element) {
var ele = $("<b class='entityIcon'>" + element.html() + "</b>");
return ele;
},
cursorOffset: {
top: -30,
left: 1
},
group: "entityGroup",
dragstart: function(e) {
addOverlay();
},
dragend: function(e) {
removeOverlay();
editor.paste(e.currentTarget.closest('li').text());
}
});
/* kendo Editor */
var editor = $("#editor").kendoEditor({
"tools": [
"bold",
"italic",
"underline",
"subscript",
"superscript",
"foreColor",
"backColor", {
name: "run",
tooltip: "Run"
}, {
name: "clear",
tooltip: "Clear",
exec: function(e) {
var editor = $(this).data("kendoEditor");
editor.value('');
}
}
]
}).data("kendoEditor");
var eFrame = $($('#editor').data().kendoEditor.body);
function addOverlay() {
$(document).find(".k-editable-area").prepend('<div id="overlay" class="overlay"></div>');
}
function removeOverlay() {
$('#overlay').remove();
}
$("#overlay").click();
$(".k-run").click(function(e) {
var editor = $("#editor").data("kendoEditor");
var expression = editor.value();
alert(expression);
});
});