class TableManagement extends React.Component {
constructor(props) {
super(props);
this.state = {
head_names: ['qwe0', 'qwe1'],
rows: [
[1, 2],
[3, 4]
]
};
}
AddRow() {
let newRows = this.state.rows;
newRows.push([0, 0]);
this.setState({rows: newRows});
}
render() {
return (
<div>
<Table head={this.state.head_names} rows={this.state.rows} />
<hr />
<button onClick={ this.AddRow.bind(this) }>Add row</button>
</div>
);
}
}
class Table extends React.Component {
render() {
return (
<table>
<thead>
{this.genHead()}
</thead>
<tbody>
{this.genRow()}
</tbody>
</table>
);
}
genHead() {
var head = this.props.head;
return head.map(function(v, i) {
return (
<th key={'th' + i}>
{v}
</th>
);
});
}
genRow() {
var rows = this.props.rows;
return rows.map(function(v, i) {
var tmp = v.map(function(v2, j) {
return (
<td key={'td' + i + '_' + j}>
{v2}
</td>
);
});
return (
<tr key={'tr' + i}>
{tmp}
</tr>
)
});
}
}
ReactDOM.render(
<TableManagement />,
document.getElementById('root')
);
case valMetr == 0:
valMetr = 0: // <<===== ошибка, должна быть точка с запятой
break;
case valMetr>1 && valMetr<=49:
valMetr = 30: // <<===== ошибка, должна быть точка с запятой
break;
var grid, dialog;
grid = $('#grid').grid({
// ваш url, который будет передавать данные из вашей бд
dataSource: '/Grid/GetPlayers',
uiLibrary: 'bootstrap',
// имена полей, которые следует выводить в таблице
columns: [
{ field: 'ID', width: 32 },
{ field: 'Name', sortable: true },
{ field: 'PlaceOfBirth', title: 'Place Of Birth', sortable: true }
],
pager: { limit: 5, sizes: [2, 5, 10, 20] }
});
Update-Package –reinstall
[HttpPost]
public JsonResult GetAccounts(int page, int limit)
{
using (var context = new Database1Entities())
{
// получаем записи для указанной страницы
var result = context.Account.OrderBy(
row => row.AccountID
).Skip((page - 1) * limit).Take(limit).ToArray();
int total = context.Account.Count();
// возвращаем json
return Json(new { records = result, total = total });
}
}
grid = $('#grid').grid({
// ссылка на действие GetAccounts в контроллере Home
// запрос выполняется методом POST
dataSource: { url: '/Home/GetAccounts', method: 'POST' },
uiLibrary: 'bootstrap',
columns: [
{ field: 'AccountID', sortable: true },
{ field: 'FirstName', sortable: true },
{ field: 'LastName', sortable: true },
{ field: 'Company', sortable: true },
{ field: 'Position', sortable: true }
],
pager: { limit: 2, sizes: [2, 5, 10, 20] }
});
<script src="i18n/datepicker-ru.js"></script>
$('#datepicker').datepicker($.datepicker.regional[ 'ru' ]);
$('#datepicker').datepicker({ firstDay: 1 });
// или
$('#datepicker').datepicker('option', 'firstDay', 1);
Confirm("Да или Нет?").then((result) => {
if (result) {
console.log("Пользователь согласен на всё.");
}
else
{
console.log("Пользователь что-то подозревает.");
}
});
function Confirm(message) {
let p = new Promise((resolve, reject) => {
// тут код создания окна
// $.fancybox({
// modal: true,
// content: '<div>' + message + '</div>'
// });
// в обработчики кнопок нужно добавить вызов resolve
// true - если пользователь нажал Ok
// resolve(true);
// false - если пользователь нажал Отмена
// resolve(false);
});
return p;
}
function Confirm(message) {
return new Promise(function(resolve, reject) {
var buttons = $('<div class="buttons" />');
var btnOk = $('<button class="btn btn-default">Ok</button>');
var btnCancel = $('<button class="btn btn-default">Отмена</button>');
var content = $('<div />');
btnOk.click(function() {
resolve(true);
$.fancybox.close();
});
btnCancel.click(function() {
resolve(false);
$.fancybox.close();
});
content.append('<div class="message" />');
content.append('<hr />');
content.append(buttons);
$('.message', content).html(message);
buttons.append(btnOk);
buttons.append(' ');
buttons.append(btnCancel);
$.fancybox({
modal: true,
content: content
});
});
}
Confirm('Вы согласны с этим решением?').then(function(result) {
if (result) {
$('body').append("<h1>Отлично!</h1>");
}
else {
$('body').append("<h1>Очень жаль...</h1>");
}
});
var element = document.createElement('div');
element.id = 'test'; // уникальный идентификатор элемента
element.innerHTML = 'создан новый элемент';
document.body.appendChild(element);
// получаем по идентификатору добавленный элемент
document.getElementById('test').innerHTML = 'изменено содержимое созданного элемента';
console.log('path', path);
var path = document.createElement('path');
path.className = 'anyClass';
console.log('path', document.querySelector('.anyClass'));
var path = document.createElement('path');
path.id= 'path';
console.log('path', document.getElementById('path'));
console.log('path', document.getElementsByTagName('path'));
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
var data = [];
// получаем данные из таблицы в массив
$('tr', 'table>tbody').each(function(index, row) {
var cells = $('td', row);
var sum = 0;
var items = [];
for (var i = 0; i < cells.length; i++)
{
if (i == cells.length - 1)
{
cells[i].innerHTML = sum / 5;
items.push(sum / 5);
}
else
{
sum += parseInt(cells[i].innerHTML, 10);
items.push(parseInt(cells[i].innerHTML, 10));
}
}
data.push(items);
});
// сортируем массив
data.sort(function (a, b) {
return a[5] - b[5];
});
// создаем новую таблицу на основе массива
var html = '<table><thead><tr>';
html += '<th>price</th><th>price</th><th>price</th>';
html += '<th>price</th><th>price</th><th>avrg</th></tr></thead>';
html += '<tbody>';
for (var i = 0; i < data.length; i++)
{
html += '<tr>';
for (var j = 0; j < data[i].length; j++)
{
html += '<td>' + data[i][j] + '</td>';
}
html += '</tr>';
}
html += '</tbody></table>';
// выводим таблицу (перезаписываем старую)
$('#content').html(html);
this.replaceStandardHtmlEntities = (text) => {
// маскируем ссылки
text = text.replace(/\<a([^\>]*)\>/g, String.fromCharCode(1) + 'a$1' + String.fromCharCode(1));
text = text.replace(/\<\/a\>/g, String.fromCharCode(1) + '/a' + String.fromCharCode(1));
// остальной код без изменений
let regular = /( {2}|&|'|<|>|\\n)/g, translate = {
' ': ' ',
'&': '&',
'\'': '"',
'<': '<',
'>': '>',
'\\n': '<br>'
};
// результат замены передаем в переменную
let result = (text.replace(regular, (match, entity) => {
return translate[entity];
}));
// возвращаем ссылки обратно
result = result.replace(/\x01a([^\x01]*)\x01/g, '<a$1>');
result = result.replace(/\x01\/a\x01/g, '</a>');
return result;
};
// входящие данные
var str = 'odborka_vecher_01.jpg,%,podborka_vecher_37.jpg';
// разбиваем на массив по запятой
var arr = str.split(',');
// фильтруем
var resultArr = [];
for (var i = 0; i < arr.length; i++)
{
if (arr[i] != '%')
{
// добавляем в результат
resultArr.push(arr[i]);
}
}
// склеиваем новый массив в строку
var result = resultArr.join(',');
// выводим полученный результат в консоль
console.log(result);
str.split(',').forEach(function(item) {
if (item != '%') {
if (result != '') { result += ','; }
result += item;
}
});
console.log(result);
var arr = str.split(',').filter(function(item) {
return item != '%';
});
var result = arr.join(',');
var result = str.replace(/,\%,/g, '');
// с учетом того, что % может быть первым или последним
// str.replace(/(\,*)\%(\,*)/g, '')
if (window.location.hash != '') {
var hash = window.location.hash.substring(1);
var accessToken = hash.substr(hash.indexOf('access_token=')).split('&')[0].split('=')[1];
sessionStorage.setItem('access_token', accessToken);
// для безопасности, из url лучше удалить access_token
window.location.hash = '';
// window.location.href = window.location.href.substr(0, window.location.href.indexOf('#'))
}
// и далее использовать сохраненный маркер доступа
var currentAccessToken = sessionStorage.getItem('key');
return $sce.trustAsHtml(text.replace(/\\/g, ''));
<div ng-app="app">
<div ng-controller="ExampleController">
<p ng-bind-html="text | trusted"></p>
</div>
</div>
angular.module('app', []).controller('ExampleController', function($scope) {
$scope.text = "A GREAT LOT, THIS IS THE ONE YOU\'VE BEEN LOOKING FOR";
}).filter('trusted', ['$sce', function ($sce) {
return function (text) {
return $sce.trustAsHtml(text); // $sce.trustAsHtml(text.replace(/\\/g, ''));
};
}]);
<div class="clickme">
Нажми на меня!
</div>
$('.clickme').click(function(){
if (!$(this).data('status')) {
$(this).html('Молодец! А еще раз слабо?');
$(this).data('status', true);
}
else {
$(this).html('Ну ты гигант! А может еще раз?');
$(this).data('status', false);
}
});
var Hello = React.createClass({
getInitialState: function() {
return { test: 0 };
},
componentWillMount: function() {
setInterval(() => {
var dynamicData = (Math.random() * 100).toFixed(0);
this.setState({ test: dynamicData });
}, 3000);
},
render: function() {
return <h2>{this.state.test}</h2>;
}
});
ReactDOM.render(
<Hello />,
document.getElementById('container')
);
function CoffeeMachine(power) {
//...
var self = this; // запоминаем ссылку на текущий объект
//...
function getBoilTime() {
// здесь this будет ссылкой на window,
// т.к. вызов метода getBoilTime() происходит из другого контекста
// доступ к исходному объекту возможен через ссылку,
// которая была передана в переменную self
console.log('this', this);
console.log('self', self);
return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
}
// ...
this.run = function() {
setTimeout(onReady, getBoilTime());
};
}
function CoffeeMachine(power) {
this.waterAmount = 0;
var WATER_HEAT_CAPACITY = 4200;
function getBoilTime() {
console.log('getBoilTime', this);
return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
}
function onReady() {
alert( 'Кофе готово!' );
}
this.run = function() {
console.log('run', this);
var interval = getBoilTime.apply(this, null);
setTimeout(onReady, interval);
};
}
var coffeeMachine = new CoffeeMachine(100000);
coffeeMachine.waterAmount = 200;
coffeeMachine.run.apply(coffeeMachine, null);
Не переписывать же плагины, верно? Кто как с этим борется?