<html>
<head>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.11/ng-grid.min.css" />
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" />
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.js"></script>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.11/ng-grid.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
<script>
function Service($rootScope)
{
this.toTableTwo = function(selectedItems)
{
$rootScope.$broadcast('addTableTwo', selectedItems);
$rootScope.$broadcast('removeTableOne', selectedItems);
};
this.toTableOne = function(selectedItems)
{
$rootScope.$broadcast('addTableOne', selectedItems);
$rootScope.$broadcast('removeTableTwo', selectedItems);
};
}
function TableOne($scope, service)
{
var ctl = this;
this.items = [
{
field_1: 'First',
field_2: 'Second'
},
{
field_1: 'Test',
field_2: 'Test2'
}];
this.selectedItems = [];
this.gridOptions = {
data: 't1.items',
selectedItems: []
};
this.moveSelected = function()
{
service.toTableTwo(this.gridOptions.selectedItems);
};
$scope.$on('addTableOne', function(event, data)
{
angular.forEach(data, function(item)
{
ctl.items.push(item);
});
});
$scope.$on('removeTableOne', function(event, data)
{
angular.forEach(data, function(item)
{
_.remove(ctl.items, function(cItem)
{
return item.field_1 ===
cItem.field_1;
});
});
_.remove(ctl.gridOptions.selectedItems,
function(cItem)
{
return true;
});
});
}
function TableTwo($scope, service)
{
var ctl = this;
this.items = [
{
field_1: 'T2 First',
field_2: 'T2 Second'
},
{
field_1: 'T2 Test',
field_2: 'T2 Test2'
}];
this.selectedItems = [];
this.gridOptions = {
data: 't2.items',
selectedItems: []
};
this.moveSelected = function()
{
service.toTableOne(this.gridOptions.selectedItems);
};
$scope.$on('addTableTwo', function(event, data)
{
angular.forEach(data, function(item)
{
ctl.items.push(item);
});
});
$scope.$on('removeTableTwo', function(event, data)
{
angular.forEach(data, function(item)
{
_.remove(ctl.items, function(cItem)
{
return item.field_1 ===
cItem.field_1;
});
});
_.remove(ctl.gridOptions.selectedItems,
function(cItem)
{
return true;
});
});
}
</script>
<script>
var app = angular.module('app', ['ngGrid']);
app.controller('TableOne', ['$scope', 'service', TableOne])
app.controller('TableTwo', ['$scope', 'service', TableTwo])
app.service('service', ['$rootScope', Service]);
</script>
</head>
<body ng-app="app">
<div ng-controller="TableOne as t1">
<div style="display: table-cell;" class="gridStyle" ng-grid="gridOptiontest">
<div>
<table ng-grid="t1.gridOptions">
</table>
</div>
</div>
<div style="display: table-cell; vertical-align: top">
<div>
<button ng-click="t1.moveSelected()">>>>></button>
</div>
</div>
</div>
<div ng-controller="TableTwo as t2 ">
<div style="display: table-cell; vertical-align: top">
<div>
<button ng-click="t2.moveSelected()"><<<<</button>
</div>
</div>
<div style="display: table-cell;" class="gridStyle" ng-grid="gridOptions">
<div>
<table ng-grid="t2.gridOptions">
</table>
</div>
</div>
</div>
</body>
</html>
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |