mirror of
https://github.com/hanzoai/jube-fork.git
synced 2026-11-02 14:29:36 +00:00
227 lines
6.8 KiB
HTML
Executable File
227 lines
6.8 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>TreeList in Dialog</title>
|
|
<meta charset="utf-8">
|
|
<link href="../content/shared/styles/examples-offline.css" rel="stylesheet">
|
|
<link href="../../styles/kendo.common.min.css" rel="stylesheet">
|
|
<link href="../../styles/kendo.rtl.min.css" rel="stylesheet">
|
|
<link href="../../styles/kendo.default.min.css" rel="stylesheet">
|
|
<link href="../../styles/kendo.default.mobile.min.css" rel="stylesheet">
|
|
<script src="../../js/jquery.min.js"></script>
|
|
<script src="../../js/jszip.min.js"></script>
|
|
<script src="../../js/kendo.all.min.js"></script>
|
|
<script src="../content/shared/js/console.js"></script>
|
|
<script>
|
|
|
|
</script>
|
|
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<a class="offline-button" href="../index.html">Back</a>
|
|
|
|
<div id="example">
|
|
<div id="dialog"></div>
|
|
<div id="add-product" class="demo-section k-content">
|
|
<p class="title">Members</p>
|
|
<div id="result"></div>
|
|
<button id="pickEmployeesButton" class="k-primary">Pick members</button>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
$(document).ready(function () {
|
|
var dialog = $("#dialog").kendoDialog({
|
|
width: "800px",
|
|
visible: false,
|
|
title: "Members",
|
|
closable: true,
|
|
modal: false,
|
|
content: "<div id='treelist'></div>",
|
|
actions: [
|
|
{ text: 'Cancel' },
|
|
{ text: 'OK', primary: true, action: actionOK }
|
|
],
|
|
initOpen: initOpen
|
|
});
|
|
|
|
$("#pickEmployeesButton").kendoButton({
|
|
click: openDialog
|
|
});
|
|
|
|
var crudServiceBaseUrl = "https://demos.telerik.com/kendo-ui/service";
|
|
|
|
var dataSource = new kendo.data.TreeListDataSource({
|
|
transport: {
|
|
read: {
|
|
url: crudServiceBaseUrl + "/EmployeeDirectory/All",
|
|
dataType: "jsonp"
|
|
},
|
|
update: {
|
|
url: crudServiceBaseUrl + "/EmployeeDirectory/Update",
|
|
dataType: "jsonp"
|
|
},
|
|
destroy: {
|
|
url: crudServiceBaseUrl + "/EmployeeDirectory/Destroy",
|
|
dataType: "jsonp"
|
|
},
|
|
create: {
|
|
url: crudServiceBaseUrl + "/EmployeeDirectory/Create",
|
|
dataType: "jsonp"
|
|
},
|
|
parameterMap: function (options, operation) {
|
|
if (operation !== "read" && options.models) {
|
|
return { models: kendo.stringify(options.models) };
|
|
}
|
|
}
|
|
},
|
|
batch: true,
|
|
schema: {
|
|
model: {
|
|
id: "EmployeeId",
|
|
parentId: "ReportsTo",
|
|
fields: {
|
|
EmployeeId: { type: "number", editable: false, nullable: false },
|
|
ReportsTo: { nullable: true, type: "number" },
|
|
FirstName: { validation: { required: true } },
|
|
LastName: { validation: { required: true } },
|
|
HireDate: { type: "date" },
|
|
Phone: { type: "string" },
|
|
HireDate: { type: "date" },
|
|
BirthDate: { type: "date" },
|
|
Extension: { type: "number", validation: { min: 0, required: true } },
|
|
Position: { type: "string" }
|
|
},
|
|
expanded: true
|
|
}
|
|
}
|
|
});
|
|
|
|
$("#treelist").kendoTreeList({
|
|
dataSource: dataSource,
|
|
height: 380,
|
|
filterable: true,
|
|
sortable: true,
|
|
editable: true,
|
|
toolbar: ["create"],
|
|
columns: [
|
|
{
|
|
headerTemplate: "<input type='checkbox' onclick='toggleAll(event)' />",
|
|
template: "<input type='checkbox' class='checkbox' data-bind='checked: checked' />",
|
|
width: 50,
|
|
filterable: false
|
|
},
|
|
{
|
|
field: "FirstName", title: "First Name", width: 170,
|
|
expandable: true
|
|
},
|
|
{ field: "LastName", title: "Last Name", width: 110 },
|
|
{ field: "Position" },
|
|
{
|
|
title: "Edit", command: ["edit", "destroy"], width: 250,
|
|
attributes: {
|
|
style: "text-align: center;"
|
|
}
|
|
}
|
|
],
|
|
dataBound: treeListDataBound
|
|
});
|
|
});
|
|
|
|
function treeListDataBound(e) {
|
|
$(".checkbox").bind("change", function (e) {
|
|
var row = $(e.target).closest("tr");
|
|
this.checked ? row.addClass("k-state-selected") : row.removeClass("k-state-selected");
|
|
});
|
|
}
|
|
|
|
function toggleAll(e) {
|
|
if (e.target.checked) {
|
|
$("#treelist [role='row'] .checkbox").each(function () {
|
|
this.checked = "checked";
|
|
});
|
|
}
|
|
else {
|
|
$("#treelist [role='row'] .checkbox").removeAttr("checked");
|
|
}
|
|
|
|
$("#treelist [role='row'] .checkbox").trigger("change");
|
|
}
|
|
|
|
function initOpen(e) {
|
|
setTimeout(function () {
|
|
$("#treelist").data("kendoTreeList").refresh();
|
|
})
|
|
}
|
|
|
|
function openDialog(e) {
|
|
$("#dialog").data("kendoDialog").open();
|
|
}
|
|
|
|
function actionOK(e) {
|
|
var treelist = $("#treelist").data("kendoTreeList");
|
|
var items = treelist.element.find(".k-state-selected");
|
|
updateResult(items, treelist);
|
|
}
|
|
|
|
function updateResult(items, treelist) {
|
|
if (items.length > 0) {
|
|
var result = "";
|
|
for (var i = 0; i < items.length; i++) {
|
|
var dataItem = treelist.dataItem(items[i]);
|
|
result += "<span class='selectedName'>" + dataItem.FirstName + " " + dataItem.LastName + "</span>";
|
|
}
|
|
} else {
|
|
result = "No members selected.";
|
|
}
|
|
|
|
$("#result").html(result);
|
|
}
|
|
|
|
function updateSelectedCount(treeView) {
|
|
$(".selected-count").html(getCheckedItems(treeView).length + " Employees selected");
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
#example {
|
|
min-height: 200px;
|
|
}
|
|
|
|
|
|
#example .title {
|
|
font-weight: bold;
|
|
margin-bottom: 25px;
|
|
}
|
|
|
|
.selectedName {
|
|
padding: 5px 10px;
|
|
background: #aaa;
|
|
color: white;
|
|
float: left;
|
|
margin-right: 5px;
|
|
margin-bottom: 5px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
#result {
|
|
padding-bottom: 15px;
|
|
}
|
|
|
|
#result:after {
|
|
content: '';
|
|
display: block;
|
|
clear: both;
|
|
}
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|