Skip to content

Instantly share code, notes, and snippets.

@celsowhite
celsowhite / otto.liquid
Last active July 24, 2023 18:25
Otto snippet for generating a scheduled image placement.
{% comment %}
Data
---
otto_placement_name: Pass this to the snippet. The name is provided in the Otto app.
{% endcomment %}
{% liquid
assign otto_image_metafield = shop.metafields.otto-components[otto_placement_name].value
assign otto_image_file = shop.metafields.otto-files[otto_placement_name].value
assign otto_mobile_image_file_name = otto_placement_name | append: "-mobile"
@celsowhite
celsowhite / otto-code-reference.liquid
Last active September 23, 2023 18:11
Otto Code Reference
{%- comment -%}
Otto Metafield Data
---
Reference for integrating Otto into a theme.
{%- endcomment -%}
{% comment %}
Placement Name
---
The placement name is the name provided in the app. Given a placement name, you can reference all of it's data in metafields.
@celsowhite
celsowhite / get-elem-coords.js
Created March 21, 2023 16:55
Get the coordinates of an element relative to the top of the page.
export default function getElemCoords(elem) {
var box = elem.getBoundingClientRect();
var body = document.body;
var docEl = document.documentElement;
var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;
var clientTop = docEl.clientTop || body.clientTop || 0;
export default function randomIntFromInterval(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
const delay = (ms) => new Promise((r) => setTimeout(r, ms));
export default delay;
@celsowhite
celsowhite / json-to-csv.js
Last active September 23, 2022 13:54
Given a json file or json data output it's contents to a csv.
/*-----------------------
Imports
-----------------------*/
import fs from "fs";
import csv from "csvtojson";
import path from "path";
import { fileURLToPath } from "url";
import { stringify } from "csv";
/*-----------------------
@celsowhite
celsowhite / recursive-api-call.js
Last active September 23, 2022 13:48
Call an api recursively to gather all data across pages.
// Data
const data = [];
// Recursive function to call the api in paginated batches. Depending on the api may need a limiter.
async function getDataRecursive(page) {
// Query for assets at a certain page.
const response = await axios.get(
`${apiUrl}?page=${page}&limit=250`,
{
headers: {
@celsowhite
celsowhite / csv-to-json.js
Created September 1, 2022 20:08
Convert a csv file to json and save it to a folder.
/*-----------------------
Imports
-----------------------*/
import fs from "fs";
import glob from "glob";
import csv from "csvtojson";
/*-----------------------
Script
-----------------------*/
@celsowhite
celsowhite / keen-arrow-nav.js
Last active July 27, 2022 13:40
Keen slider nav plugins.
/*----------------------------
Keen Arrow Nav
---
Plugin for Keen sliders to configure arrow navigation.
----------------------------*/
export default function keenArrowNav(slider) {
// Elements
const container = slider.container.closest('.keen-slider__container');
const arrows = container.querySelectorAll('.keen-slider__arrow');
{
"id": 32608807518292,
"properties": {
"_version": 3,
"_Style": "fpg1001",
"_isTrackInventory": false,
"_trackInventoryOptions": [
],
"_price_additional": 3000,