Skip to content

Instantly share code, notes, and snippets.

@davorbadrov
davorbadrov / checkDuration.js
Created March 28, 2014 14:58
Check video duration from a video selected through the <input> element, it should be usable with drag'n'drop too. NOTE: this hasn't been tested
/* global document, URL, alert */
// TODO: Check support for video types & URL.createObjectURL() function
// NOTE: IE9 doesn't seem to support URL object, but a polyfill seems to exist: https://gist.github.com/arv/1384398
function getDuration(videoFile, callback) {
'use strict';
var type = videoFile.type;
var videoEl = document.createElement('video');
videoEl.preload = 'metadata';
@davorbadrov
davorbadrov / index.html
Last active August 29, 2015 14:06
Vertically center content using pseudo elements
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div class="container">
<div class="box">OMG! I'm centered!</div>
</div>
@davorbadrov
davorbadrov / index.html
Created November 4, 2015 18:29
Responsive elements with dynamic content using table styling.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div class="bar-container">
<div class="bar"></div>
var Promise = require('bluebird');
...
// Transforms node based callbacks into methods that return Promises
Promise.promisifyAll(Awesomify);
Promise.map(jsonArray, function (jsonItem) {
return Awesomify.transformAsync(jsonItem);
})
.then(function(transformedResults) {
@davorbadrov
davorbadrov / index.js
Created December 23, 2015 07:16
Simple React/Redux example, taken from Dan Abramov's Redux tutorial series on Egghead.io
import React from 'react';
import ReactDOM from 'react-dom';
import expect from 'expect';
import { createStore } from 'redux';
/**
* The reducer function which takes a state and action,
* returns the new state
*
* @param {Number} state old state from the store
@davorbadrov
davorbadrov / index.js
Last active October 27, 2016 12:33
Tag and Autocomplete combined - Using Awesomeplete + Taggle libs together to create an autocompleting tag input
// Suppose we have a following HTML element in page:
// <div id="tags" />
const tagsInput = new Taggle(document.querySelector('#tags'), {
allowDuplicates: false,
preserveCase: true,
attachTagId: true,
// tags: preexistingTagsToPrefilTheinput,
// onTagAdd: (e, tag) => {
// console.log('adding tag', tag);
@davorbadrov
davorbadrov / form_examples.js
Created December 6, 2016 09:08
React (controlled) form elements
// SELECT
<select value={this.state.value} onChange={this.handleChange}>
<option value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
// TEXTAREA
<textarea value={this.state.value} onChange={this.handleChange} />
@davorbadrov
davorbadrov / readJson.js
Created May 9, 2017 20:08
Read JSON file in frontend
// jsonFile can be files[0] from the change event on the input
// it returns a Promise which resolves as JSON content
// or rejects and outputs why it failed
export function readJSON(jsonFile) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = event => {
try {
const jsonContent = JSON.parse(reader.result);
@davorbadrov
davorbadrov / find_multiple.sql
Last active August 6, 2017 17:44
SQL - Find multiple entries inside a table for given values.
# find multiple entries for a certain fields
select count(*), field1, field2 from some_table group by field1, field2 having count(*) > 1;
@davorbadrov
davorbadrov / getTimezone.js
Last active October 5, 2017 08:15
Google Timezone API
/**
* Gets timezone info from Google's Timezone API
* based on passed latitude and longitude.
*/
const request = require('request');
const API_KEY = '...';
function getTimezone({latitude, longitude}) {
const timestamp = Math.floor(new Date().getTime() / 1000);
const url = `https://maps.googleapis.com/maps/api/timezone/json?location=${latitude},${longitude}&timestamp=${timestamp}&key=${API_KEY}`;