new ui with AdminLTE
This commit is contained in:
1 parent
98e14b92ab
commit
6afaad0d33
1784 files changed
+582732
-6
No files matched your search
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Basic Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Basic Scenario</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
filtering: true,
|
||||
editing: true,
|
||||
inserting: true,
|
||||
sorting: true,
|
||||
paging: true,
|
||||
autoload: true,
|
||||
pageSize: 15,
|
||||
pageButtonCount: 5,
|
||||
deleteConfirm: "Do you really want to delete the client?",
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married", sorting: false },
|
||||
{ type: "control" }
|
||||
]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Batch Delete</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Batch Delete</h1>
|
||||
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "50%",
|
||||
width: "100%",
|
||||
autoload: true,
|
||||
confirmDeleting: false,
|
||||
paging: true,
|
||||
controller: {
|
||||
loadData: function() {
|
||||
return db.clients;
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
headerTemplate: function() {
|
||||
return $("<button>").attr("type", "button").text("Delete")
|
||||
.on("click", function () {
|
||||
deleteSelectedItems();
|
||||
});
|
||||
},
|
||||
itemTemplate: function(_, item) {
|
||||
return $("<input>").attr("type", "checkbox")
|
||||
.prop("checked", $.inArray(item, selectedItems) > -1)
|
||||
.on("change", function () {
|
||||
$(this).is(":checked") ? selectItem(item) : unselectItem(item);
|
||||
});
|
||||
},
|
||||
align: "center",
|
||||
width: 50
|
||||
},
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 }
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
var selectedItems = [];
|
||||
|
||||
var selectItem = function(item) {
|
||||
selectedItems.push(item);
|
||||
};
|
||||
|
||||
var unselectItem = function(item) {
|
||||
selectedItems = $.grep(selectedItems, function(i) {
|
||||
return i !== item;
|
||||
});
|
||||
};
|
||||
|
||||
var deleteSelectedItems = function() {
|
||||
if(!selectedItems.length || !confirm("Are you sure?"))
|
||||
return;
|
||||
|
||||
deleteClientsFromDb(selectedItems);
|
||||
|
||||
var $grid = $("#jsGrid");
|
||||
$grid.jsGrid("option", "pageIndex", 1);
|
||||
$grid.jsGrid("loadData");
|
||||
|
||||
selectedItems = [];
|
||||
};
|
||||
|
||||
var deleteClientsFromDb = function(deletingClients) {
|
||||
db.clients = $.map(db.clients, function(client) {
|
||||
return ($.inArray(client, deletingClients) > -1) ? null : client;
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,97 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Custom Grid Field Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css' />
|
||||
|
||||
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
|
||||
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
|
||||
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
|
||||
<style>
|
||||
.hasDatepicker {
|
||||
width: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.ui-datepicker * {
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-size: 14px;
|
||||
font-weight: 300 !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Custom Grid DateField</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
var MyDateField = function(config) {
|
||||
jsGrid.Field.call(this, config);
|
||||
};
|
||||
|
||||
MyDateField.prototype = new jsGrid.Field({
|
||||
sorter: function(date1, date2) {
|
||||
return new Date(date1) - new Date(date2);
|
||||
},
|
||||
|
||||
itemTemplate: function(value) {
|
||||
return new Date(value).toDateString();
|
||||
},
|
||||
|
||||
insertTemplate: function(value) {
|
||||
return this._insertPicker = $("<input>").datepicker({ defaultDate: new Date() });
|
||||
},
|
||||
|
||||
editTemplate: function(value) {
|
||||
return this._editPicker = $("<input>").datepicker().datepicker("setDate", new Date(value));
|
||||
},
|
||||
|
||||
insertValue: function() {
|
||||
return this._insertPicker.datepicker("getDate").toISOString();
|
||||
},
|
||||
|
||||
editValue: function() {
|
||||
return this._editPicker.datepicker("getDate").toISOString();
|
||||
}
|
||||
});
|
||||
|
||||
jsGrid.fields.myDateField = MyDateField;
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
inserting: true,
|
||||
editing: true,
|
||||
sorting: true,
|
||||
paging: true,
|
||||
fields: [
|
||||
{ name: "Account", width: 150, align: "center" },
|
||||
{ name: "Name", type: "text" },
|
||||
{ name: "RegisterDate", type: "myDateField", width: 100, align: "center" },
|
||||
{ type: "control", editButton: false, modeSwitchButton: false }
|
||||
],
|
||||
data: db.users
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Custom Load Indicator</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/spin.js/2.3.1/spin.min.js"></script>
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.textarea.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
|
||||
<style>
|
||||
.rating {
|
||||
color: #F8CA03;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Custom Load Indicator</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "50%",
|
||||
width: "100%",
|
||||
sorting: true,
|
||||
paging: false,
|
||||
autoload: true,
|
||||
controller: {
|
||||
loadData: function() {
|
||||
var d = $.Deferred();
|
||||
|
||||
$.ajax({
|
||||
url: "http://services.odata.org/V3/(S(3mnweai3qldmghnzfshavfok))/OData/OData.svc/Products",
|
||||
dataType: "json"
|
||||
}).done(function(response) {
|
||||
setTimeout(function() {
|
||||
d.resolve(response.value);
|
||||
}, 2000);
|
||||
});
|
||||
|
||||
return d.promise();
|
||||
}
|
||||
},
|
||||
loadIndicator: function(config) {
|
||||
var container = config.container[0];
|
||||
var spinner = new Spinner();
|
||||
|
||||
return {
|
||||
show: function() {
|
||||
spinner.spin(container);
|
||||
},
|
||||
hide: function() {
|
||||
spinner.stop();
|
||||
}
|
||||
};
|
||||
},
|
||||
fields: [
|
||||
{ name: "Name", type: "text" },
|
||||
{ name: "Description", type: "textarea", width: 150 },
|
||||
{ name: "Rating", type: "number", width: 50, align: "center",
|
||||
itemTemplate: function(value) {
|
||||
return $("<div>").addClass("rating").append(Array(value + 1).join("★"));
|
||||
}
|
||||
},
|
||||
{ name: "Price", type: "number", width: 50,
|
||||
itemTemplate: function(value) {
|
||||
return value.toFixed(2) + "$"; }
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Custom Row Renderer</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
|
||||
<style>
|
||||
.client-photo { float: left; margin: 0 20px 0 10px; }
|
||||
.client-photo img { border-radius: 50%; border: 1px solid #ddd; }
|
||||
.client-info { margin-top: 10px; }
|
||||
.client-info p { line-height: 25px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Custom Row Renderer</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "80%",
|
||||
width: "50%",
|
||||
autoload: true,
|
||||
paging: true,
|
||||
controller: {
|
||||
loadData: function() {
|
||||
var deferred = $.Deferred();
|
||||
|
||||
$.ajax({
|
||||
url: 'http://api.randomuser.me/?results=40',
|
||||
dataType: 'jsonp',
|
||||
success: function(data){
|
||||
deferred.resolve(data.results);
|
||||
}
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
},
|
||||
rowRenderer: function(item) {
|
||||
var user = item;
|
||||
var $photo = $("<div>").addClass("client-photo").append($("<img>").attr("src", user.picture.large));
|
||||
var $info = $("<div>").addClass("client-info")
|
||||
.append($("<p>").append($("<strong>").text(user.name.first.capitalize() + " " + user.name.last.capitalize())))
|
||||
.append($("<p>").text("Location: " + user.location.city.capitalize() + ", " + user.location.street))
|
||||
.append($("<p>").text("Email: " + user.email))
|
||||
.append($("<p>").text("Phone: " + user.phone))
|
||||
.append($("<p>").text("Cell: " + user.cell));
|
||||
|
||||
return $("<tr>").append($("<td>").append($photo).append($info));
|
||||
},
|
||||
fields: [
|
||||
{ title: "Clients" }
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
String.prototype.capitalize = function() {
|
||||
return this.charAt(0).toUpperCase() + this.slice(1);
|
||||
};
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Custom View Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
|
||||
<style>
|
||||
.config-panel {
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
background: #fcfcfc;
|
||||
border: 1px solid #e9e9e9;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.config-panel label {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Custom View</h1>
|
||||
<div class="config-panel">
|
||||
<label><input id="heading" type="checkbox" checked /> Heading</label>
|
||||
<label><input id="filtering" type="checkbox" checked /> Filtering</label>
|
||||
<label><input id="inserting" type="checkbox" /> Inserting</label>
|
||||
<label><input id="editing" type="checkbox" checked /> Editing</label>
|
||||
<label><input id="paging" type="checkbox" checked /> Paging</label>
|
||||
<label><input id="sorting" type="checkbox" checked /> Sorting</label>
|
||||
<label><input id="selecting" type="checkbox" checked /> Selecting</label>
|
||||
</div>
|
||||
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
filtering: true,
|
||||
editing: true,
|
||||
sorting: true,
|
||||
paging: true,
|
||||
autoload: true,
|
||||
pageSize: 15,
|
||||
pageButtonCount: 5,
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married", sorting: false },
|
||||
{ type: "control", modeSwitchButton: false, editButton: false }
|
||||
]
|
||||
});
|
||||
|
||||
$(".config-panel input[type=checkbox]").on("click", function() {
|
||||
var $cb = $(this);
|
||||
$("#jsGrid").jsGrid("option", $cb.attr("id"), $cb.is(":checked"));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+212
@@ -0,0 +1,212 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Data Manipulation</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
|
||||
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
|
||||
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
|
||||
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
|
||||
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
|
||||
<style>
|
||||
.ui-widget *, .ui-widget input, .ui-widget select, .ui-widget button {
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-size: 14px;
|
||||
font-weight: 300 !important;
|
||||
}
|
||||
|
||||
.details-form-field input,
|
||||
.details-form-field select {
|
||||
width: 250px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.details-form-field {
|
||||
margin: 30px 0;
|
||||
}
|
||||
|
||||
.details-form-field:first-child {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.details-form-field:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.details-form-field button {
|
||||
display: block;
|
||||
width: 100px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
input.error, select.error {
|
||||
border: 1px solid #ff9999;
|
||||
background: #ffeeee;
|
||||
}
|
||||
|
||||
label.error {
|
||||
float: right;
|
||||
margin-left: 100px;
|
||||
font-size: .8em;
|
||||
color: #ff6666;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Data Manipulation</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<div id="detailsDialog">
|
||||
<form id="detailsForm">
|
||||
<div class="details-form-field">
|
||||
<label for="name">Name:</label>
|
||||
<input id="name" name="name" type="text" />
|
||||
</div>
|
||||
<div class="details-form-field">
|
||||
<label for="age">Age:</label>
|
||||
<input id="age" name="age" type="number" />
|
||||
</div>
|
||||
<div class="details-form-field">
|
||||
<label for="address">Address:</label>
|
||||
<input id="address" name="address" type="text" />
|
||||
</div>
|
||||
<div class="details-form-field">
|
||||
<label for="country">Country:</label>
|
||||
<select id="country" name="country">
|
||||
<option value="">(Select)</option>
|
||||
<option value="1">United States</option>
|
||||
<option value="2">Canada</option>
|
||||
<option value="3">United Kingdom</option>
|
||||
<option value="4">France</option>
|
||||
<option value="5">Brazil</option>
|
||||
<option value="6">China</option>
|
||||
<option value="7">Russia</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="details-form-field">
|
||||
<label for="married">Is Married</label>
|
||||
<input id="married" name="married" type="checkbox" />
|
||||
</div>
|
||||
<div class="details-form-field">
|
||||
<button type="submit" id="save">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
editing: true,
|
||||
autoload: true,
|
||||
paging: true,
|
||||
deleteConfirm: function(item) {
|
||||
return "The client \"" + item.Name + "\" will be removed. Are you sure?";
|
||||
},
|
||||
rowClick: function(args) {
|
||||
showDetailsDialog("Edit", args.item);
|
||||
},
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married", sorting: false },
|
||||
{
|
||||
type: "control",
|
||||
modeSwitchButton: false,
|
||||
editButton: false,
|
||||
headerTemplate: function() {
|
||||
return $("<button>").attr("type", "button").text("Add")
|
||||
.on("click", function () {
|
||||
showDetailsDialog("Add", {});
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
$("#detailsDialog").dialog({
|
||||
autoOpen: false,
|
||||
width: 400,
|
||||
close: function() {
|
||||
$("#detailsForm").validate().resetForm();
|
||||
$("#detailsForm").find(".error").removeClass("error");
|
||||
}
|
||||
});
|
||||
|
||||
$("#detailsForm").validate({
|
||||
rules: {
|
||||
name: "required",
|
||||
age: { required: true, range: [18, 150] },
|
||||
address: { required: true, minlength: 10 },
|
||||
country: "required"
|
||||
},
|
||||
messages: {
|
||||
name: "Please enter name",
|
||||
age: "Please enter valid age",
|
||||
address: "Please enter address (more than 10 chars)",
|
||||
country: "Please select country"
|
||||
},
|
||||
submitHandler: function() {
|
||||
formSubmitHandler();
|
||||
}
|
||||
});
|
||||
|
||||
var formSubmitHandler = $.noop;
|
||||
|
||||
var showDetailsDialog = function(dialogType, client) {
|
||||
$("#name").val(client.Name);
|
||||
$("#age").val(client.Age);
|
||||
$("#address").val(client.Address);
|
||||
$("#country").val(client.Country);
|
||||
$("#married").prop("checked", client.Married);
|
||||
|
||||
formSubmitHandler = function() {
|
||||
saveClient(client, dialogType === "Add");
|
||||
};
|
||||
|
||||
$("#detailsDialog").dialog("option", "title", dialogType + " Client")
|
||||
.dialog("open");
|
||||
};
|
||||
|
||||
var saveClient = function(client, isNew) {
|
||||
$.extend(client, {
|
||||
Name: $("#name").val(),
|
||||
Age: parseInt($("#age").val(), 10),
|
||||
Address: $("#address").val(),
|
||||
Country: parseInt($("#country").val(), 10),
|
||||
Married: $("#married").is(":checked")
|
||||
});
|
||||
|
||||
$("#jsGrid").jsGrid(isNew ? "insertItem" : "updateItem", client);
|
||||
|
||||
$("#detailsDialog").dialog("close");
|
||||
};
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,884 @@
|
||||
(function() {
|
||||
|
||||
var db = {
|
||||
|
||||
loadData: function(filter) {
|
||||
return $.grep(this.clients, function(client) {
|
||||
return (!filter.Name || client.Name.indexOf(filter.Name) > -1)
|
||||
&& (filter.Age === undefined || client.Age === filter.Age)
|
||||
&& (!filter.Address || client.Address.indexOf(filter.Address) > -1)
|
||||
&& (!filter.Country || client.Country === filter.Country)
|
||||
&& (filter.Married === undefined || client.Married === filter.Married);
|
||||
});
|
||||
},
|
||||
|
||||
insertItem: function(insertingClient) {
|
||||
this.clients.push(insertingClient);
|
||||
},
|
||||
|
||||
updateItem: function(updatingClient) { },
|
||||
|
||||
deleteItem: function(deletingClient) {
|
||||
var clientIndex = $.inArray(deletingClient, this.clients);
|
||||
this.clients.splice(clientIndex, 1);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
window.db = db;
|
||||
|
||||
|
||||
db.countries = [
|
||||
{ Name: "", Id: 0 },
|
||||
{ Name: "United States", Id: 1 },
|
||||
{ Name: "Canada", Id: 2 },
|
||||
{ Name: "United Kingdom", Id: 3 },
|
||||
{ Name: "France", Id: 4 },
|
||||
{ Name: "Brazil", Id: 5 },
|
||||
{ Name: "China", Id: 6 },
|
||||
{ Name: "Russia", Id: 7 }
|
||||
];
|
||||
|
||||
db.clients = [
|
||||
{
|
||||
"Name": "Otto Clay",
|
||||
"Age": 61,
|
||||
"Country": 6,
|
||||
"Address": "Ap #897-1459 Quam Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Connor Johnston",
|
||||
"Age": 73,
|
||||
"Country": 7,
|
||||
"Address": "Ap #370-4647 Dis Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Lacey Hess",
|
||||
"Age": 29,
|
||||
"Country": 7,
|
||||
"Address": "Ap #365-8835 Integer St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Timothy Henson",
|
||||
"Age": 78,
|
||||
"Country": 1,
|
||||
"Address": "911-5143 Luctus Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Ramona Benton",
|
||||
"Age": 43,
|
||||
"Country": 5,
|
||||
"Address": "Ap #614-689 Vehicula Street",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Ezra Tillman",
|
||||
"Age": 51,
|
||||
"Country": 1,
|
||||
"Address": "P.O. Box 738, 7583 Quisque St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Dante Carter",
|
||||
"Age": 59,
|
||||
"Country": 1,
|
||||
"Address": "P.O. Box 976, 6316 Lorem, St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Christopher Mcclure",
|
||||
"Age": 58,
|
||||
"Country": 1,
|
||||
"Address": "847-4303 Dictum Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Ruby Rocha",
|
||||
"Age": 62,
|
||||
"Country": 2,
|
||||
"Address": "5212 Sagittis Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Imelda Hardin",
|
||||
"Age": 39,
|
||||
"Country": 5,
|
||||
"Address": "719-7009 Auctor Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Jonah Johns",
|
||||
"Age": 28,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 939, 9310 A Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Herman Rosa",
|
||||
"Age": 49,
|
||||
"Country": 7,
|
||||
"Address": "718-7162 Molestie Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Arthur Gay",
|
||||
"Age": 20,
|
||||
"Country": 7,
|
||||
"Address": "5497 Neque Street",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Xena Wilkerson",
|
||||
"Age": 63,
|
||||
"Country": 1,
|
||||
"Address": "Ap #303-6974 Proin Street",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Lilah Atkins",
|
||||
"Age": 33,
|
||||
"Country": 5,
|
||||
"Address": "622-8602 Gravida Ave",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Malik Shepard",
|
||||
"Age": 59,
|
||||
"Country": 1,
|
||||
"Address": "967-5176 Tincidunt Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Keely Silva",
|
||||
"Age": 24,
|
||||
"Country": 1,
|
||||
"Address": "P.O. Box 153, 8995 Praesent Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Hunter Pate",
|
||||
"Age": 73,
|
||||
"Country": 7,
|
||||
"Address": "P.O. Box 771, 7599 Ante, Road",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Mikayla Roach",
|
||||
"Age": 55,
|
||||
"Country": 5,
|
||||
"Address": "Ap #438-9886 Donec Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Upton Joseph",
|
||||
"Age": 48,
|
||||
"Country": 4,
|
||||
"Address": "Ap #896-7592 Habitant St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Jeanette Pate",
|
||||
"Age": 59,
|
||||
"Country": 2,
|
||||
"Address": "P.O. Box 177, 7584 Amet, St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kaden Hernandez",
|
||||
"Age": 79,
|
||||
"Country": 3,
|
||||
"Address": "366 Ut St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Kenyon Stevens",
|
||||
"Age": 20,
|
||||
"Country": 3,
|
||||
"Address": "P.O. Box 704, 4580 Gravida Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Jerome Harper",
|
||||
"Age": 31,
|
||||
"Country": 5,
|
||||
"Address": "2464 Porttitor Road",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Jelani Patel",
|
||||
"Age": 36,
|
||||
"Country": 2,
|
||||
"Address": "P.O. Box 541, 5805 Nec Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Keaton Oconnor",
|
||||
"Age": 21,
|
||||
"Country": 1,
|
||||
"Address": "Ap #657-1093 Nec, Street",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Bree Johnston",
|
||||
"Age": 31,
|
||||
"Country": 2,
|
||||
"Address": "372-5942 Vulputate Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Maisie Hodges",
|
||||
"Age": 70,
|
||||
"Country": 7,
|
||||
"Address": "P.O. Box 445, 3880 Odio, Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kuame Calhoun",
|
||||
"Age": 39,
|
||||
"Country": 2,
|
||||
"Address": "P.O. Box 609, 4105 Rutrum St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Carlos Cameron",
|
||||
"Age": 38,
|
||||
"Country": 5,
|
||||
"Address": "Ap #215-5386 A, Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Fulton Parsons",
|
||||
"Age": 25,
|
||||
"Country": 7,
|
||||
"Address": "P.O. Box 523, 3705 Sed Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Wallace Christian",
|
||||
"Age": 43,
|
||||
"Country": 3,
|
||||
"Address": "416-8816 Mauris Avenue",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Caryn Maldonado",
|
||||
"Age": 40,
|
||||
"Country": 1,
|
||||
"Address": "108-282 Nonummy Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Whilemina Frank",
|
||||
"Age": 20,
|
||||
"Country": 7,
|
||||
"Address": "P.O. Box 681, 3938 Egestas. Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Emery Moon",
|
||||
"Age": 41,
|
||||
"Country": 4,
|
||||
"Address": "Ap #717-8556 Non Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Price Watkins",
|
||||
"Age": 35,
|
||||
"Country": 4,
|
||||
"Address": "832-7810 Nunc Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Lydia Castillo",
|
||||
"Age": 59,
|
||||
"Country": 7,
|
||||
"Address": "5280 Placerat, Ave",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Lawrence Conway",
|
||||
"Age": 53,
|
||||
"Country": 1,
|
||||
"Address": "Ap #452-2808 Imperdiet St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kalia Nicholson",
|
||||
"Age": 67,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 871, 3023 Tellus Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Brielle Baxter",
|
||||
"Age": 45,
|
||||
"Country": 3,
|
||||
"Address": "Ap #822-9526 Ut, Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Valentine Brady",
|
||||
"Age": 72,
|
||||
"Country": 7,
|
||||
"Address": "8014 Enim. Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Rebecca Gardner",
|
||||
"Age": 57,
|
||||
"Country": 4,
|
||||
"Address": "8655 Arcu. Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Vladimir Tate",
|
||||
"Age": 26,
|
||||
"Country": 1,
|
||||
"Address": "130-1291 Non, Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Vernon Hays",
|
||||
"Age": 56,
|
||||
"Country": 4,
|
||||
"Address": "964-5552 In Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Allegra Hull",
|
||||
"Age": 22,
|
||||
"Country": 4,
|
||||
"Address": "245-8891 Donec St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Hu Hendrix",
|
||||
"Age": 65,
|
||||
"Country": 7,
|
||||
"Address": "428-5404 Tempus Ave",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Kenyon Battle",
|
||||
"Age": 32,
|
||||
"Country": 2,
|
||||
"Address": "921-6804 Lectus St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Gloria Nielsen",
|
||||
"Age": 24,
|
||||
"Country": 4,
|
||||
"Address": "Ap #275-4345 Lorem, Street",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Illiana Kidd",
|
||||
"Age": 59,
|
||||
"Country": 2,
|
||||
"Address": "7618 Lacus. Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Adria Todd",
|
||||
"Age": 68,
|
||||
"Country": 6,
|
||||
"Address": "1889 Tincidunt Road",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kirsten Mayo",
|
||||
"Age": 71,
|
||||
"Country": 1,
|
||||
"Address": "100-8640 Orci, Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Willa Hobbs",
|
||||
"Age": 60,
|
||||
"Country": 6,
|
||||
"Address": "P.O. Box 323, 158 Tristique St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Alexis Clements",
|
||||
"Age": 69,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 176, 5107 Proin Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Akeem Conrad",
|
||||
"Age": 60,
|
||||
"Country": 2,
|
||||
"Address": "282-495 Sed Ave",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Montana Silva",
|
||||
"Age": 79,
|
||||
"Country": 6,
|
||||
"Address": "P.O. Box 120, 9766 Consectetuer St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kaseem Hensley",
|
||||
"Age": 77,
|
||||
"Country": 6,
|
||||
"Address": "Ap #510-8903 Mauris. Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Christopher Morton",
|
||||
"Age": 35,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 234, 3651 Sodales Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Wade Fernandez",
|
||||
"Age": 49,
|
||||
"Country": 6,
|
||||
"Address": "740-5059 Dolor. Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Illiana Kirby",
|
||||
"Age": 31,
|
||||
"Country": 2,
|
||||
"Address": "527-3553 Mi Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kimberley Hurley",
|
||||
"Age": 65,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 637, 9915 Dictum St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Arthur Olsen",
|
||||
"Age": 74,
|
||||
"Country": 5,
|
||||
"Address": "887-5080 Eget St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Brody Potts",
|
||||
"Age": 59,
|
||||
"Country": 2,
|
||||
"Address": "Ap #577-7690 Sem Road",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Dillon Ford",
|
||||
"Age": 60,
|
||||
"Country": 1,
|
||||
"Address": "Ap #885-9289 A, Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Hannah Juarez",
|
||||
"Age": 61,
|
||||
"Country": 2,
|
||||
"Address": "4744 Sapien, Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Vincent Shaffer",
|
||||
"Age": 25,
|
||||
"Country": 2,
|
||||
"Address": "9203 Nunc St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "George Holt",
|
||||
"Age": 27,
|
||||
"Country": 6,
|
||||
"Address": "4162 Cras Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Tobias Bartlett",
|
||||
"Age": 74,
|
||||
"Country": 4,
|
||||
"Address": "792-6145 Mauris St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Xavier Hooper",
|
||||
"Age": 35,
|
||||
"Country": 1,
|
||||
"Address": "879-5026 Interdum. Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Declan Dorsey",
|
||||
"Age": 31,
|
||||
"Country": 2,
|
||||
"Address": "Ap #926-4171 Aenean Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Clementine Tran",
|
||||
"Age": 43,
|
||||
"Country": 4,
|
||||
"Address": "P.O. Box 176, 9865 Eu Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Pamela Moody",
|
||||
"Age": 55,
|
||||
"Country": 6,
|
||||
"Address": "622-6233 Luctus Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Julie Leon",
|
||||
"Age": 43,
|
||||
"Country": 6,
|
||||
"Address": "Ap #915-6782 Sem Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Shana Nolan",
|
||||
"Age": 79,
|
||||
"Country": 5,
|
||||
"Address": "P.O. Box 603, 899 Eu St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Vaughan Moody",
|
||||
"Age": 37,
|
||||
"Country": 5,
|
||||
"Address": "880 Erat Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Randall Reeves",
|
||||
"Age": 44,
|
||||
"Country": 3,
|
||||
"Address": "1819 Non Street",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Dominic Raymond",
|
||||
"Age": 68,
|
||||
"Country": 1,
|
||||
"Address": "Ap #689-4874 Nisi Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Lev Pugh",
|
||||
"Age": 69,
|
||||
"Country": 5,
|
||||
"Address": "Ap #433-6844 Auctor Avenue",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Desiree Hughes",
|
||||
"Age": 80,
|
||||
"Country": 4,
|
||||
"Address": "605-6645 Fermentum Avenue",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Idona Oneill",
|
||||
"Age": 23,
|
||||
"Country": 7,
|
||||
"Address": "751-8148 Aliquam Avenue",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Lani Mayo",
|
||||
"Age": 76,
|
||||
"Country": 1,
|
||||
"Address": "635-2704 Tristique St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Cathleen Bonner",
|
||||
"Age": 40,
|
||||
"Country": 1,
|
||||
"Address": "916-2910 Dolor Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Sydney Murray",
|
||||
"Age": 44,
|
||||
"Country": 5,
|
||||
"Address": "835-2330 Fringilla St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Brenna Rodriguez",
|
||||
"Age": 77,
|
||||
"Country": 6,
|
||||
"Address": "3687 Imperdiet Av.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Alfreda Mcdaniel",
|
||||
"Age": 38,
|
||||
"Country": 7,
|
||||
"Address": "745-8221 Aliquet Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Zachery Atkins",
|
||||
"Age": 30,
|
||||
"Country": 1,
|
||||
"Address": "549-2208 Auctor. Road",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Amelia Rich",
|
||||
"Age": 56,
|
||||
"Country": 4,
|
||||
"Address": "P.O. Box 734, 4717 Nunc Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kiayada Witt",
|
||||
"Age": 62,
|
||||
"Country": 3,
|
||||
"Address": "Ap #735-3421 Malesuada Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Lysandra Pierce",
|
||||
"Age": 36,
|
||||
"Country": 1,
|
||||
"Address": "Ap #146-2835 Curabitur St.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Cara Rios",
|
||||
"Age": 58,
|
||||
"Country": 4,
|
||||
"Address": "Ap #562-7811 Quam. Ave",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Austin Andrews",
|
||||
"Age": 55,
|
||||
"Country": 7,
|
||||
"Address": "P.O. Box 274, 5505 Sociis Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Lillian Peterson",
|
||||
"Age": 39,
|
||||
"Country": 2,
|
||||
"Address": "6212 A Avenue",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Adria Beach",
|
||||
"Age": 29,
|
||||
"Country": 2,
|
||||
"Address": "P.O. Box 183, 2717 Nunc Avenue",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Oleg Durham",
|
||||
"Age": 80,
|
||||
"Country": 4,
|
||||
"Address": "931-3208 Nunc Rd.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Casey Reese",
|
||||
"Age": 60,
|
||||
"Country": 4,
|
||||
"Address": "383-3675 Ultrices, St.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kane Burnett",
|
||||
"Age": 80,
|
||||
"Country": 1,
|
||||
"Address": "759-8212 Dolor. Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Stewart Wilson",
|
||||
"Age": 46,
|
||||
"Country": 7,
|
||||
"Address": "718-7845 Sagittis. Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Charity Holcomb",
|
||||
"Age": 31,
|
||||
"Country": 6,
|
||||
"Address": "641-7892 Enim. Ave",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Kyra Cummings",
|
||||
"Age": 43,
|
||||
"Country": 4,
|
||||
"Address": "P.O. Box 702, 6621 Mus. Av.",
|
||||
"Married": false
|
||||
},
|
||||
{
|
||||
"Name": "Stuart Wallace",
|
||||
"Age": 25,
|
||||
"Country": 7,
|
||||
"Address": "648-4990 Sed Rd.",
|
||||
"Married": true
|
||||
},
|
||||
{
|
||||
"Name": "Carter Clarke",
|
||||
"Age": 59,
|
||||
"Country": 6,
|
||||
"Address": "Ap #547-2921 A Street",
|
||||
"Married": false
|
||||
}
|
||||
];
|
||||
|
||||
db.users = [
|
||||
{
|
||||
"ID": "x",
|
||||
"Account": "A758A693-0302-03D1-AE53-EEFE22855556",
|
||||
"Name": "Carson Kelley",
|
||||
"RegisterDate": "2002-04-20T22:55:52-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "D89FF524-1233-0CE7-C9E1-56EFF017A321",
|
||||
"Name": "Prescott Griffin",
|
||||
"RegisterDate": "2011-02-22T05:59:55-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "06FAAD9A-5114-08F6-D60C-961B2528B4F0",
|
||||
"Name": "Amir Saunders",
|
||||
"RegisterDate": "2014-08-13T09:17:49-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "EED7653D-7DD9-A722-64A8-36A55ECDBE77",
|
||||
"Name": "Derek Thornton",
|
||||
"RegisterDate": "2012-02-27T01:31:07-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "2A2E6D40-FEBD-C643-A751-9AB4CAF1E2F6",
|
||||
"Name": "Fletcher Romero",
|
||||
"RegisterDate": "2010-06-25T15:49:54-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "3978F8FA-DFF0-DA0E-0A5D-EB9D281A3286",
|
||||
"Name": "Thaddeus Stein",
|
||||
"RegisterDate": "2013-11-10T07:29:41-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "658DBF5A-176E-569A-9273-74FB5F69FA42",
|
||||
"Name": "Nash Knapp",
|
||||
"RegisterDate": "2005-06-24T09:11:19-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "76D2EE4B-7A73-1212-F6F2-957EF8C1F907",
|
||||
"Name": "Quamar Vega",
|
||||
"RegisterDate": "2011-04-13T20:06:29-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "00E46809-A595-CE82-C5B4-D1CAEB7E3E58",
|
||||
"Name": "Philip Galloway",
|
||||
"RegisterDate": "2008-08-21T18:59:38-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "C196781C-DDCC-AF83-DDC2-CA3E851A47A0",
|
||||
"Name": "Mason French",
|
||||
"RegisterDate": "2000-11-15T00:38:37-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "5911F201-818A-B393-5888-13157CE0D63F",
|
||||
"Name": "Ross Cortez",
|
||||
"RegisterDate": "2010-05-27T17:35:32-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "B8BB78F9-E1A1-A956-086F-E12B6FE168B6",
|
||||
"Name": "Logan King",
|
||||
"RegisterDate": "2003-07-08T16:58:06-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "06F636C3-9599-1A2D-5FD5-86B24ADDE626",
|
||||
"Name": "Cedric Leblanc",
|
||||
"RegisterDate": "2011-06-30T14:30:10-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "FE880CDD-F6E7-75CB-743C-64C6DE192412",
|
||||
"Name": "Simon Sullivan",
|
||||
"RegisterDate": "2013-06-11T16:35:07-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "BBEDD673-E2C1-4872-A5D3-C4EBD4BE0A12",
|
||||
"Name": "Jamal West",
|
||||
"RegisterDate": "2001-03-16T20:18:29-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "19BC22FA-C52E-0CC6-9552-10365C755FAC",
|
||||
"Name": "Hector Morales",
|
||||
"RegisterDate": "2012-11-01T01:56:34-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "A8292214-2C13-5989-3419-6B83DD637D6C",
|
||||
"Name": "Herrod Hart",
|
||||
"RegisterDate": "2008-03-13T19:21:04-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "0285564B-F447-0E7F-EAA1-7FB8F9C453C8",
|
||||
"Name": "Clark Maxwell",
|
||||
"RegisterDate": "2004-08-05T08:22:24-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "EA78F076-4F6E-4228-268C-1F51272498AE",
|
||||
"Name": "Reuben Walter",
|
||||
"RegisterDate": "2011-01-23T01:55:59-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "6A88C194-EA21-426F-4FE2-F2AE33F51793",
|
||||
"Name": "Ira Ingram",
|
||||
"RegisterDate": "2008-08-15T05:57:46-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "4275E873-439C-AD26-56B3-8715E336508E",
|
||||
"Name": "Damian Morrow",
|
||||
"RegisterDate": "2015-09-13T01:50:55-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "A0D733C4-9070-B8D6-4387-D44F0BA515BE",
|
||||
"Name": "Macon Farrell",
|
||||
"RegisterDate": "2011-03-14T05:41:40-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "B3683DE8-C2FA-7CA0-A8A6-8FA7E954F90A",
|
||||
"Name": "Joel Galloway",
|
||||
"RegisterDate": "2003-02-03T04:19:01-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "01D95A8E-91BC-2050-F5D0-4437AAFFD11F",
|
||||
"Name": "Rigel Horton",
|
||||
"RegisterDate": "2015-06-20T11:53:11-07:00"
|
||||
},
|
||||
{
|
||||
"Account": "F0D12CC0-31AC-A82E-FD73-EEEFDBD21A36",
|
||||
"Name": "Sylvester Gaines",
|
||||
"RegisterDate": "2004-03-12T09:57:13-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "874FCC49-9A61-71BC-2F4E-2CE88348AD7B",
|
||||
"Name": "Abbot Mckay",
|
||||
"RegisterDate": "2008-12-26T20:42:57-08:00"
|
||||
},
|
||||
{
|
||||
"Account": "B8DA1912-20A0-FB6E-0031-5F88FD63EF90",
|
||||
"Name": "Solomon Green",
|
||||
"RegisterDate": "2013-09-04T01:44:47-07:00"
|
||||
}
|
||||
];
|
||||
|
||||
}());
|
||||
@@ -0,0 +1,82 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100%;
|
||||
padding: 10px;
|
||||
color: #262626;
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 24px;
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 16px 0 8px 0;
|
||||
font-size: 18px;
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #2ba6cb;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
color: #258faf;
|
||||
}
|
||||
|
||||
input, button, select {
|
||||
font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica;
|
||||
font-weight: 300;
|
||||
font-size: 14px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 10px;
|
||||
border-right: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.navigation li {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.demo-frame {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 200px;
|
||||
}
|
||||
|
||||
iframe[name='demo'] {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - External Pager Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
|
||||
<style>
|
||||
.external-pager {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.external-pager .jsgrid-pager-current-page {
|
||||
background: #c4e2ff;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>External Customized Pager</h1>
|
||||
<div id="externalPager" class="external-pager"></div>
|
||||
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
paging: true,
|
||||
pageSize: 15,
|
||||
pageButtonCount: 5,
|
||||
pagerContainer: "#externalPager",
|
||||
pagerFormat: "current page: {pageIndex} {first} {prev} {pages} {next} {last} total pages: {pageCount} total items: {itemCount}",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
pageNavigatorNextText: "…",
|
||||
pageNavigatorPrevText: "…",
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married" }
|
||||
],
|
||||
data: db.clients
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Simple jQuery DataGrid - Demos</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
</head>
|
||||
<body>
|
||||
<div class="navigation">
|
||||
<h1>jsGrid Demos</h1>
|
||||
<ul>
|
||||
<li><a href="basic.html" target="demo">Basic Scenario</a></li>
|
||||
<li><a href="static-data.html" target="demo">Static Data</a></li>
|
||||
<li><a href="odata-service.html" target="demo">OData Service</a></li>
|
||||
<li><a href="data-manipulation.html" target="demo">Data Manipulation</a></li>
|
||||
<li><a href="validation.html" target="demo">Validation</a></li>
|
||||
<li><a href="sorting.html" target="demo">Sorting</a></li>
|
||||
<li><a href="loading-by-page.html" target="demo">Loading by Page</a></li>
|
||||
<li><a href="custom-view.html" target="demo">Custom View</a></li>
|
||||
<li><a href="custom-row-renderer.html" target="demo">Custom Row Renderer</a></li>
|
||||
<li><a href="external-pager.html" target="demo">External Pager</a></li>
|
||||
<li><a href="custom-grid-field.html" target="demo">Custom Grid Field</a></li>
|
||||
<li><a href="localization.html" target="demo">Localization</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="demo-frame">
|
||||
<iframe name="demo" src="basic.html"></iframe>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,90 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Loading Data by Page Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
|
||||
<style>
|
||||
.pager-panel {
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
background: #fcfcfc;
|
||||
border: 1px solid #e9e9e9;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Loading Data by Page</h1>
|
||||
<div class="pager-panel">
|
||||
<label>Page:
|
||||
<select id="pager">
|
||||
<option>1</option>
|
||||
<option selected>2</option>
|
||||
<option>3</option>
|
||||
<option>4</option>
|
||||
<option>5</option>
|
||||
<option>6</option>
|
||||
<option>7</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
autoload: true,
|
||||
paging: true,
|
||||
pageLoading: true,
|
||||
pageSize: 15,
|
||||
pageIndex: 2,
|
||||
controller: {
|
||||
loadData: function(filter) {
|
||||
var startIndex = (filter.pageIndex - 1) * filter.pageSize;
|
||||
return {
|
||||
data: db.clients.slice(startIndex, startIndex + filter.pageSize),
|
||||
itemsCount: db.clients.length
|
||||
};
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married" }
|
||||
]
|
||||
});
|
||||
|
||||
$("#pager").on("change", function() {
|
||||
var page = parseInt($(this).val(), 10);
|
||||
$("#jsGrid").jsGrid("openPage", page);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Localization (FR)</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.validation.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
<script src="../src/i18n/fr.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Localization (FR)</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
jsGrid.locale("fr");
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
filtering: true,
|
||||
editing: true,
|
||||
inserting: true,
|
||||
sorting: true,
|
||||
paging: true,
|
||||
autoload: true,
|
||||
pageSize: 15,
|
||||
pageButtonCount: 5,
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", title: "Nom", type: "text", width: 150, validate: "required" },
|
||||
{ name: "Age", title: "Âge", type: "number", width: 50, validate: { validator: "range", param: [18,80] } },
|
||||
{ name: "Address", title: "Adresse", type: "text", width: 200, validate: { validator: "rangeLength", param: [10, 250] } },
|
||||
{ name: "Country", title: "Pays", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", title: "Marié", type: "checkbox", sorting: false },
|
||||
{ type: "control" }
|
||||
]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,74 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - OData Service Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.textarea.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
|
||||
<style>
|
||||
.rating {
|
||||
color: #F8CA03;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>OData Service</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "auto",
|
||||
width: "auto",
|
||||
sorting: true,
|
||||
paging: false,
|
||||
autoload: true,
|
||||
controller: {
|
||||
loadData: function() {
|
||||
var d = $.Deferred();
|
||||
|
||||
$.ajax({
|
||||
url: "http://services.odata.org/V3/(S(3mnweai3qldmghnzfshavfok))/OData/OData.svc/Products",
|
||||
dataType: "json"
|
||||
}).done(function(response) {
|
||||
d.resolve(response.value);
|
||||
});
|
||||
|
||||
return d.promise();
|
||||
}
|
||||
},
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 100 },
|
||||
{ name: "Description", type: "textarea", width: 200 },
|
||||
{ name: "Rating", type: "number", width: 150, align: "center",
|
||||
itemTemplate: function(value) {
|
||||
return $("<div>").addClass("rating").append(Array(value + 1).join("★"));
|
||||
}
|
||||
},
|
||||
{ name: "Price", type: "number", width: 100,
|
||||
itemTemplate: function(value) {
|
||||
return value.toFixed(2) + "$"; }
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Rows Reordering Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.2/themes/cupertino/jquery-ui.css">
|
||||
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
|
||||
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Rows Reordering Scenario</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
autoload: true,
|
||||
|
||||
rowClass: function(item, itemIndex) {
|
||||
return "client-" + itemIndex;
|
||||
},
|
||||
|
||||
controller: {
|
||||
loadData: function() {
|
||||
return db.clients.slice(0, 15);
|
||||
}
|
||||
},
|
||||
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married", sorting: false }
|
||||
],
|
||||
|
||||
onRefreshed: function() {
|
||||
var $gridData = $("#jsGrid .jsgrid-grid-body tbody");
|
||||
|
||||
$gridData.sortable({
|
||||
update: function(e, ui) {
|
||||
// array of indexes
|
||||
var clientIndexRegExp = /\s*client-(\d+)\s*/;
|
||||
var indexes = $.map($gridData.sortable("toArray", { attribute: "class" }), function(classes) {
|
||||
return clientIndexRegExp.exec(classes)[1];
|
||||
});
|
||||
alert("Reordered indexes: " + indexes.join(", "));
|
||||
|
||||
// arrays of items
|
||||
var items = $.map($gridData.find("tr"), function(row) {
|
||||
return $(row).data("JSGridItem");
|
||||
});
|
||||
console && console.log("Reordered items", items);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Sorting Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
|
||||
<style>
|
||||
.sort-panel {
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
background: #fcfcfc;
|
||||
border: 1px solid #e9e9e9;
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Sorting</h1>
|
||||
<div class="sort-panel">
|
||||
<label>Sorting Field:
|
||||
<select id="sortingField">
|
||||
<option>Name</option>
|
||||
<option>Age</option>
|
||||
<option>Address</option>
|
||||
<option>Country</option>
|
||||
<option>Married</option>
|
||||
</select>
|
||||
<button type="button" id="sort">Sort</button>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
autoload: true,
|
||||
selecting: false,
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married" }
|
||||
]
|
||||
});
|
||||
|
||||
$("#sort").click(function() {
|
||||
var field = $("#sortingField").val();
|
||||
$("#jsGrid").jsGrid("sort", field);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Static Data Scenario</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Static Data</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
sorting: true,
|
||||
paging: true,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150 },
|
||||
{ name: "Age", type: "number", width: 50 },
|
||||
{ name: "Address", type: "text", width: 200 },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name" },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married" }
|
||||
],
|
||||
data: db.clients
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>jsGrid - Validation</title>
|
||||
<link rel="stylesheet" type="text/css" href="demos.css" />
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/theme.css" />
|
||||
|
||||
<script src="../external/jquery/jquery-1.8.3.js"></script>
|
||||
<script src="db.js"></script>
|
||||
|
||||
<script src="../src/jsgrid.core.js"></script>
|
||||
<script src="../src/jsgrid.load-indicator.js"></script>
|
||||
<script src="../src/jsgrid.load-strategies.js"></script>
|
||||
<script src="../src/jsgrid.sort-strategies.js"></script>
|
||||
<script src="../src/jsgrid.validation.js"></script>
|
||||
<script src="../src/jsgrid.field.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.text.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.number.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.select.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.checkbox.js"></script>
|
||||
<script src="../src/fields/jsgrid.field.control.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Validation</h1>
|
||||
<div id="jsGrid"></div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
|
||||
$("#jsGrid").jsGrid({
|
||||
height: "70%",
|
||||
width: "100%",
|
||||
filtering: true,
|
||||
editing: true,
|
||||
inserting: true,
|
||||
sorting: true,
|
||||
paging: true,
|
||||
autoload: true,
|
||||
pageSize: 15,
|
||||
pageButtonCount: 5,
|
||||
deleteConfirm: "Do you really want to delete the client?",
|
||||
controller: db,
|
||||
fields: [
|
||||
{ name: "Name", type: "text", width: 150, validate: "required" },
|
||||
{ name: "Age", type: "number", width: 50, validate: { validator: "range", param: [18,80] } },
|
||||
{ name: "Address", type: "text", width: 200, validate: { validator: "rangeLength", param: [10, 250] } },
|
||||
{ name: "Country", type: "select", items: db.countries, valueField: "Id", textField: "Name",
|
||||
validate: { message: "Country should be specified", validator: function(value) { return value > 0; } } },
|
||||
{ name: "Married", type: "checkbox", title: "Is Married", sorting: false },
|
||||
{ type: "control" }
|
||||
]
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.de = {
|
||||
grid: {
|
||||
noDataContent: "Die Daten konnten nicht gefunden werden",
|
||||
deleteConfirm: "Möchten Sie die Daten unwiederruflich löschen?",
|
||||
pagerFormat: "Seiten: {first} {prev} {pages} {next} {last} {pageIndex} von {pageCount}",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
loadMessage: "Bitte warten...",
|
||||
invalidMessage: "Ihre Eingabe ist nicht zulässig!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Lädt..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Suche",
|
||||
insertModeButtonTooltip: "Eintrag hinzufügen",
|
||||
editButtonTooltip: "Bearbeiten",
|
||||
deleteButtonTooltip: "Löschen",
|
||||
searchButtonTooltip: "Eintrag finden",
|
||||
clearFilterButtonTooltip: "Filter zurücksetzen",
|
||||
insertButtonTooltip: "Hinzufügen",
|
||||
updateButtonTooltip: "Speichern",
|
||||
cancelEditButtonTooltip: "Abbrechen"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Dies ist ein Pflichtfeld" },
|
||||
rangeLength: { message: "Die Länge der Eingabe liegt außerhalb des zulässigen Bereichs" },
|
||||
minLength: { message: "Die Eingabe ist zu kurz" },
|
||||
maxLength: { message: "Die Eingabe ist zu lang" },
|
||||
pattern: { message: "Die Eingabe entspricht nicht dem gewünschten Muster" },
|
||||
range: { message: "Der eingegebene Wert liegt außerhalb des zulässigen Bereichs" },
|
||||
min: { message: "Der eingegebene Wert ist zu niedrig" },
|
||||
max: { message: "Der eingegebene Wert ist zu hoch" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.es = {
|
||||
grid: {
|
||||
noDataContent: "No encontrado",
|
||||
deleteConfirm: "¿Está seguro?",
|
||||
pagerFormat: "Paginas: {first} {prev} {pages} {next} {last} {pageIndex} de {pageCount}",
|
||||
pagePrevText: "Anterior",
|
||||
pageNextText: "Siguiente",
|
||||
pageFirstText: "Primero",
|
||||
pageLastText: "Ultimo",
|
||||
loadMessage: "Por favor, espere...",
|
||||
invalidMessage: "¡Datos no válidos!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Cargando..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Cambiar a búsqueda",
|
||||
insertModeButtonTooltip: "Cambiar a inserción",
|
||||
editButtonTooltip: "Editar",
|
||||
deleteButtonTooltip: "Suprimir",
|
||||
searchButtonTooltip: "Buscar",
|
||||
clearFilterButtonTooltip: "Borrar filtro",
|
||||
insertButtonTooltip: "Insertar",
|
||||
updateButtonTooltip: "Actualizar",
|
||||
cancelEditButtonTooltip: "Cancelar edición"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Campo requerido" },
|
||||
rangeLength: { message: "La longitud del valor está fuera del intervalo definido" },
|
||||
minLength: { message: "La longitud del valor es demasiado corta" },
|
||||
maxLength: { message: "La longitud del valor es demasiado larga" },
|
||||
pattern: { message: "El valor no se ajusta al patrón definido" },
|
||||
range: { message: "Valor fuera del rango definido" },
|
||||
min: { message: "Valor demasiado bajo" },
|
||||
max: { message: "Valor demasiado alto" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,47 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.fr = {
|
||||
grid: {
|
||||
noDataContent: "Pas de données",
|
||||
deleteConfirm: "Êtes-vous sûr ?",
|
||||
pagerFormat: "Pages: {first} {prev} {pages} {next} {last} {pageIndex} de {pageCount}",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
loadMessage: "Chargement en cours...",
|
||||
invalidMessage: "Des données incorrectes sont entrés !"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Chargement en cours..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Recherche",
|
||||
insertModeButtonTooltip: "Ajouter une entrée",
|
||||
editButtonTooltip: "Changer",
|
||||
deleteButtonTooltip: "Effacer",
|
||||
searchButtonTooltip: "Trouve",
|
||||
clearFilterButtonTooltip: "Effacer",
|
||||
insertButtonTooltip: "Ajouter",
|
||||
updateButtonTooltip: "Sauvegarder",
|
||||
cancelEditButtonTooltip: "Annuler"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Champ requis" },
|
||||
rangeLength: { message: "Longueur de la valeur du champ est hors de la plage définie" },
|
||||
minLength: { message: "La valeur du champ est trop court" },
|
||||
maxLength: { message: "La valeur du champ est trop long" },
|
||||
pattern: { message: "La valeur du champ ne correspond pas à la configuration définie" },
|
||||
range: { message: "La valeur du champ est hors de la plage définie" },
|
||||
min: { message: "La valeur du champ est trop petit" },
|
||||
max: { message: "La valeur du champ est trop grande" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.he = {
|
||||
grid: {
|
||||
noDataContent: "לא נמצא",
|
||||
deleteConfirm: "האם אתה בטוח?",
|
||||
pagerFormat: "עמודים: {first} {prev} {pages} {next} {last} {pageIndex} מתוך {pageCount}",
|
||||
pagePrevText: "הקודם",
|
||||
pageNextText: "הבא",
|
||||
pageFirstText: "ראשון",
|
||||
pageLastText: "אחרון",
|
||||
loadMessage: "אנא המתן ...",
|
||||
invalidMessage: "נתונים לא חוקיים!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "טוען..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "ביצוע חיפוש",
|
||||
insertModeButtonTooltip: "ביצוע עריכת שורה",
|
||||
editButtonTooltip: "עריכה",
|
||||
deleteButtonTooltip: "מחיקה",
|
||||
searchButtonTooltip: "חיפוש",
|
||||
clearFilterButtonTooltip: "ניקוי מסנן",
|
||||
insertButtonTooltip: "הכנסה",
|
||||
updateButtonTooltip: "עדכון",
|
||||
cancelEditButtonTooltip: "ביטול עריכה"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "שדה נדרש" },
|
||||
rangeLength: { message: "אורכו של הערך הוא מחוץ לטווח המוגדר" },
|
||||
minLength: { message: "אורכו של הערך קצר מדי" },
|
||||
maxLength: { message: "אורכו של הערך ארוך מדי" },
|
||||
pattern: { message: "אורכו של הערך ארוך מדי" },
|
||||
range: { message: "ערך מחוץ לטווח" },
|
||||
min: { message: "ערך נמוך מדי" },
|
||||
max: { message: "גבוה מדי" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.ja = {
|
||||
grid: {
|
||||
noDataContent: "データが見つかりません。",
|
||||
deleteConfirm: "削除しますよろしですか。",
|
||||
pagerFormat: "頁: {first} {prev} {pages} {next} {last} 【{pageIndex}/{pageCount}】",
|
||||
pagePrevText: "前",
|
||||
pageNextText: "次",
|
||||
pageFirstText: "最初",
|
||||
pageLastText: "最後",
|
||||
loadMessage: "しばらくお待ちください…",
|
||||
invalidMessage: "入力されたデータが不正です。"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "処理中…"
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "検索モードへ",
|
||||
insertModeButtonTooltip: "登録モードへ",
|
||||
editButtonTooltip: "編集",
|
||||
deleteButtonTooltip: "削除",
|
||||
searchButtonTooltip: "フィルター",
|
||||
clearFilterButtonTooltip: "クリア",
|
||||
insertButtonTooltip: "登録",
|
||||
updateButtonTooltip: "更新",
|
||||
cancelEditButtonTooltip: "編集戻す"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "項目が必要です。" },
|
||||
rangeLength: { message: "項目の桁数が範囲外です。" },
|
||||
minLength: { message: "項目の桁数が超過しています。" },
|
||||
maxLength: { message: "項目の桁数が不足しています。" },
|
||||
pattern: { message: "項目の値がパターンに一致しません。" },
|
||||
range: { message: "項目の値が範囲外です。" },
|
||||
min: { message: "項目の値が超過しています。" },
|
||||
max: { message: "項目の値が不足しています。" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.ka = {
|
||||
grid: {
|
||||
noDataContent: "მონაცემები ცარიელია.",
|
||||
deleteConfirm: "ნამდვილად გსურთ ჩანაწერის წაშლა?",
|
||||
pagerFormat: "გვერდები: {first} {prev} {pages} {next} {last} {pageIndex} - {pageCount} დან.",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
loadMessage: "გთხოვთ დაიცადოთ...",
|
||||
invalidMessage: "შეყვანილია არასწორი მონაცემები!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "მიმდინარეობს ჩატვირთვა..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "ძებნა",
|
||||
insertModeButtonTooltip: "ჩანაწერის დამატება",
|
||||
editButtonTooltip: "შესწორება",
|
||||
deleteButtonTooltip: "წაშლა",
|
||||
searchButtonTooltip: "ძებნა",
|
||||
clearFilterButtonTooltip: "ფილტრის გასუფთავება",
|
||||
insertButtonTooltip: "დამატება",
|
||||
updateButtonTooltip: "შენახვა",
|
||||
cancelEditButtonTooltip: "გაუქმება"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "ველი აუცილებელია შესავსებად." },
|
||||
rangeLength: { message: "შეყვანილი ჩანაწერის ზომა არ ექვემდებარება დიაპაზონს." },
|
||||
minLength: { message: "შეყვანილი ჩანაწერის ზომა საკმაოდ პატარა არის." },
|
||||
maxLength: { message: "შეყვანილი ჩანაწერის ზომა საკმაოდ დიდი არის." },
|
||||
pattern: { message: "შეყვანილი მნიშვნელობა არ ემთხვევა მითითებულ შაბლონს." },
|
||||
range: { message: "შეყვანილი ინფორმაცია არ ჯდება დიაპაზონში." },
|
||||
min: { message: "შეყვანილი ინფორმაციის ზომა საკმაოდ პატარა არის." },
|
||||
max: { message: "შეყვანილი ინფორმაციის ზომა საკმაოდ დიდი არის." }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,62 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.pl = {
|
||||
grid: {
|
||||
noDataContent: "Nie znaleziono",
|
||||
deleteConfirm: "Czy jesteś pewien?",
|
||||
pagerFormat: "Strony: {first} {prev} {pages} {next} {last} {pageIndex} z {pageCount}",
|
||||
pagePrevText: "Poprzednia",
|
||||
pageNextText: "Następna",
|
||||
pageFirstText: "Pierwsza",
|
||||
pageLastText: "Ostatnia",
|
||||
loadMessage: "Proszę czekać...",
|
||||
invalidMessage: "Wprowadzono nieprawidłowe dane!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Ładowanie..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Wyszukiwanie",
|
||||
insertModeButtonTooltip: "Dodawanie",
|
||||
editButtonTooltip: "Edytuj",
|
||||
deleteButtonTooltip: "Usuń",
|
||||
searchButtonTooltip: "Szukaj",
|
||||
clearFilterButtonTooltip: "Wyczyść filtr",
|
||||
insertButtonTooltip: "Dodaj",
|
||||
updateButtonTooltip: "Aktualizuj",
|
||||
cancelEditButtonTooltip: "Anuluj edytowanie"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: {
|
||||
message: "Pole jest wymagane"
|
||||
},
|
||||
rangeLength: {
|
||||
message: "Długość wartości pola znajduje się poza zdefiniowanym zakresem"
|
||||
},
|
||||
minLength: {
|
||||
message: "Wartość pola jest zbyt krótka"
|
||||
},
|
||||
maxLength: {
|
||||
message: "Wartość pola jest zbyt długa"
|
||||
},
|
||||
pattern: {
|
||||
message: "Wartość pola nie zgadza się ze zdefiniowanym wzorem"
|
||||
},
|
||||
range: {
|
||||
message: "Wartość pola znajduje się poza zdefiniowanym zakresem"
|
||||
},
|
||||
min: {
|
||||
message: "Wartość pola jest zbyt mała"
|
||||
},
|
||||
max: {
|
||||
message: "Wartość pola jest zbyt duża"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales["pt-br"] = {
|
||||
grid: {
|
||||
noDataContent: "Não encontrado",
|
||||
deleteConfirm: "Você tem certeza que deseja remover este item?",
|
||||
pagerFormat: "Páginas: {first} {prev} {pages} {next} {last} {pageIndex} de {pageCount}",
|
||||
pagePrevText: "Anterior",
|
||||
pageNextText: "Seguinte",
|
||||
pageFirstText: "Primeira",
|
||||
pageLastText: "Última",
|
||||
loadMessage: "Por favor, espere...",
|
||||
invalidMessage: "Dados inválidos!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Carregando..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Mudar para busca",
|
||||
insertModeButtonTooltip: "Mudar para inserção",
|
||||
editButtonTooltip: "Editar",
|
||||
deleteButtonTooltip: "Remover",
|
||||
searchButtonTooltip: "Buscar",
|
||||
clearFilterButtonTooltip: "Remover filtro",
|
||||
insertButtonTooltip: "Adicionar",
|
||||
updateButtonTooltip: "Atualizar",
|
||||
cancelEditButtonTooltip: "Cancelar Edição"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Campo obrigatório" },
|
||||
rangeLength: { message: "O valor esta fora do intervaldo definido" },
|
||||
minLength: { message: "O comprimento do valor é muito curto" },
|
||||
maxLength: { message: "O comprimento valor é muito longo" },
|
||||
pattern: { message: "O valor informado não é compatível com o padrão" },
|
||||
range: { message: "O valor informado esta fora do limite definido" },
|
||||
min: { message: "O valor é muito curto" },
|
||||
max: { message: "O valor é muito longo" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.pt = {
|
||||
grid: {
|
||||
noDataContent: "Não encontrado",
|
||||
deleteConfirm: "Você tem certeza que deseja remover este item?",
|
||||
pagerFormat: "Páginas: {first} {prev} {pages} {next} {last} {pageIndex} de {pageCount}",
|
||||
pagePrevText: "Anterior",
|
||||
pageNextText: "Seguinte",
|
||||
pageFirstText: "Primeira",
|
||||
pageLastText: "Última",
|
||||
loadMessage: "Por favor, espere...",
|
||||
invalidMessage: "Dados inválidos!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Carregando..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Mudar para busca",
|
||||
insertModeButtonTooltip: "Mudar para inserção",
|
||||
editButtonTooltip: "Editar",
|
||||
deleteButtonTooltip: "Remover",
|
||||
searchButtonTooltip: "Buscar",
|
||||
clearFilterButtonTooltip: "Remover filtro",
|
||||
insertButtonTooltip: "Adicionar",
|
||||
updateButtonTooltip: "Atualizar",
|
||||
cancelEditButtonTooltip: "Cancelar Edição"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Campo obrigatório" },
|
||||
rangeLength: { message: "O valor esta fora do intervaldo definido" },
|
||||
minLength: { message: "O comprimento do valor é muito curto" },
|
||||
maxLength: { message: "O comprimento valor é muito longo" },
|
||||
pattern: { message: "O valor informado não é compatível com o padrão" },
|
||||
range: { message: "O valor informado esta fora do limite definido" },
|
||||
min: { message: "O valor é muito curto" },
|
||||
max: { message: "O valor é muito longo" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,47 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.ru = {
|
||||
grid: {
|
||||
noDataContent: "Данных не найдено",
|
||||
deleteConfirm: "Вы действительно хотите удалить запись?",
|
||||
pagerFormat: "Страницы: {first} {prev} {pages} {next} {last} {pageIndex} из {pageCount}",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
loadMessage: "Пожалуйста, подождите...",
|
||||
invalidMessage: "Введены неверные данные!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Загрузка..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Поиск",
|
||||
insertModeButtonTooltip: "Добавить запись",
|
||||
editButtonTooltip: "Изменить",
|
||||
deleteButtonTooltip: "Удалить",
|
||||
searchButtonTooltip: "Найти",
|
||||
clearFilterButtonTooltip: "Очистить фильтр",
|
||||
insertButtonTooltip: "Добавить",
|
||||
updateButtonTooltip: "Сохранить",
|
||||
cancelEditButtonTooltip: "Отменить"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Поле обязательно для заполения" },
|
||||
rangeLength: { message: "Длинна введенного значения вне допустимого диапазона" },
|
||||
minLength: { message: "Введенное значение слишком короткое" },
|
||||
maxLength: { message: "Введенное значение слишком длинное" },
|
||||
pattern: { message: "Введенное значение не соответствует заданному шаблону" },
|
||||
range: { message: "Введенное значение вне допустимого диапазона" },
|
||||
min: { message: "Введенное значение слишком маленькое" },
|
||||
max: { message: "Введенное значение слишком большое" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales.tr = {
|
||||
grid: {
|
||||
noDataContent: "Kayıt Bulunamadı",
|
||||
deleteConfirm: "Emin misiniz ?",
|
||||
pagerFormat: "Sayfalar: {first} {prev} {pages} {next} {last} {pageIndex} / {pageCount}",
|
||||
pagePrevText: "<",
|
||||
pageNextText: ">",
|
||||
pageFirstText: "<<",
|
||||
pageLastText: ">>",
|
||||
loadMessage: "Lütfen bekleyiniz...",
|
||||
invalidMessage: "Geçersiz veri girişi !"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "Yükleniyor..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "Arama moduna geç",
|
||||
insertModeButtonTooltip: "Yeni kayıt moduna geç",
|
||||
editButtonTooltip: "Değiştir",
|
||||
deleteButtonTooltip: "Sil",
|
||||
searchButtonTooltip: "Bul",
|
||||
clearFilterButtonTooltip: "Filtreyi temizle",
|
||||
insertButtonTooltip: "Ekle",
|
||||
updateButtonTooltip: "Güncelle",
|
||||
cancelEditButtonTooltip: "Güncelleme iptali"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "Gerekli alandır" },
|
||||
rangeLength: { message: "Alan değerinin uzunluğu tanımlanan aralık dışındadır" },
|
||||
minLength: { message: "Alan değeri çok kısadır" },
|
||||
maxLength: { message: "Alan değeri çok uzundur" },
|
||||
pattern: { message: "Alan değeri tanımlanan şablon ile eşleşmiyor" },
|
||||
range: { message: "Alan değeri tanımlı aralığın dışındadır" },
|
||||
min: { message: "Alan değeri çok küçüktür" },
|
||||
max: { message: "Alan değeri çok büyüktür" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales["zh-cn"] = {
|
||||
grid: {
|
||||
noDataContent: "暂无数据",
|
||||
deleteConfirm: "确认删除?",
|
||||
pagerFormat: "页码: {first} {prev} {pages} {next} {last} {pageIndex} / {pageCount}",
|
||||
pagePrevText: "上一页",
|
||||
pageNextText: "下一页",
|
||||
pageFirstText: "第一页",
|
||||
pageLastText: "最后页",
|
||||
loadMessage: "请稍后...",
|
||||
invalidMessage: "数据有误!"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "载入中..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "切换为搜索",
|
||||
insertModeButtonTooltip: "切换为新增",
|
||||
editButtonTooltip: "编辑",
|
||||
deleteButtonTooltip: "删除",
|
||||
searchButtonTooltip: "搜索",
|
||||
clearFilterButtonTooltip: "清空过滤",
|
||||
insertButtonTooltip: "插入",
|
||||
updateButtonTooltip: "更新",
|
||||
cancelEditButtonTooltip: "取消编辑"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "字段必填" },
|
||||
rangeLength: { message: "字段值长度超过定义范围" },
|
||||
minLength: { message: "字段长度过短" },
|
||||
maxLength: { message: "字段长度过长" },
|
||||
pattern: { message: "字段值不符合定义规则" },
|
||||
range: { message: "字段值超过定义范围" },
|
||||
min: { message: "字段值太小" },
|
||||
max: { message: "字段值太大" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,46 @@
|
||||
(function(jsGrid) {
|
||||
|
||||
jsGrid.locales["zh-tw"] = {
|
||||
grid: {
|
||||
noDataContent: "暫無資料",
|
||||
deleteConfirm: "確認刪除?",
|
||||
pagerFormat: "頁碼: {first} {prev} {pages} {next} {last} {pageIndex} / {pageCount}",
|
||||
pagePrevText: "上一頁",
|
||||
pageNextText: "下一頁",
|
||||
pageFirstText: "第一頁",
|
||||
pageLastText: "最後一頁",
|
||||
loadMessage: "請稍候...",
|
||||
invalidMessage: "輸入資料不正確"
|
||||
},
|
||||
|
||||
loadIndicator: {
|
||||
message: "載入中..."
|
||||
},
|
||||
|
||||
fields: {
|
||||
control: {
|
||||
searchModeButtonTooltip: "切換為搜尋",
|
||||
insertModeButtonTooltip: "切換為新增",
|
||||
editButtonTooltip: "編輯",
|
||||
deleteButtonTooltip: "刪除",
|
||||
searchButtonTooltip: "搜尋",
|
||||
clearFilterButtonTooltip: "清除搜尋條件",
|
||||
insertButtonTooltip: "新增",
|
||||
updateButtonTooltip: "修改",
|
||||
cancelEditButtonTooltip: "取消編輯"
|
||||
}
|
||||
},
|
||||
|
||||
validators: {
|
||||
required: { message: "欄位必填" },
|
||||
rangeLength: { message: "欄位字串長度超出範圍" },
|
||||
minLength: { message: "欄位字串長度太短" },
|
||||
maxLength: { message: "欄位字串長度太長" },
|
||||
pattern: { message: "欄位字串不符合規則" },
|
||||
range: { message: "欄位數值超出範圍" },
|
||||
min: { message: "欄位數值太小" },
|
||||
max: { message: "欄位數值太大" }
|
||||
}
|
||||
};
|
||||
|
||||
}(jsGrid, jQuery));
|
||||
@@ -0,0 +1,258 @@
|
||||
/*
|
||||
* jsGrid v1.5.3 (http://js-grid.com)
|
||||
* (c) 2016 Artem Tabalin
|
||||
* Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
.jsgrid-grid-header,
|
||||
.jsgrid-grid-body,
|
||||
.jsgrid-header-row > .jsgrid-header-cell,
|
||||
.jsgrid-filter-row > .jsgrid-cell,
|
||||
.jsgrid-insert-row > .jsgrid-cell,
|
||||
.jsgrid-edit-row > .jsgrid-cell {
|
||||
border: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.jsgrid-header-row > .jsgrid-header-cell {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.jsgrid-header-row > .jsgrid-header-cell,
|
||||
.jsgrid-filter-row > .jsgrid-cell,
|
||||
.jsgrid-insert-row > .jsgrid-cell {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.jsgrid-header-row > .jsgrid-header-cell:first-child,
|
||||
.jsgrid-filter-row > .jsgrid-cell:first-child,
|
||||
.jsgrid-insert-row > .jsgrid-cell:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.jsgrid-header-row > .jsgrid-header-cell:last-child,
|
||||
.jsgrid-filter-row > .jsgrid-cell:last-child,
|
||||
.jsgrid-insert-row > .jsgrid-cell:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.jsgrid-header-row .jsgrid-align-right,
|
||||
.jsgrid-header-row .jsgrid-align-left {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsgrid-grid-header {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.jsgrid-header-scrollbar {
|
||||
scrollbar-arrow-color: #f1f1f1;
|
||||
scrollbar-base-color: #f1f1f1;
|
||||
scrollbar-3dlight-color: #f1f1f1;
|
||||
scrollbar-highlight-color: #f1f1f1;
|
||||
scrollbar-track-color: #f1f1f1;
|
||||
scrollbar-shadow-color: #f1f1f1;
|
||||
scrollbar-dark-shadow-color: #f1f1f1;
|
||||
}
|
||||
|
||||
.jsgrid-header-scrollbar::-webkit-scrollbar {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.jsgrid-header-scrollbar::-webkit-scrollbar-track {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
|
||||
.jsgrid-header-sortable:hover {
|
||||
cursor: pointer;
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
.jsgrid-header-row .jsgrid-header-sort {
|
||||
background: #c4e2ff;
|
||||
}
|
||||
|
||||
.jsgrid-header-sort:before {
|
||||
content: " ";
|
||||
display: block;
|
||||
float: left;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.jsgrid-header-sort-asc:before {
|
||||
border-width: 0 5px 5px 5px;
|
||||
border-color: transparent transparent #009a67 transparent;
|
||||
}
|
||||
|
||||
.jsgrid-header-sort-desc:before {
|
||||
border-width: 5px 5px 0 5px;
|
||||
border-color: #009a67 transparent transparent transparent;
|
||||
}
|
||||
|
||||
.jsgrid-grid-body {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.jsgrid-cell {
|
||||
border: #f3f3f3 1px solid;
|
||||
}
|
||||
|
||||
.jsgrid-grid-body .jsgrid-row:first-child .jsgrid-cell,
|
||||
.jsgrid-grid-body .jsgrid-alt-row:first-child .jsgrid-cell {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.jsgrid-grid-body .jsgrid-cell:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.jsgrid-grid-body .jsgrid-cell:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.jsgrid-row > .jsgrid-cell {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.jsgrid-alt-row > .jsgrid-cell {
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
.jsgrid-header-row > .jsgrid-header-cell {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.jsgrid-filter-row > .jsgrid-cell {
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
.jsgrid-insert-row > .jsgrid-cell {
|
||||
background: #e3ffe5;
|
||||
}
|
||||
|
||||
.jsgrid-edit-row > .jsgrid-cell {
|
||||
background: #fdffe3;
|
||||
}
|
||||
|
||||
.jsgrid-selected-row > .jsgrid-cell {
|
||||
background: #c4e2ff;
|
||||
border-color: #c4e2ff;
|
||||
}
|
||||
|
||||
.jsgrid-nodata-row > .jsgrid-cell {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.jsgrid-invalid input,
|
||||
.jsgrid-invalid select,
|
||||
.jsgrid-invalid textarea {
|
||||
background: #ffe3e5;
|
||||
border: 1px solid #ff808a;
|
||||
}
|
||||
|
||||
.jsgrid-pager-current-page {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.jsgrid-pager-nav-inactive-button a {
|
||||
color: #d3d3d3;
|
||||
}
|
||||
|
||||
.jsgrid-button + .jsgrid-button {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.jsgrid-button:hover {
|
||||
opacity: .5;
|
||||
transition: opacity 200ms linear;
|
||||
}
|
||||
|
||||
.jsgrid .jsgrid-button {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
background-image: url(data:image/png;base64,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 truncated
|
||||
background-repeat: no-repeat;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
|
||||
.jsgrid .jsgrid-button {
|
||||
background-image: url(data:image/png;base64,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 truncated
|
||||
background-size: 24px 352px;
|
||||
}
|
||||
}
|
||||
|
||||
.jsgrid .jsgrid-mode-button {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.jsgrid-mode-on-button {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.jsgrid-cancel-edit-button { background-position: 0 0; width: 16px; height: 16px; }
|
||||
.jsgrid-clear-filter-button { background-position: 0 -40px; width: 16px; height: 16px; }
|
||||
.jsgrid-delete-button { background-position: 0 -80px; width: 16px; height: 16px; }
|
||||
.jsgrid-edit-button { background-position: 0 -120px; width: 16px; height: 16px; }
|
||||
.jsgrid-insert-mode-button { background-position: 0 -160px; width: 24px; height: 24px; }
|
||||
.jsgrid-insert-button { background-position: 0 -208px; width: 16px; height: 16px; }
|
||||
.jsgrid-search-mode-button { background-position: 0 -248px; width: 24px; height: 24px; }
|
||||
.jsgrid-search-button { background-position: 0 -296px; width: 16px; height: 16px; }
|
||||
.jsgrid-update-button { background-position: 0 -336px; width: 16px; height: 16px; }
|
||||
|
||||
|
||||
.jsgrid-load-shader {
|
||||
background: #ddd;
|
||||
opacity: .5;
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
|
||||
.jsgrid-load-panel {
|
||||
width: 15em;
|
||||
height: 5em;
|
||||
background: #fff;
|
||||
border: 1px solid #e9e9e9;
|
||||
padding-top: 3em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsgrid-load-panel:before {
|
||||
content: ' ';
|
||||
position: absolute;
|
||||
top: .5em;
|
||||
left: 50%;
|
||||
margin-left: -1em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
border: 2px solid #009a67;
|
||||
border-right-color: transparent;
|
||||
border-radius: 50%;
|
||||
-webkit-animation: indicator 1s linear infinite;
|
||||
animation: indicator 1s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes indicator
|
||||
{
|
||||
from { -webkit-transform: rotate(0deg); }
|
||||
50% { -webkit-transform: rotate(180deg); }
|
||||
to { -webkit-transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
@keyframes indicator
|
||||
{
|
||||
from { transform: rotate(0deg); }
|
||||
50% { transform: rotate(180deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* old IE */
|
||||
.jsgrid-load-panel {
|
||||
padding-top: 1.5em\9;
|
||||
}
|
||||
.jsgrid-load-panel:before {
|
||||
display: none\9;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* jsGrid v1.5.3 (http://js-grid.com)
|
||||
* (c) 2016 Artem Tabalin
|
||||
* Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
.jsgrid-edit-row>.jsgrid-cell,.jsgrid-filter-row>.jsgrid-cell,.jsgrid-grid-body,.jsgrid-grid-header,.jsgrid-header-row>.jsgrid-header-cell,.jsgrid-insert-row>.jsgrid-cell{border:1px solid #e9e9e9}.jsgrid-header-row>.jsgrid-header-cell{border-top:0}.jsgrid-filter-row>.jsgrid-cell,.jsgrid-header-row>.jsgrid-header-cell,.jsgrid-insert-row>.jsgrid-cell{border-bottom:0}.jsgrid-filter-row>.jsgrid-cell:first-child,.jsgrid-header-row>.jsgrid-header-cell:first-child,.jsgrid-insert-row>.jsgrid-cell:first-child{border-left:none}.jsgrid-filter-row>.jsgrid-cell:last-child,.jsgrid-header-row>.jsgrid-header-cell:last-child,.jsgrid-insert-row>.jsgrid-cell:last-child{border-right:none}.jsgrid-header-row .jsgrid-align-left,.jsgrid-header-row .jsgrid-align-right{text-align:center}.jsgrid-grid-header{background:#f9f9f9}.jsgrid-header-scrollbar{scrollbar-arrow-color:#f1f1f1;scrollbar-base-color:#f1f1f1;scrollbar-3dlight-color:#f1f1f1;scrollbar-highlight-color:#f1f1f1;scrollbar-track-color:#f1f1f1;scrollbar-shadow-color:#f1f1f1;scrollbar-dark-shadow-color:#f1f1f1}.jsgrid-header-scrollbar::-webkit-scrollbar{visibility:hidden}.jsgrid-header-scrollbar::-webkit-scrollbar-track{background:#f1f1f1}.jsgrid-header-sortable:hover{cursor:pointer;background:#fcfcfc}.jsgrid-header-row .jsgrid-header-sort{background:#c4e2ff}.jsgrid-header-sort:before{content:" ";display:block;float:left;width:0;height:0;border-style:solid}.jsgrid-header-sort-asc:before{border-width:0 5px 5px;border-color:transparent transparent #009a67}.jsgrid-header-sort-desc:before{border-width:5px 5px 0;border-color:#009a67 transparent transparent}.jsgrid-grid-body{border-top:none}.jsgrid-cell{border:1px solid #f3f3f3}.jsgrid-grid-body .jsgrid-alt-row:first-child .jsgrid-cell,.jsgrid-grid-body .jsgrid-row:first-child .jsgrid-cell{border-top:none}.jsgrid-grid-body .jsgrid-cell:first-child{border-left:none}.jsgrid-grid-body .jsgrid-cell:last-child{border-right:none}.jsgrid-row>.jsgrid-cell{background:#fff}.jsgrid-alt-row>.jsgrid-cell{background:#fcfcfc}.jsgrid-header-row>.jsgrid-header-cell{background:#f9f9f9}.jsgrid-filter-row>.jsgrid-cell{background:#fcfcfc}.jsgrid-insert-row>.jsgrid-cell{background:#e3ffe5}.jsgrid-edit-row>.jsgrid-cell{background:#fdffe3}.jsgrid-selected-row>.jsgrid-cell{background:#c4e2ff;border-color:#c4e2ff}.jsgrid-nodata-row>.jsgrid-cell{background:#fff}.jsgrid-invalid input,.jsgrid-invalid select,.jsgrid-invalid textarea{background:#ffe3e5;border:1px solid #ff808a}.jsgrid-pager-current-page{font-weight:700}.jsgrid-pager-nav-inactive-button a{color:#d3d3d3}.jsgrid-button+.jsgrid-button{margin-left:5px}.jsgrid-button:hover{opacity:.5;transition:opacity 200ms linear}.jsgrid .jsgrid-button{width:16px;height:16px;border:none;cursor:pointer;background-image:url(data:image/png;base64,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 truncated
|
||||
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* jsGrid v1.5.3 (http://js-grid.com)
|
||||
* (c) 2016 Artem Tabalin
|
||||
* Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
.jsgrid {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.jsgrid, .jsgrid *, .jsgrid *:before, .jsgrid *:after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.jsgrid input,
|
||||
.jsgrid textarea,
|
||||
.jsgrid select {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.jsgrid-grid-header {
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-o-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.jsgrid-grid-body {
|
||||
overflow-x: auto;
|
||||
overflow-y: scroll;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.jsgrid-table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.jsgrid-cell {
|
||||
padding: 0.5em 0.5em;
|
||||
}
|
||||
|
||||
.jsgrid-сell,
|
||||
.jsgrid-header-cell {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.jsgrid-align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.jsgrid-align-center,
|
||||
.jsgrid-align-center input,
|
||||
.jsgrid-align-center textarea,
|
||||
.jsgrid-align-center select {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsgrid-align-right,
|
||||
.jsgrid-align-right input,
|
||||
.jsgrid-align-right textarea,
|
||||
.jsgrid-align-right select {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.jsgrid-header-cell {
|
||||
padding: .5em .5em;
|
||||
}
|
||||
|
||||
.jsgrid-filter-row input,
|
||||
.jsgrid-filter-row textarea,
|
||||
.jsgrid-filter-row select,
|
||||
.jsgrid-edit-row input,
|
||||
.jsgrid-edit-row textarea,
|
||||
.jsgrid-edit-row select,
|
||||
.jsgrid-insert-row input,
|
||||
.jsgrid-insert-row textarea,
|
||||
.jsgrid-insert-row select {
|
||||
width: 100%;
|
||||
padding: .3em .5em;
|
||||
}
|
||||
|
||||
.jsgrid-filter-row input[type='checkbox'],
|
||||
.jsgrid-edit-row input[type='checkbox'],
|
||||
.jsgrid-insert-row input[type='checkbox'] {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
.jsgrid-selected-row .jsgrid-cell {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jsgrid-nodata-row .jsgrid-cell {
|
||||
padding: .5em 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.jsgrid-header-sort {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jsgrid-pager {
|
||||
padding: .5em 0;
|
||||
}
|
||||
|
||||
.jsgrid-pager-nav-button {
|
||||
padding: .2em .6em;
|
||||
}
|
||||
|
||||
.jsgrid-pager-nav-inactive-button {
|
||||
display: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.jsgrid-pager-page {
|
||||
padding: .2em .6em;
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* jsGrid v1.5.3 (http://js-grid.com)
|
||||
* (c) 2016 Artem Tabalin
|
||||
* Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
.jsgrid{position:relative;overflow:hidden;font-size:1em}.jsgrid,.jsgrid *,.jsgrid :after,.jsgrid :before{box-sizing:border-box}.jsgrid input,.jsgrid select,.jsgrid textarea{font-size:1em}.jsgrid-grid-header{overflow-x:hidden;overflow-y:scroll;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.jsgrid-grid-body{overflow-x:auto;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jsgrid-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}.jsgrid-cell{padding:.5em}.jsgrid-header-cell,.jsgrid-сell{box-sizing:border-box}.jsgrid-align-left{text-align:left}.jsgrid-align-center,.jsgrid-align-center input,.jsgrid-align-center select,.jsgrid-align-center textarea{text-align:center}.jsgrid-align-right,.jsgrid-align-right input,.jsgrid-align-right select,.jsgrid-align-right textarea{text-align:right}.jsgrid-header-cell{padding:.5em}.jsgrid-edit-row input,.jsgrid-edit-row select,.jsgrid-edit-row textarea,.jsgrid-filter-row input,.jsgrid-filter-row select,.jsgrid-filter-row textarea,.jsgrid-insert-row input,.jsgrid-insert-row select,.jsgrid-insert-row textarea{width:100%;padding:.3em .5em}.jsgrid-edit-row input[type=checkbox],.jsgrid-filter-row input[type=checkbox],.jsgrid-insert-row input[type=checkbox]{width:auto}.jsgrid-selected-row .jsgrid-cell{cursor:pointer}.jsgrid-nodata-row .jsgrid-cell{padding:.5em 0;text-align:center}.jsgrid-header-sort{cursor:pointer}.jsgrid-pager{padding:.5em 0}.jsgrid-pager-nav-button{padding:.2em .6em}.jsgrid-pager-nav-inactive-button{display:none;pointer-events:none}.jsgrid-pager-page{padding:.2em .6em}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* jsGrid v1.5.3 (http://js-grid.com)
|
||||
* (c) 2016 Artem Tabalin
|
||||
* Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
!function(a,b,c){function d(a,c){var d=b(a);d.data(f,this),this._container=d,this.data=[],this.fields=[],this._editingRow=null,this._sortField=null,this._sortOrder=i,this._firstDisplayingPage=1,this._init(c),this.render()}var e="JSGrid",f=e,g="JSGridItem",h="JSGridEditRow",i="asc",j="desc",k="{first}",l="{pages}",m="{prev}",n="{next}",o="{last}",p="{pageIndex}",q="{pageCount}",r="{itemCount}",s="javascript:void(0);",t=function(a,c){return b.isFunction(a)?a.apply(c,b.makeArray(arguments).slice(2)):a},u=function(a){var c=b.Deferred();return a&&a.then?a.then(function(){c.resolve.apply(c,arguments)},function(){c.reject.apply(c,arguments)}):c.resolve(a),c.promise()},v={loadData:b.noop,insertItem:b.noop,updateItem:b.noop,deleteItem:b.noop};d.prototype={width:"auto",height:"auto",updateOnResize:!0,rowClass:b.noop,rowRenderer:null,rowClick:function(a){this.editing&&this.editItem(b(a.event.target).closest("tr"))},rowDoubleClick:b.noop,noDataContent:"Not found",noDataRowClass:"jsgrid-nodata-row",heading:!0,headerRowRenderer:null,headerRowClass:"jsgrid-header-row",headerCellClass:"jsgrid-header-cell",filtering:!1,filterRowRenderer:null,filterRowClass:"jsgrid-filter-row",inserting:!1,insertRowRenderer:null,insertRowClass:"jsgrid-insert-row",editing:!1,editRowRenderer:null,editRowClass:"jsgrid-edit-row",confirmDeleting:!0,deleteConfirm:"Are you sure?",selecting:!0,selectedRowClass:"jsgrid-selected-row",oddRowClass:"jsgrid-row",evenRowClass:"jsgrid-alt-row",cellClass:"jsgrid-cell",sorting:!1,sortableClass:"jsgrid-header-sortable",sortAscClass:"jsgrid-header-sort jsgrid-header-sort-asc",sortDescClass:"jsgrid-header-sort jsgrid-header-sort-desc",paging:!1,pagerContainer:null,pageIndex:1,pageSize:20,pageButtonCount:15,pagerFormat:"Pages: {first} {prev} {pages} {next} {last} {pageIndex} of {pageCount}",pagePrevText:"Prev",pageNextText:"Next",pageFirstText:"First",pageLastText:"Last",pageNavigatorNextText:"...",pageNavigatorPrevText:"...",pagerContainerClass:"jsgrid-pager-container",pagerClass:"jsgrid-pager",pagerNavButtonClass:"jsgrid-pager-nav-button",pagerNavButtonInactiveClass:"jsgrid-pager-nav-inactive-button",pageClass:"jsgrid-pager-page",currentPageClass:"jsgrid-pager-current-page",customLoading:!1,pageLoading:!1,autoload:!1,controller:v,loadIndication:!0,loadIndicationDelay:500,loadMessage:"Please, wait...",loadShading:!0,invalidMessage:"Invalid data entered!",invalidNotify:function(c){var d=b.map(c.errors,function(a){return a.message||null});a.alert([this.invalidMessage].concat(d).join("\n"))},onInit:b.noop,onRefreshing:b.noop,onRefreshed:b.noop,onPageChanged:b.noop,onItemDeleting:b.noop,onItemDeleted:b.noop,onItemInserting:b.noop,onItemInserted:b.noop,onItemEditing:b.noop,onItemUpdating:b.noop,onItemUpdated:b.noop,onItemInvalid:b.noop,onDataLoading:b.noop,onDataLoaded:b.noop,onOptionChanging:b.noop,onOptionChanged:b.noop,onError:b.noop,invalidClass:"jsgrid-invalid",containerClass:"jsgrid",tableClass:"jsgrid-table",gridHeaderClass:"jsgrid-grid-header",gridBodyClass:"jsgrid-grid-body",_init:function(a){b.extend(this,a),this._initLoadStrategy(),this._initController(),this._initFields(),this._attachWindowLoadResize(),this._attachWindowResizeCallback(),this._callEventHandler(this.onInit)},loadStrategy:function(){return this.pageLoading?new jsGrid.loadStrategies.PageLoadingStrategy(this):new jsGrid.loadStrategies.DirectLoadingStrategy(this)},_initLoadStrategy:function(){this._loadStrategy=t(this.loadStrategy,this)},_initController:function(){this._controller=b.extend({},v,t(this.controller,this))},renderTemplate:function(a,b,d){args=[];for(var e in d)args.push(d[e]);return args.unshift(a,b),a=t.apply(null,args),a===c||null===a?"":a},loadIndicator:function(a){return new jsGrid.LoadIndicator(a)},validation:function(a){return jsGrid.Validation&&new jsGrid.Validation(a)},_initFields:function(){var a=this;a.fields=b.map(a.fields,function(c){if(b.isPlainObject(c)){var d=c.type&&jsGrid.fields[c.type]||jsGrid.Field;c=new d(c)}return c._grid=a,c})},_attachWindowLoadResize:function(){b(a).on("load",b.proxy(this._refreshSize,this))},_attachWindowResizeCallback:function(){this.updateOnResize&&b(a).on("resize",b.proxy(this._refreshSize,this))},_detachWindowResizeCallback:function(){b(a).off("resize",this._refreshSize)},option:function(a,b){var c,d;return 1===arguments.length?this[a]:(c={option:a,oldValue:this[a],newValue:b},this._callEventHandler(this.onOptionChanging,c),this._handleOptionChange(c.option,c.newValue),d={option:c.option,value:c.newValue},void this._callEventHandler(this.onOptionChanged,d))},fieldOption:function(a,b,c){return a=this._normalizeField(a),2===arguments.length?a[b]:(a[b]=c,void this._renderGrid())},_handleOptionChange:function(a,b){switch(this[a]=b,a){case"width":case"height":this._refreshSize();break;case"rowClass":case"rowRenderer":case"rowClick":case"rowDoubleClick":case"noDataRowClass":case"noDataContent":case"selecting":case"selectedRowClass":case"oddRowClass":case"evenRowClass":this._refreLine truncated
|
||||
a.prop("readOnly")?a.prop({checked:!1,readOnly:!1}):a.prop("checked")||a.prop({readOnly:!0,indeterminate:!0})}),this.autosearch&&c.on("click",function(){a.search()}),c},insertTemplate:function(){return this.inserting?this.insertControl=this._createCheckbox():""},editTemplate:function(a){if(!this.editing)return this.itemTemplate.apply(this,arguments);var b=this.editControl=this._createCheckbox();return b.prop("checked",a),b},filterValue:function(){return this.filterControl.get(0).indeterminate?c:this.filterControl.is(":checked")},insertValue:function(){return this.insertControl.is(":checked")},editValue:function(){return this.editControl.is(":checked")},_createCheckbox:function(){return b("<input>").attr("type","checkbox")}}),a.fields.checkbox=a.CheckboxField=d}(jsGrid,jQuery),function(a,b){function c(a){d.call(this,a),this._configInitialized=!1}var d=a.Field;c.prototype=new d({css:"jsgrid-control-field",align:"center",width:50,filtering:!1,inserting:!1,editing:!1,sorting:!1,buttonClass:"jsgrid-button",modeButtonClass:"jsgrid-mode-button",modeOnButtonClass:"jsgrid-mode-on-button",searchModeButtonClass:"jsgrid-search-mode-button",insertModeButtonClass:"jsgrid-insert-mode-button",editButtonClass:"jsgrid-edit-button",deleteButtonClass:"jsgrid-delete-button",searchButtonClass:"jsgrid-search-button",clearFilterButtonClass:"jsgrid-clear-filter-button",insertButtonClass:"jsgrid-insert-button",updateButtonClass:"jsgrid-update-button",cancelEditButtonClass:"jsgrid-cancel-edit-button",searchModeButtonTooltip:"Switch to searching",insertModeButtonTooltip:"Switch to inserting",editButtonTooltip:"Edit",deleteButtonTooltip:"Delete",searchButtonTooltip:"Search",clearFilterButtonTooltip:"Clear filter",insertButtonTooltip:"Insert",updateButtonTooltip:"Update",cancelEditButtonTooltip:"Cancel edit",editButton:!0,deleteButton:!0,clearFilterButton:!0,modeSwitchButton:!0,_initConfig:function(){this._hasFiltering=this._grid.filtering,this._hasInserting=this._grid.inserting,this._hasInserting&&this.modeSwitchButton&&(this._grid.inserting=!1),this._configInitialized=!0},headerTemplate:function(){this._configInitialized||this._initConfig();var a=this._hasFiltering,b=this._hasInserting;return this.modeSwitchButton&&(a||b)?a&&!b?this._createFilterSwitchButton():b&&!a?this._createInsertSwitchButton():this._createModeSwitchButton():""},itemTemplate:function(a,c){var d=b([]);return this.editButton&&(d=d.add(this._createEditButton(c))),this.deleteButton&&(d=d.add(this._createDeleteButton(c))),d},filterTemplate:function(){var a=this._createSearchButton();return this.clearFilterButton?a.add(this._createClearFilterButton()):a},insertTemplate:function(){return this._createInsertButton()},editTemplate:function(){return this._createUpdateButton().add(this._createCancelEditButton())},_createFilterSwitchButton:function(){return this._createOnOffSwitchButton("filtering",this.searchModeButtonClass,!0)},_createInsertSwitchButton:function(){return this._createOnOffSwitchButton("inserting",this.insertModeButtonClass,!1)},_createOnOffSwitchButton:function(a,c,d){var e=d,f=b.proxy(function(){g.toggleClass(this.modeOnButtonClass,e)},this),g=this._createGridButton(this.modeButtonClass+" "+c,"",function(b){e=!e,b.option(a,e),f()});return f(),g},_createModeSwitchButton:function(){var a=!1,c=b.proxy(function(){d.attr("title",a?this.searchModeButtonTooltip:this.insertModeButtonTooltip).toggleClass(this.insertModeButtonClass,!a).toggleClass(this.searchModeButtonClass,a)},this),d=this._createGridButton(this.modeButtonClass,"",function(b){a=!a,b.option("inserting",a),b.option("filtering",!a),c()});return c(),d},_createEditButton:function(a){return this._createGridButton(this.editButtonClass,this.editButtonTooltip,function(b,c){b.editItem(a),c.stopPropagation()})},_createDeleteButton:function(a){return this._createGridButton(this.deleteButtonClass,this.deleteButtonTooltip,function(b,c){b.deleteItem(a),c.stopPropagation()})},_createSearchButton:function(){return this._createGridButton(this.searchButtonClass,this.searchButtonTooltip,function(a){a.search()})},_createClearFilterButton:function(){return this._createGridButton(this.clearFilterButtonClass,this.clearFilterButtonTooltip,function(a){a.clearFilter()})},_createInsertButton:function(){return this._createGridButton(this.insertButtonClass,this.insertButtonTooltip,function(a){a.insertItem().done(function(){a.clearInsert()})})},_createUpdateButton:function(){return this._createGridButton(this.updateButtonClass,this.updateButtonTooltip,function(a,b){a.updateItem(),b.stopPropagation()})},_createCancelEditButton:function(){return this._createGridButton(this.cancelEditButtonClass,this.cancelEditButtonTooltip,function(a,b){a.cancelEdit(),b.stopPropagation()})},_createGridButton:function(a,c,d){var e=this._grid;return b("<input>").addClass(this.buttonClass).addClass(a).attr({type:"button",title:c}).on("click",function(a){d(e,a)})},editValue:function(){return""}}),a.fields.control=a.ControlField=c}(jsGrid,jQuery);
|
||||
Reference in new issue
Block a user