angular.module('bucket-edit', ['ui.bootstrap','ui.ace']) .controller('BucketEditCtrl', function($scope, $http) { var copy = $scope.copy; var sortIcons = { 's1':'fa-sort-amount-desc', 's-1':'fa-sort-amount-asc' }; if (!copy.projection) { copy.projection = []; } if (!copy.sort) { copy.sort = []; } if (!copy.params) { copy.params = []; } var displays = { 'block':{ icon:'fa-cube', label:'Block', create:function(copy) { return { 'type':'block', 'overrides':[] } } } } function addField(field) { if (field.name && copy.projection.indexOf(field.name) === -1) { copy.projection.push(field.name); } field.name = null; } function addParam(param) { if (param.name && copy.params.indexOf(param.name) === -1) { copy.params.push(param.name); } param.name = null; } function addSort(sort) { copy.sort.push(sort.data); sort.data = null; } function addDisplay(type) { if (!copy.displays) { copy.displays = []; } copy.displays.push(displays[type].create(copy)); console.log(copy.displays); } function doPreview() { // q = JSON.parse(copy.query); // console.log("query", q); var params = {q:copy.query}; if (copy.projection.length > 0) { params.f = copy.projection.join(","); } $http.get("/" + copy.collection.name, {params:params}) .success(function(data, status) { console.log(data); $scope.preview = {data: data, status: status}; }) .error(function() { console.error(arguments) } ); } angular.extend($scope, { addDisplay:addDisplay, doPreview:doPreview, addParam:addParam, addField:addField, addSort:addSort, sortIcons:sortIcons, displays:displays }); $scope.commands.preview = { label:"Preview", icon:'fa-eye', command:doPreview } }) .directive('ngEnter', function () { return function (scope, element, attrs) { element.bind("keydown keypress", function (event) { if(event.which === 13) { scope.$apply(function (){ scope.$eval(attrs.ngEnter); }); event.preventDefault(); } }); }; });