Skip to content

Instantly share code, notes, and snippets.

@esneko
esneko / _taxon_globalize_form_inside.html.erb
Created February 26, 2011 11:51
Taxon Globalize Accessors
<% if(Taxon.easy_accessors.blank?) %>
<%= f.field_container :name do %>
<%= f.label :name, t("name") %> <span class="required">*</span><br />
<%= error_message_on :taxon, :name, :class => 'fullwidth title' %>
<%= text_field :taxon, :name %>
<% end %>
<% else %>
<%- Taxon.easy_accessors.each do |locale| %>
<% fieldsym = "name_#{locale}".to_sym %>
@esneko
esneko / _taxonomy_globalize_form_inside.html.erb
Created March 16, 2011 23:50
Taxonomy Globalize Accessors
<% if(Taxonomy.easy_accessors.blank?) %>
<%= f.field_container :name do %>
<%= f.label :name, t("name") %> <span class="required">*</span><br />
<%= error_message_on :taxonomy, :name, :class => 'fullwidth title' %>
<%= text_field :taxonomy, :name %>
<% end %>
<% else %>
<%- Taxonomy.easy_accessors.each do |locale| %>
<% fieldsym = "name_#{locale}".to_sym %>
// disable overscroll when top/bottom body egde reached on Safari
// bounce scrolling is still working after touch event compleated
var touchEvent;
document.body.addEventListener('touchstart', function(e) {
touchEvent = e;
}
document.body.addEventListener('touchmove', function(e) {
if ((e.originalEvent.pageY > touchEvent.originalEvent.pageY && this.scrollTop === 0) ||
(e.originalEvent.pageY < touchEvent.originalEvent.pageY && this.scrollTop + this.offsetHeight >= this.scrollHeight)) {
(def app-history (atom [@app-state]))
(add-watch app-state :history
(fn [_ _ _ n]
(when-not (= (last @app-history) n)
(swap! app-history conj n))
(aset js/window "undo"
(fn [e]
(when (> (count @app-history) 1)
<Route name="root" path="/" handler={App}>
<Route name="inbox" handler={Inbox}>
<Route name="message" path=":messageId" handler={Message}/>
<DefaultRoute handler={InboxStats}/>
</Route>
</Route>
@esneko
esneko / gist:385e7f85894bee793ba0
Created July 8, 2015 15:15
Wrapper for React Component with React Router
class Wrapper extends React.Component {
constructor(props) {
super(props);
this.state = { handler: null };
}
componentDidMount() {
Router.run(routes, this.handleNavigation.bind(this));
}
handleNavigation(Handler, state) {
this.setState({
@esneko
esneko / index.html
Created September 23, 2015 15:15
CSS3 animations
<!DOCTYPE html>
<html>
<head>
<link href="style.css" rel="stylesheet"/>
</head>
<body>
<label for="overlay">open</label>
<input type="checkbox" id="overlay">
<div class="overlay">
<div class="content">
@esneko
esneko / index.html
Created September 23, 2015 15:17
CSS3 animations (GPU accelerated)
<!DOCTYPE html>
<html>
<head>
<link href="style.css" rel="stylesheet"/>
</head>
<body>
<label for="overlay">open</label>
<input type="checkbox" id="overlay">
<div class="overlay">
<div class="content">
@esneko
esneko / generator.js
Created December 22, 2015 09:48
async tasks
function* files() {
var results = [];
for (var k = 0; k < files.length; ++k)
results.push(yield files[k]);
return results;
}
var iterator = files();
function process(iterator, sendValue) {
var fileTask = iterator.next(sendValue);
@esneko
esneko / iterator.js
Created December 28, 2015 16:43
iterator class
class C {
constructor() {
this.c = new Set();
}
add(x) {
this.c.add(x);
}
[Symbol.iterator]() {
return this.c[Symbol.iterator]();
}