Skip to content
Snippets Groups Projects
Commit b0b8a162 authored by Cam Saul's avatar Cam Saul
Browse files

Fix admin/database partials/controllers calling everything "datamarts"

because of copypasta. 'Add Database' now allows you to specify the type
of Database (postgres or H2)
parent a0dfb1a1
No related branches found
No related tags found
No related merge requests found
......@@ -5,39 +5,39 @@ var DatabasesControllers = angular.module('corvusadmin.databases.controllers', [
DatabasesControllers.controller('DatabaseList', ['$scope', 'Metabase', function($scope, Metabase) {
$scope.delete = function (datamartId) {
if ($scope.datamarts) {
$scope.delete = function(databaseId) {
if ($scope.databases) {
Metabase.db_delete({
'dbId': datamartId
}, function (result) {
$scope.datamarts = _.filter($scope.datamarts, function(datamart){
return datamart.id != datamartId;
'dbId': databaseId
}, function(result) {
$scope.databases = _.filter($scope.databases, function(database) {
return database.id != databaseId;
});
}, function (error) {
console.log('error deleting datamart', error);
}, function(error) {
console.log('error deleting database', error);
});
}
};
$scope.$watch('currentOrg', function(org) {
if (org) {
$scope.datamarts = [];
$scope.databases = [];
Metabase.db_list({
'orgId': org.id
}, function (datamarts) {
}, function(databases) {
// if we are an org that 'inherits' lets only show our our own dbs in this view
if (org.inherits) {
var dm = _.filter(datamarts, function (datamart) {
return datamart.organization.id === org.id;
var dm = _.filter(databases, function(database) {
return database.organization.id === org.id;
});
$scope.datamarts = dm;
$scope.databases = dm;
} else {
$scope.datamarts = datamarts;
$scope.databases = databases;
}
}, function (error) {
}, function(error) {
console.log('error getting database list', error);
});
}
......@@ -46,52 +46,63 @@ DatabasesControllers.controller('DatabaseList', ['$scope', 'Metabase', function(
DatabasesControllers.controller('DatabaseEdit', ['$scope', '$routeParams', '$location', 'Metabase', function($scope, $routeParams, $location, Metabase) {
Metabase.db_form_input(function (form_input) {
$scope.databaseTypes = {
postgres: {
name: "Postgres",
example: "host=[ip address] port=5432 dbname=examples user=corvus password=******"
},
h2: {
name: "H2",
example: "file:[filename]"
}
};
Metabase.db_form_input(function(form_input) {
$scope.form_input = form_input;
}, function (error) {
console.log('error getting datamart form_input', error);
}, function(error) {
console.log('error getting database form_input', error);
});
if ($routeParams.databaseId) {
// load existing database for editing
Metabase.db_get({
'dbId': $routeParams.databaseId
}, function (datamart) {
$scope.datamart = datamart;
}, function (error) {
console.log('error loading datamart', error);
}, function(database) {
$scope.database = database;
}, function(error) {
console.log('error loading database', error);
if (error.status == 404) {
$location.path('/admin/databases/');
}
});
} else {
// prepare an empty database for creation
$scope.datamart = {
$scope.database = {
"name": "",
"engine": "postgres",
"engine": 'postgres',
"details": {}
};
}
$scope.save = function (datamart) {
$scope.save = function(database) {
if ($routeParams.databaseId) {
// updating existing database
Metabase.db_update(datamart, function (updated_datamart) {
$scope.datamart = updated_datamart;
}, function (error) {
console.log('error loading datamart', error);
Metabase.db_update(database, function(updated_database) {
$scope.database = updated_database;
}, function(error) {
console.log('error loading database', error);
if (error.status == 404) {
$location.path('/superadmin/datamarts/');
$location.path('/admin/databases/');
}
});
} else {
// creating a new database
datamart.org = $scope.currentOrg.id;
Metabase.db_create(datamart, function (new_datamart) {
$location.path('/'+$scope.currentOrg.slug+'/admin/databases/' + new_datamart.id);
}, function (error) {
console.log('error creating datamart', error);
database.org = $scope.currentOrg.id;
Metabase.db_create(database, function(new_database) {
$location.path('/' + $scope.currentOrg.slug + '/admin/databases/' + new_database.id);
}, function(error) {
console.log('error creating database', error);
});
}
};
}]);
}]);
\ No newline at end of file
<div class="wrapper">
<div class="border-bottom">
<h2 ng-if="!datamart.id">Create DataMart</h2>
<h2 ng-if="datamart.id">{{datamart.name}}</h2>
<h2 ng-if="!database.id">Add Database</h2>
<h2 ng-if="database.id">{{database.name}}</h2>
</div>
<form novalidate>
<div class="py1">
<div class="py1">
<label>Name:</label>
<input class="input block full" type="text" ng-model="datamart.name"/>
</div>
<div class="py1">
<label>Type:</label>
<select class="my2 block full" ng-model="database.engine" ng-options="type as properties.name for (type, properties) in databaseTypes"></select>
</div>
<div class="py1">
<label>Postgres Connection String:</label>
<input class="input block full" type="text" ng-model="datamart.details.conn_str"/>
<span>ex: host=[ip address] port=5432 dbname=examples user=corvus password=******</span>
</div>
<div class="py1">
<label>Name:</label>
<input class="input block full" type="text" ng-model="database.name"/>
</div>
<div class="py1">
<label>Timezone:</label>
<select class="block" ng-model="datamart.details.timezone" ng-options="tz for tz in form_input['timezones']">
<option value="">----------</option>
</select>
</div>
</div>
<div class="py1">
<label>{{databaseTypes[database.engine].name}} Connection String:</label>
<input class="input block full" type="text" ng-model="database.details.conn_str"/>
<span>ex: {{databaseTypes[database.engine].example}}</span>
</div>
<div class="py2 border-top">
<div class="inline-block">
<input class="Button Button--primary" type="button" value="Save" ng-click="save(datamart)"/>
</div>
</div>
<div class="py1">
<label>Timezone:</label>
<select class="block" ng-model="database.details.timezone" ng-options="tz for tz in form_input['timezones']">
<option value="">----------</option>
</select>
</div>
</div>
<div class="py2 border-top">
<div class="inline-block">
<input class="Button Button--primary" type="button" value="Save" ng-click="save(database)"/>
</div>
</div>
</form>
</div>
<div class="wrapper">
<div class="py2 border-bottom">
<div class="float-right">
......@@ -8,21 +7,21 @@
</div>
<div>
<div ng-if="!datamarts">
<div ng-if="!databases">
<h3 class="text-normal text-centered">Loading ...</h3>
</div>
</div>
<ul>
<li class="py2 border-bottom" ng-repeat="datamart in datamarts">
<div class="my1 float-right">
<a class="Button" ng-click="delete(datamart.id)" delete-confirm>Delete</a>
</div>
<ul>
<li class="py2 border-bottom" ng-repeat="database in databases">
<div class="my1 float-right">
<a class="Button" ng-click="delete(database.id)" delete-confirm>Delete</a>
</div>
<div>
<h4><a class="link" cv-org-href="/admin/databases/{{datamart.id}}">{{datamart.name}}</a></h4>
<span>{{datamart.engine}}</span>
</div>
<div>
<h4><a class="link" cv-org-href="/admin/databases/{{database.id}}">{{database.name}}</a></h4>
<span>{{database.engine}}</span>
</div>
</li>
</ul>
</ul>
</div>
</div>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment