Skip to content

Instantly share code, notes, and snippets.

View AlphaGit's full-sized avatar

Alpha AlphaGit

View GitHub Profile
@AlphaGit
AlphaGit / addFakeNodes.js
Created April 19, 2014 18:48
Sugiyama algorithm: add fake nodes when needed
var fakeNodeData = { __fake: true };
sugiyamaService.insertFakeNodeBeforeNext = function(list, currentNode, nextNode) {
var fakeNode = sugiyamaService.createNode(fakeNodeData);
sugiyamaService.disconnectNodes(currentNode, nextNode);
sugiyamaService.connectNodes(fakeNode, nextNode);
sugiyamaService.connectNodes(currentNode, fakeNode);
list.push(fakeNode);
@AlphaGit
AlphaGit / minimizeCrossings.js
Created April 20, 2014 21:19
Sugiyama algorithm: minimizing crossings, naive approach
var minimizeCrossingsArisingFromColumnAndRows = function(grid, columnIndex, rowIndex1, rowIndex2) {
var originalNode1 = grid[columnIndex][rowIndex1];
var originalNode2 = grid[columnIndex][rowIndex2];
var nextColumn = grid[columnIndex + 1];
for (var nextNode1Index = 0; nextNode1Index < originalNode1.nextNodes.length; nextNode1Index++) {
var nextNode1 = originalNode1.nextNodes[nextNode1Index];
var nextNode1Row = nextColumn.indexOf(nextNode1);
for (var nextNode2Index = 0; nextNode2Index < originalNode2.nextNodes.length; nextNode2Index++) {
@AlphaGit
AlphaGit / removeFakeNodes.js
Created April 20, 2014 21:27
Sugiyama algorithm: removing fake nodes
var unlinkFakeNode = function (fakeNode) {
// fake node: remove and connect nodes that it is connecting
var previousNodes = fakeNode.previousNodes.slice(0); // copy since it's going to be modified
previousNodes.forEach(function (previousNode) {
// previous --> next1, previous --> next2, etc
fakeNode.nextNodes.forEach(function (nextNode) {
sugiyamaService.connectNodes(previousNode, nextNode);
});
// previous --X--> fake
@AlphaGit
AlphaGit / queueHttpResponder.js
Last active August 29, 2015 14:00
Approach for Ember 1.4+ and emberHttpRespond
var httpResponseQueue = Ember.A();
var checkQueueInterval = null;
var checkQueue = function() {
for (var i = 0; i < httpResponseQueue.length; i++) {
var queuedItem = httpResponseQueue[i];
var found = fakehr.match(queuedItem.verb.toUpperCase(), queuedItem.url);
if (found) {
found.respond(queuedItem.status || 200, {'content-type': 'application/json'}, queuedItem.body);
@AlphaGit
AlphaGit / fakehr-getpending.js
Last active August 29, 2015 14:00
Get pending requests for fakehr
fakehr.requests.filter(function (r) {
return r.readyState != 4;
}).map(function (r) {
return r.method + ' ' + r.url
});
@AlphaGit
AlphaGit / simpleConstructor.js
Created April 30, 2014 02:11
Example controller in AngularJS, declared separatedly
var MyController = function($scope, ApiService) {
$scope.awesomeThings = ['everything']; // everything is awesome
$scope.randomStuff = null;
ApiService.getStuff('random').then(function(retrievedStuff) {
$scope.randomStuff = retrievedStuff;
});
};
angular.module('MyApp').controller('MyController', MyController);
@AlphaGit
AlphaGit / controllerTest.js
Created April 30, 2014 02:45
Decoupled controller for unit testing without depending on $scope too much
describe('Testable controller', function() {
beforeEach(module('MyApp'));
it('should be testable against the controller logic', inject(function($controller, $rootScope, ApiService) {
var $scope = $rootScope.new();
var controller = $controller('MyController', { $scope: $scope, ApiService: ApiService });
expect(controller.generateGreeting).toBeDefined();
var greeting = controller.generateGreeting();
expect(greeting).toBe('...');
@AlphaGit
AlphaGit / EmberTestExample.js
Created July 5, 2014 20:42
Example for Ember test
module('My application tests', {
setup: function() {
App = startApp();
},
teardown: function() {
App.destroy();
}
});
test('Click on next page button takes user to next page', function() {
@AlphaGit
AlphaGit / tardisjsexample.js
Created September 21, 2014 12:43
Example usage of tardis.js
new Date();
// => Thu Aug 28 2014 19:47:15 GMT-0500 (Central Daylight Time)
tardis.travelToFuture(24 * 60 * 60 * 1000);
new Date();
// => Fri Aug 29 2014 19:47:15 GMT-0500 (Central Daylight Time)
tardis.travelToPast(60 * 60 * 1000);
new Date();
// => Fri Aug 29 2014 18:47:15 GMT-0500 (Central Daylight Time)
@AlphaGit
AlphaGit / mongo-faceted-example.js
Created January 3, 2015 21:22
mongo-faceted example
var mongoose = require('mongoose');
var mongoFacets = require('../lib/mongo-facets');
var ExampleSchema = new mongoose.Schema({
stringField: String,
numberField: Number,
arrayOfStringsField: [String]
});
mongoFacets('Example', ExampleSchema);