Skip to content

Instantly share code, notes, and snippets.

var ids = String(
this.req.param('id') ||
this.req.param('ids')
).match(/(\d+)/g);
@lahmatiy
lahmatiy / patch.js
Created July 9, 2013 23:51
Path for field resolving in basis.data.value.BindValue#addLink and basis.data.value.BindValue#removeLink (resolving was dropped in 0.9.5)
basis.require('basis.data.value');
basis.require('basis.dom');
var DOM = basis.dom;
var BindValue = basis.data.value.BindValue;
var DOM_INSERT_HANDLER = function(value){
DOM.insert(DOM.clear(this), value);
};
@lahmatiy
lahmatiy / AbstractDataset#compute.js
Created July 27, 2013 14:51
AbstractDataset#compute
basis.require('basis.event');
basis.require('basis.data');
var datasetComputeFunctions = {};
basis.data.AbstractDataset.extend({
/**
* @param {string|Array.<string>=} events
@lahmatiy
lahmatiy / 1_template_BEFORE.html
Last active August 29, 2015 14:01
Basis.js 1.3 features <b:isolate> and b:show in use. Example from devpanel style refactoring: https://github.com/basisjs/basisjs/commit/b17a8026684c3cd2e1a5a6fafac6b55ecefee236
<b:style src="./item.css"/>
<b:define name="nestedViewCount" type="bool"/>
<b:define name="satelliteName" type="bool"/>
<b:define name="namespace" type="bool"/>
<div class="basisjs-devpanel-ui-view-item">
<div class="basisjs-devpanel-ui-view-item__title" event-click="toggle" event-mouseenter="enter" event-mouseleave="leave">
<div class="basisjs-devpanel-ui-view-item__expander basisjs-devpanel-ui-view-item__expander_{nestedViewCount}"/>
<span class="basisjs-devpanel-ui-view-item__satelliteName basisjs-devpanel-ui-view-item__satelliteName_{satelliteName}">
{satelliteName}
@lahmatiy
lahmatiy / tests.js
Last active August 29, 2015 14:02
Closure vs Function#bind
//
// Closure
//
var a = []; // хранилище истансов, чтобы они не разрушались (не собирались GC)
var getClosure = function(a){ return function(b){ return fn(a, b); } };
var t = performance.now();
for (var i = 0; i < 10000; i++)
a.push(getClosure(i));
//
// Case 1
//
var a = [];
var t = performance.now();
for (var i = 0; i < 10000; i++)
a.push(new Promise(function(){}));
@lahmatiy
lahmatiy / wat.js
Last active August 29, 2015 14:04
elem.animate() as cool as not ready to use!
// create element with color green
var elem = document.createElement('div');
elem.style.color = 'green';
document.body.appendChild(elem); // add to document, to make getComputedStyle/animate works
console.log(getComputedStyle(elem).color); // rgb(0, 128, 0) - it's OK!
// add animation
var player = elem.animate([
{ color: 'red' },
{ color: 'blue' }
@lahmatiy
lahmatiy / _usage.js
Last active August 29, 2015 14:05
basis.data.ReadOnlyDataset#contains
// we could create several effects for node/models and don't affect node/models
var source = new basis.data.Dataset({ items: [/* .. */]});
var modified = new basis.data.dataset.Filter({
source: source,
ruleEvents: 'rollbackUpdate',
rule: 'data.modified'
});
var customSet = new basis.data.Dataset();
var view = new basis.ui.Node({
function getRange(str, start, end){
var lines = str
.split('\n')
.slice(start.line - 1, end.line);
return lines
.concat(lines.pop().substr(0, end.column))
.join('\n')
.substr(start.column - 1);
}
@lahmatiy
lahmatiy / enum.js
Last active August 29, 2015 14:17
Example of persistent user preferences using basis.js
//
// Enum class is proposed future citizen of basis.js
//
var Value = require('basis.data').Value;
var Enum = Value.subclass({
className: 'Enum',
init: function(){