Skip to content

Instantly share code, notes, and snippets.

@slavabelaev
slavabelaev / bind.js
Created August 1, 2021 18:07 — forked from MiguelCastillo/bind.js
Bind polyfill
/**
* Function bind polyfill
* https://github.com/ariya/phantomjs/issues/10522
*/
if (!Function.prototype.bind) {
Function.prototype.bind = function (context /* ...args */) {
var fn = this;
var args = Array.prototype.slice.call(arguments, 1);
@slavabelaev
slavabelaev / video-src-breakpoint-changer.js
Created January 12, 2020 11:17
Change video src on change breakpoints
(function() {
const mediaQueries = [
{
minWidth: 0,
maxWidth: 500,
minHeight: 0,
maxHeight: 9999,
posterUrl: '/storage/thaSxSUsLJxaESsgJiQQ4x98hwyWaI79VUSh0PiE.jpeg?v=1',
src: '/assets/video/home.mp4?v=1',
},
version: '3.3'
services:
frontend:
image: wordpress
networks:
- frontend
ports:
- 8080:80
@slavabelaev
slavabelaev / render.server.js
Last active December 17, 2018 12:32
Universal SEO Render (for Angular, Vue, React and other Ajax Apps)
// 1. Put this file in root directory of your App
// 2. Run `npm install --save-dev express puppeteer http-proxy isbot`
// 3. Change const `renderedAppPort` to port of your app (example: 4200 for Angular by default)
// 4. Start serve your app (example: > `ng serve --prod --port=4200`)
// 5. Run `node render.server.js` (It will be launched on port 80)
// If a crawler bot is detected, the page will be rendered. If not, the application will work as usual.
const express = require('express'); // Node Server
const httpProxy = require('http-proxy'); // Proxy Server
@slavabelaev
slavabelaev / adapt-data-tables.js
Created November 23, 2018 11:58
Adapt Data tables
(function() {
function adaptDataTables() {
const tableElements = document.querySelectorAll('table');
tableElements.forEach(tableElement => {
const headerElements = tableElement.querySelectorAll('thead > tr > *');
const rowElements = tableElement.querySelectorAll('tbody > tr');
rowElements.forEach(rowElement => {
const cellElements = rowElement.querySelectorAll('td');
cellElements.forEach((cellElement, index) => {
cellElement.setAttribute('data-title', headerElements[index].textContent)
console.clear();
var groupMemberElement = document.querySelector('#groupsMemberBrowserContent'),
groupMembers = [];
var backDropContainer = document.createElement('div');
var downloadButton = document.createElement('button');
var countParsedMembersElement = document.createElement('span');
function getGroupMembers(searchableElement) {
@slavabelaev
slavabelaev / jquery.newguid.js
Created April 26, 2018 08:30 — forked from leegould/jquery.newguid.js
Jquery plugin for creating a new guid.
/* Jquery function to create guids.
* Guid code from
* http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
*/
(function ( $ ) {
$.fn.newguid = function () {
this.val('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }));
return this;
};
@slavabelaev
slavabelaev / addClassToContainerElements.js
Last active April 19, 2018 16:55
Appended className for elements in container
// Appended className for elements in container
// containerSelector — Container with any elements
// elementsSelector — Elements to which the class will be added
// classNameToAdd — The class to be added to the elements
function addClassToContainerElements(containerSelector, elementsSelector, classNameToAdd) {
document
.querySelectorAll(containerSelector)
.forEach(function(containerElement, index) {
containerElement
.querySelectorAll(elementsSelector)
@slavabelaev
slavabelaev / example-of-using.js
Last active April 9, 2018 06:20
Change video resolution url by window size
// Apply function on load and resize
(function() {
function onResize() {
var breakPointsUrls = {
3840: 'https://staging.kpwlaw.com/video/home-1080p.mp4',
2560: 'https://staging.kpwlaw.com/video/home-1080p.mp4',
1440: 'https://staging.kpwlaw.com/video/home-720p.mp4',
1024: 'https://staging.kpwlaw.com/video/home-540p.mp4',
768: 'https://staging.kpwlaw.com/video/home-540p.mp4',
425: 'https://staging.kpwlaw.com/video/home-540p.mp4',