Skip to content

Commit

Permalink
added ConfigTemplate object for wrapping a collection of templates, w…
Browse files Browse the repository at this point in the history
…hich can be toggled for display in the config panel
  • Loading branch information
Spencer Alger committed Apr 15, 2014
1 parent a46e252 commit f804a45
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 31 deletions.
25 changes: 10 additions & 15 deletions src/kibana/apps/dashboard/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
define(function (require) {
var _ = require('lodash');
var $ = require('jquery');
var ConfigTemplate = require('utils/config_template');

require('css!./styles/main.css');
require('directives/config');
require('courier/courier');
require('config/config');
require('notify/notify');


require('./directives/grid');
require('./directives/panel');
require('./services/saved_dashboards');
Expand All @@ -21,11 +23,6 @@ define(function (require) {
'kibana/services'
]);

var configTemplates = {
save: require('text!./partials/save_dashboard.html'),
load: require('text!./partials/load_dashboard.html')
};

require('routes')
.when('/dashboard', {
templateUrl: 'kibana/apps/dashboard/index.html',
Expand Down Expand Up @@ -99,21 +96,19 @@ define(function (require) {
};
$scope.$watch('configurable.input.search', dashboardSearch);

var toggleConfigTemplate = function (name) {
var html = configTemplates[name];
// Close if already open
$scope.configTemplate = ($scope.configTemplate === html) ? void 0 : html;
return !!$scope.configTemplate;
};
$scope.configTemplate = new ConfigTemplate({
save: require('text!./partials/save_dashboard.html'),
load: require('text!./partials/load_dashboard.html')
});

$scope.openSave = function () {
var open = toggleConfigTemplate('save');
$scope.configSubmit = $scope.save;
if ($scope.configTemplate.toggle('save')) {
$scope.configSubmit = $scope.save;
}
};

$scope.openLoad = function () {
var open = toggleConfigTemplate('load');
if (open) {
if ($scope.configTemplate.toggle('load')) {
dashboardSearch($scope.input.search || '');
$scope.configSubmit = null;
}
Expand Down
38 changes: 22 additions & 16 deletions src/kibana/directives/config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
define(function (require) {
var html = require('text!partials/table.html');
var _ = require('lodash');
var ConfigTemplate = require('utils/config_template');

var module = require('modules').get('kibana/directives');

Expand All @@ -25,27 +26,32 @@ define(function (require) {
link: function ($scope, element, attr) {
$scope[attr.configObject] = $scope.configObject;

$scope.$watch('configTemplate', function (newTemplate, oldTemplate) {
if (_.isString($scope.configTemplate) && oldTemplate !== newTemplate) {

var template = '' +
'<div class="config" ng-show="configTemplate">' +
' <form role="form" class="container-fluid" ng-submit="configSubmit()">' +
$scope.configTemplate +
' </form>' +
' <div class="config-close remove" ng-click="close()">' +
' <i class="fa fa-chevron-up"></i>' +
' </div>' +
'</div>' +
'';

element.html($compile(template)($scope));
$scope.$watch('configTemplate.current || configTemplate', function (newTemplate, oldTemplate) {
var tmpl = $scope.configTemplate;
if (tmpl instanceof ConfigTemplate) {
tmpl = tmpl.toString();
}

element.html(!tmpl ? '' : $compile('' +
'<div class="config" ng-show="configTemplate">' +
' <form role="form" class="container-fluid" ng-submit="configSubmit()">' +
tmpl +
' </form>' +
' <div class="config-close remove" ng-click="close()">' +
' <i class="fa fa-chevron-up"></i>' +
' </div>' +
'</div>' +
''
)($scope));
});

$scope.close = function () {
if (_.isFunction($scope.configClose)) $scope.configClose();
$scope.configTemplate = undefined;
if ($scope.configTemplate instanceof ConfigTemplate) {
$scope.configTemplate.current = null;
} else {
$scope.configTemplate = null;
}
};
}
};
Expand Down
24 changes: 24 additions & 0 deletions src/kibana/utils/config_template.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
define(function (require) {

function ConfigTemplate(templates) {
this.current = null;

this.toggle = function (name) {
var toSwitch = templates[name];
if (this.current === toSwitch) {
this.current = null;
return false;
} else {
this.current = toSwitch;
return true;
}
};

this.toString = function () {
return this.current;
};
}

return ConfigTemplate;

});

0 comments on commit f804a45

Please sign in to comment.