Skip to content

Instantly share code, notes, and snippets.

View mikehibm's full-sized avatar
🏠
Working from home

Mike I mikehibm

🏠
Working from home
View GitHub Profile
@mikehibm
mikehibm / GoogleAnalytics.js
Last active February 21, 2019 02:39
A react component to use Google Analytics with React Static.
import React, { Component } from 'react';
import { Head, withSiteData } from 'react-static';
// Reference URL
// https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications
// https://github.com/googleanalytics/autotrack#urlchangetracker
class GoogleAnalytics extends Component {
componentDidMount() {
// Ignore if not running on browser.
@mikehibm
mikehibm / computerPlayer1.ts
Created January 12, 2019 20:45
computerPlayer1.ts
const thinkProc = () => {
self.addEventListener(
'message',
function(e) {
console.log('Worker called: ', e.data);
const board: BoardState = e.data.board;
let result = { row: -1, col: -1 };
const placeableCells: CellState[] = [];
board.cells.forEach((row) => {
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import createWorker from './createWorker';
import myWorkerFunc from './myWorker';
ReactDOM.render(<App />, document.getElementById('root'));
/* eslint no-restricted-globals: ["error"] */
export default () => {
let count = 0;
self.addEventListener(
'message',
function(e) {
if (e.data.action === 'count') {
count++;
export default (workerFunc: () => void) => {
let code = workerFunc.toString();
code = code.substring(code.indexOf('{') + 1, code.lastIndexOf('}'));
const blob = new Blob([code], { type: 'application/javascript' });
return new Worker(URL.createObjectURL(blob));
};
@mikehibm
mikehibm / blog-1-App.tsx
Created October 26, 2018 01:07
App.tsx
class App extends React.Component<Props, State> {
state = { page: 'menu' };
onChangeStore = () => {
const { page } = store.getState();
this.setState({ page });
};
componentDidMount() {
store.on('page_changed', this.onChangeStore);
import * as React from 'react';
import * as moment from 'moment';
import { WorkItem } from './WorkItem';
import './Report.css';
interface Props {
items: WorkItem[];
}
export const Report = (props: Props) => {
import * as moment from 'moment';
export interface WorkItem {
user: string;
client: string;
project: string;
description: string;
startDate: Date;
endDate: Date;
duration: number;
function mapCSVToArray(csv: string): string[][] {
return csv.split('\n').map((row) => row.split(','));
}
function readFileAsText(file: Blob): Promise<string> {
return new Promise<string>((resolve, reject) => {
const reader = new FileReader();
reader.onerror = () => reject(reader.error);
reader.onload = () => resolve((reader.result as string) || '');
reader.readAsText(file);
});
}