Skip to content

Commit

Permalink
version 0.1.2
Browse files Browse the repository at this point in the history
Aggregate function in widgets, bugfixes, loading progress bar
  • Loading branch information
garrylachman committed May 20, 2016
1 parent d0be4db commit 7855828
Show file tree
Hide file tree
Showing 21 changed files with 143 additions and 41 deletions.
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ MySQL CRUD application built on [Electron](http://electron.atom.io/).
No Coding, just select database and create views.

## Download Binaries
[Mac OSX, ver. 0.1.1 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-darwin-x64.zip)
[Mac OSX, ver. 0.1.2 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-darwin-x64.zip)

[Linux 32Bit, ver. 0.1.1 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-linux-ia32.zip)
[Linux 32Bit, ver. 0.1.2 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-linux-ia32.zip)

[Linux 64Bit, ver. 0.1.1 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-linux-x64.zip)
[Linux 64Bit, ver. 0.1.2 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-linux-x64.zip)

[Windows 32Bit, ver. 0.1.1 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-win32-ia32.zip)
[Windows 32Bit, ver. 0.1.2 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-win32-ia32.zip)

[Windows 64Bit, ver. 0.1.1 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-win32-x64.zip)
[Windows 64Bit, ver. 0.1.2 (Pre-release)](https://github.com/garrylachman/ElectroCRUD/raw/master/dist_binaries/ElectoCRUD-win32-x64.zip)

## Screenshots
![Screenshot](http://i.imgur.com/cGVXegb.png)
Expand All @@ -34,4 +34,10 @@ Run `grunt buildElectron`.

## Credits

Icon made by [Madebyoliver](http://www.flaticon.com/authors/madebyoliver) licensed by CC 3.0
* Icon made by [Madebyoliver](http://www.flaticon.com/authors/madebyoliver) licensed by CC 3.0
* [Electron](http://electron.atom.io/)
* [AngularJs](https://angularjs.org/)
* [Node.js](https://nodejs.org)
* [AdminLTE](https://almsaeedstudio.com/)
* [node-mysql](https://github.com/felixge/node-mysql)
* [font awesome](http://fontawesome.io)
2 changes: 2 additions & 0 deletions app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
<link rel="stylesheet" href="bower_components/AdminLTE/dist/css/AdminLTE.css" />
<link rel="stylesheet" href="bower_components/sweetalert/dist/sweetalert.css" />
<link rel="stylesheet" href="bower_components/angular-ui-select/dist/select.css" />
<link rel="stylesheet" href="bower_components/ngprogress/ngProgress.css" />
<!-- endbower -->
<!-- endbuild -->

Expand Down Expand Up @@ -155,6 +156,7 @@ <h1>
<script src="bower_components/ngSweetAlert/SweetAlert.js"></script>
<script src="bower_components/angular-ui-select/dist/select.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="bower_components/ngprogress/build/ngprogress.min.js"></script>
<!-- endbower -->
<!-- endbuild -->

Expand Down
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"main": "index.js",
"name": "electrocrud",
"version": "0.1.1",
"version": "0.1.2",
"private": false,
"engines": {
"node": ">=0.10.0"
Expand Down
3 changes: 2 additions & 1 deletion app/scripts/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ angular
'angular-websql',
'oitozero.ngSweetAlert',
'ui.select',
'ui.bootstrap'
'ui.bootstrap',
'ngProgress'
])
.config(function ($routeProvider, $locationProvider, uiSelectConfig) {
$routeProvider
Expand Down
10 changes: 7 additions & 3 deletions app/scripts/controllers/addeditproject.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@
*/
angular.module('electroCrudApp')
.controller('AddeditprojectCtrl', ['$scope', 'breadcrumb', 'projectsModel', '$route', '$routeParams',
'mysql', 'SweetAlert', '$location', 'session',
function ($scope, breadcrumb, projectsModel, $route,
$routeParams, mysql, SweetAlert, $location, session) {
'mysql', 'SweetAlert', '$location', 'session', 'ngProgressFactory',
function ($scope, breadcrumb, projectsModel, $route, $routeParams,
mysql, SweetAlert, $location, session, ngProgressFactory) {
$scope.editMode = ($route.current.$$route.controllerAs == "editProject");
$scope.project = {};
$scope.detailsFormValid = false;
$scope.databases = [];
$scope.projectId = undefined;
$scope.progressbar = ngProgressFactory.createInstance();

$scope.$watchCollection('project', function(newNames, oldNames) {
$scope.detailsFormValid = formValidator();
Expand Down Expand Up @@ -81,6 +82,7 @@ angular.module('electroCrudApp')
}

function getMySQLDatabases() {
$scope.progressbar.start();
var connection = mysql.getConnection($scope.project.mysql_host,
$scope.project.mysql_port,
$scope.project.mysql_user,
Expand All @@ -89,6 +91,7 @@ angular.module('electroCrudApp')
connection.connect();
mysql.getDatabases(connection)
.then(function(results) {
$scope.progressbar.complete();
results.forEach(function(row){
row.selected = ($scope.project.mysql_db == row.Database);
});
Expand All @@ -97,6 +100,7 @@ angular.module('electroCrudApp')
mysql.closeConnection(connection);
})
.catch(function(err) {
$scope.progressbar.complete();
SweetAlert.swal("Error", err, "error");
mysql.closeConnection(connection);
});
Expand Down
12 changes: 10 additions & 2 deletions app/scripts/controllers/view-add-edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@
* Controller of the electroCrudApp
*/
angular.module('electroCrudApp')
.controller('ViewAddEditCtrl', ['$scope','SweetAlert', 'viewsModel', '$location', '$routeParams', 'breadcrumb', 'schemaHelper', 'projectsModel', 'dataHelper', 'mysql', '$route', 'session',
function ($scope, SweetAlert, viewsModel, $location, $routeParams, breadcrumb, schemaHelper, projectsModel, dataHelper, mysql, $route, session) {
.controller('ViewAddEditCtrl', ['$scope','SweetAlert', 'viewsModel', '$location', '$routeParams',
'breadcrumb', 'schemaHelper', 'projectsModel', 'dataHelper', 'mysql',
'$route', 'session', 'ngProgressFactory',
function ($scope, SweetAlert, viewsModel, $location, $routeParams,
breadcrumb, schemaHelper, projectsModel, dataHelper, mysql,
$route, session, ngProgressFactory) {
$scope.editMode = ($route.current.$$route.controllerAs == "updateView");

var viewId = $routeParams.id;
$scope.progressbar = ngProgressFactory.createInstance();
$scope.viewData = {};
$scope.schemaBuilder = undefined;
$scope.term = undefined;
Expand Down Expand Up @@ -46,19 +51,22 @@ angular.module('electroCrudApp')
}

function loadEditMode() {
$scope.progressbar.start();
var primaryKey = $scope.schemaBuilder.getPrimaryKey();
var obj = {};
obj[primaryKey] = $routeParams.key;

$scope.dataHelper = dataHelper.init(getConnection(), $scope.schemaBuilder);
$scope.dataHelper.read.getRow(obj)
.then(function(results){
$scope.progressbar.complete();
Object.keys(results[0]).forEach(function(key){
$scope.userInput[key] = results[0][key];
});
$scope.$apply();
})
.catch(function(err){
$scope.progressbar.complete();
SweetAlert.swal("Error", err, "error");
});
}
Expand Down
66 changes: 48 additions & 18 deletions app/scripts/controllers/view.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
'use strict';
var util = require('util');

/**
* @ngdoc function
Expand All @@ -11,12 +12,13 @@ angular.module('electroCrudApp')
.controller('ViewCtrl',
['$scope','session', 'viewsModel', '$location', '$routeParams', 'breadcrumb',
'schemaHelper', 'projectsModel', 'dataHelper', 'mysql', 'SweetAlert', 'widgetHelper',
'$uibModal',
'$uibModal', 'ngProgressFactory',
function ($scope, session, viewsModel, $location, $routeParams, breadcrumb,
schemaHelper, projectsModel, dataHelper, mysql, SweetAlert, widgetHelper,
$uibModal) {
$uibModal, ngProgressFactory) {

var viewId = $routeParams.id;
$scope.progressbar = ngProgressFactory.createInstance();
$scope.rowsPerPage = 10;
$scope.currentPage = 1;
$scope.viewData = {};
Expand All @@ -42,6 +44,7 @@ angular.module('electroCrudApp')
animation: true,
templateUrl: 'myModalContent.html',
controller: 'ModalWidgetSettingsInstanceCtrl',
size: 'lg',
resolve: {
columns: function(){ return $scope.schemaBuilder.getActiveColumnsList() },
table: function(){ return $scope.schemaBuilder.getTableName() },
Expand All @@ -58,9 +61,12 @@ angular.module('electroCrudApp')
viewsModel.update(viewId, {
schema: $scope.schemaBuilder.toJSONString()
});
widget.loadFromDB().then(function(){
$scope.$apply();
});
widget.loadFromDB()
.then(function(){
$scope.$apply();
})
.catch(function(err){
});
});


Expand Down Expand Up @@ -95,9 +101,12 @@ angular.module('electroCrudApp')
$scope.widgets.loadWidgets($scope.schemaBuilder.getWidgetsJson());
$scope.widgets.getWidgets().forEach(function(widget){
widget.setConnection(getConnection());
widget.loadFromDB().then(function(){
$scope.$apply();
});
widget.loadFromDB()
.then(function(){
$scope.$apply();
})
.catch(function(err){
});
});
}

Expand All @@ -114,15 +123,20 @@ angular.module('electroCrudApp')
}

function loadTable() {
$scope.progressbar.start();
$scope.term = $scope.schemaBuilder.getTerm();
$scope.permissions = $scope.schemaBuilder.getPermissions();
$scope.dataHelper = dataHelper.init(getConnection(), $scope.schemaBuilder);
$scope.dataHelper.read.getResults(($scope.currentPage-1)*$scope.rowsPerPage,
$scope.rowsPerPage, $scope.sortingColumn,
$scope.sortingDir)
.then(function(results){
$scope.progressbar.complete();
$scope.tableData = results;
$scope.$apply();
})
.catch(function(){
$scope.progressbar.complete();
});

}
Expand Down Expand Up @@ -172,11 +186,15 @@ angular.module('electroCrudApp')
widget.setConnection(getConnection());
widget.setTitle("Widget 1");
widget.setSql("select count(*) as count from "+$scope.schemaBuilder.getTableName());
widget.loadFromDB().then(function(){
$scope.$apply();
});
widget.loadFromDB()
.then(function(){
$scope.$apply();
})
.catch(function(err){
});

saveSchema();
$scope.openWidgetSettings(widget);
};

function saveSchema() {
Expand All @@ -195,7 +213,9 @@ angular.module('electroCrudApp')
angular.module('electroCrudApp').controller('ModalWidgetSettingsInstanceCtrl',
function ($scope, $uibModalInstance, columns, table, widget) {

$scope.selectedColumn = getColumnFromSql(widget.getSql());
$scope.params = widget.getParams();
console.log($scope.params);
$scope.selectedColumn = $scope.params.column;
$scope.columns = columns.map(function(column){
return {
name: column,
Expand All @@ -209,18 +229,15 @@ angular.module('electroCrudApp')
'bg-red', 'bg-green', 'bg-yellow'];
$scope.selectedBackground = widget.getBg();
$scope.selectedIcon = widget.getIcon();
$scope.isDistinct = widget.getSql().indexOf("DISTINCT") > -1;


$scope.isDistinct = $scope.params.distinct;
$scope.selectedFunction = $scope.params.function;

$scope.onIconSelected = function($item) {
$scope.selectedIcon = $item;
widget.setIcon($item);
}

$scope.onColumnSelected = function($item) {
console.log($item);
console.log($scope.selectedColumn);
};

$scope.onBackgroundSelectd = function(color) {
Expand All @@ -230,7 +247,20 @@ angular.module('electroCrudApp')

$scope.ok = function () {
var distinctSql = $scope.isDistinct ? "DISTINCT" : "";
var sql = 'SELECT COUNT('+distinctSql+' '+$scope.selectedColumn+') as count FROM ' + $scope.table;

$scope.params.distinct = distinctSql;
$scope.params.column = $scope.selectedColumn;
$scope.params.table = $scope.table;
$scope.params.function = $scope.selectedFunction;

var sql = util.format('SELECT %s(%s %s) as count from %s',
$scope.params.function,
$scope.params.distinct,
$scope.params.column,
$scope.table
);

widget.setParams($scope.params);
widget.setSql(sql);
widget.setTitle($scope.inputTitle);
$uibModalInstance.close();
Expand Down
16 changes: 13 additions & 3 deletions app/scripts/services/data-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,13 @@ angular.module('electroCrudApp')
return new Promise(function(resolve, reject) {

mysql.getTableRowData(connection, schemaBuilder.getTableName(),
schemaBuilder.getActiveColumnsList(), where).then(function(results){
resolve(results);
});
schemaBuilder.getActiveColumnsList(), where)
.then(function(results){
resolve(results);
})
.catch(function(err){
reject(err);
});
});
},
getResults: function(limitFrom, limitCount, sortBy, sortDir) {
Expand All @@ -60,8 +64,14 @@ angular.module('electroCrudApp')
columns: schemaBuilder.getActiveColumnsList(),
rows: results
});
})
.catch(function(err){
reject(err);
});

})
.catch(function(err){
reject(err);
});
});
}
Expand Down
Loading

0 comments on commit 7855828

Please sign in to comment.