Skip to content

Instantly share code, notes, and snippets.

View Yamo93's full-sized avatar

Yamo Gebrewold Yamo93

  • IKEA
  • Malmö, Sweden
View GitHub Profile
@Yamo93
Yamo93 / subscribe_method.js
Created October 31, 2020 21:48
Subscribe method
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = [];
}
subscribers[eventName].push(callback);
}
@Yamo93
Yamo93 / publish_method.js
Created October 31, 2020 21:50
Publish method
function publish(eventName, data) {
if (!Array.isArray(subscribers[eventName])) {
return;
}
subscribers[eventName].forEach(callback => {
if (typeof callback === 'function') {
callback(data);
}
})
}
@Yamo93
Yamo93 / publish_subscribe.js
Created October 31, 2020 21:51
Publish subscribe factory function
function publishSubscribe() {
const subscribers = {};
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = [];
}
subscribers[eventName].push(callback);
}
function publish(eventName, data) {
if (!Array.isArray(subscribers[eventName])) {
@Yamo93
Yamo93 / simple_unsubscribe.js
Created October 31, 2020 21:52
Simple unsubscribe method
function unsubscribe(eventName) {
delete subscribers[eventName];
}
@Yamo93
Yamo93 / extended_subscribe.js
Created October 31, 2020 21:53
Extended subscribe with unsubscribe return value
function subscribe(eventName, callback) {
if (!Array.isArray(subscribers[eventName])) {
subscribers[eventName] = []
}
subscribers[eventName].push(callback);
const index = subscribers[eventName].length - 1;
return () => {
subscribers[eventName].splice(index, 1);
}
}
@Yamo93
Yamo93 / pseudo_pub_sub.js
Created October 31, 2020 21:59
Pseudo code for pub-sub pattern
const subscribers = {
onUserUpdate: [callbackFunction, anotherCallbackFunction],
onUserLogin: [callbackFunction, anotherCallbackFunction]
};
function initializeDatabase(database) {
switch (database.type) {
case 'mysql':
database.connectToMySql();
break;
case 'postgres':
database.connectToPostgres();
break;
case 'mongodb':
database.connectToMongoDb();
function initializeDatabase(database) {
if (typeof database.init !== 'function') {
throw 'Engine has no init method';
}
database.init();
}
const mySqlEngine = {
type: 'mysql',
import { Grid, DataGenerator } from '../../build/grid.module.js?449264';
import shared from '../_shared/shared.module.js?449264';
const grid = new Grid({
appendTo: 'container',
autoHeight: true,
callOnFunctions: true,
className: '',
columns: [
{
@Yamo93
Yamo93 / answer_generator.js
Last active June 23, 2022 21:58
A class which can generate all possible combinations for a question with x true/false statements. For example, a question with 5 true/false statements can have 2^5 (32) possible combinations.
class AnswerGenerator {
combinations = [];
combinationNumber = -1;
generateCombinations(numOfStatements = 5) {
const combinations = [];
const numOfPossibleCombinations = 2 ** numOfStatements;
for (let i = 0; i < numOfPossibleCombinations; i++) {
// for every number, convert it to binary
const binary = i.toString(2); // 16 => 10000