mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
fix styles, time to begin finding bugs
This commit is contained in:
parent
c95e315f46
commit
f621a42368
37 changed files with 161 additions and 138 deletions
1
kibana.js.map
Normal file
1
kibana.js.map
Normal file
File diff suppressed because one or more lines are too long
|
@ -54,7 +54,9 @@
|
|||
"debug": "^2.1.1",
|
||||
"elasticsearch": "^5.0.0",
|
||||
"exports-loader": "^0.6.2",
|
||||
"expose-loader": "^0.7.0",
|
||||
"express": "^4.10.6",
|
||||
"extract-text-webpack-plugin": "^0.8.2",
|
||||
"file-loader": "^0.8.4",
|
||||
"font-awesome": "^4.3.0",
|
||||
"glob": "^4.3.2",
|
||||
|
|
1
sense.js.map
Normal file
1
sense.js.map
Normal file
File diff suppressed because one or more lines are too long
|
@ -38,26 +38,6 @@ function kibanaPlugin(kibana) {
|
|||
handler: amdWrapper({ root: ROOT })
|
||||
});
|
||||
|
||||
server.route({
|
||||
path: '/src/{paths*}',
|
||||
method: 'GET',
|
||||
handler: {
|
||||
directory: {
|
||||
path: SRC
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
server.route({
|
||||
path: '/node_modules/{paths*}',
|
||||
method: 'GET',
|
||||
handler: {
|
||||
directory: {
|
||||
path: NODE_MODULES
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
server.route({
|
||||
path: '/specs',
|
||||
method: 'GET',
|
||||
|
@ -83,8 +63,6 @@ function kibanaPlugin(kibana) {
|
|||
function run(port, quiet) {
|
||||
return (new KbnServer({
|
||||
'env': 'development',
|
||||
|
||||
'logging.quiet': quiet,
|
||||
'kibana.server.port': port || 5601,
|
||||
'plugins.paths': [ __dirname ],
|
||||
'plugins.scanDirs': [ resolve('src/plugins') ],
|
5
src/devServer/package.json
Normal file
5
src/devServer/package.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name": "devServer",
|
||||
"main": "devServer.js",
|
||||
"version": "1.0.0"
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
"name": "dev_server",
|
||||
"version": "1.0.0"
|
||||
}
|
|
@ -50,7 +50,10 @@ module.exports = function (kibana) {
|
|||
'file_saver': ['bower_components/FileSaver/FileSaver', null, 'saveAs'],
|
||||
'gridster': ['bower_components/gridster/dist/jquery.gridster', 'jquery,gs=gridster-styles'],
|
||||
'gridster-styles': ['bower_components/gridster/dist/jquery.gridster.css'],
|
||||
'jquery': ['bower_components/jquery/dist/jquery'],
|
||||
'jquery':{
|
||||
path: 'bower_components/jquery/dist/jquery',
|
||||
expose: 'jQuery'
|
||||
},
|
||||
'leaflet': ['bower_components/leaflet/dist/leaflet', 'ls=leaflet-styles'],
|
||||
'leaflet-styles': ['bower_components/leaflet-draw/dist/leaflet.draw.css'],
|
||||
'leaflet-heat': ['bower_components/Leaflet.heat/dist/leaflet-heat', 'leaflet'],
|
||||
|
|
|
@ -9,7 +9,10 @@ define(function (require, module, exports) {
|
|||
redirectTo: '/settings/indices'
|
||||
});
|
||||
|
||||
require('modules').get('apps/settings')
|
||||
var sections = require('plugins/kibana/settings/sections/index');
|
||||
|
||||
require('modules')
|
||||
.get('apps/settings')
|
||||
.directive('kbnSettingsApp', function (Private, $route, timefilter) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
@ -20,7 +23,7 @@ define(function (require, module, exports) {
|
|||
},
|
||||
link: function ($scope, $el) {
|
||||
timefilter.enabled = false;
|
||||
$scope.sections = require('plugins/kibana/settings/sections/index');
|
||||
$scope.sections = sections;
|
||||
$scope.section = _.find($scope.sections, { name: $scope.sectionName });
|
||||
|
||||
$scope.sections.forEach(function (section) {
|
||||
|
|
|
@ -65,7 +65,7 @@ KbnServer.prototype.listen = function () {
|
|||
})
|
||||
.then(
|
||||
function () {
|
||||
server.log('server', 'Server running at ' + server.info.uri);
|
||||
server.log('info', 'Server running at ' + server.info.uri);
|
||||
return server;
|
||||
},
|
||||
function (err) {
|
||||
|
|
|
@ -10,6 +10,7 @@ program.option('-e, --elasticsearch <uri>', 'Elasticsearch instance');
|
|||
program.option('-c, --config <path>', 'Path to the config file');
|
||||
program.option('-p, --port <port>', 'The port to bind to', parseInt);
|
||||
program.option('-q, --quiet', 'Turns off logging');
|
||||
program.option('--verbose', 'Turns on verbose logging');
|
||||
program.option('-H, --host <host>', 'The host to bind to');
|
||||
program.option('-l, --log-file <path>', 'The file to log to');
|
||||
program.option(
|
||||
|
@ -46,7 +47,7 @@ if (program.quiet) {
|
|||
}
|
||||
|
||||
if (program.logFile) {
|
||||
settings['logging.file'] = program.logFile;
|
||||
settings['logging.dest'] = program.logFile;
|
||||
}
|
||||
|
||||
if (program.plugins || program.pluginDir) {
|
||||
|
|
|
@ -49,27 +49,29 @@ module.exports = Joi.object({
|
|||
minimumVerison: Joi.string().default('1.4.4')
|
||||
}).default(),
|
||||
|
||||
logging: Joi.object({
|
||||
quiet: Joi.boolean().default(false),
|
||||
logging: Joi.object().keys({
|
||||
silent: Joi.boolean().default(false),
|
||||
|
||||
// not nested under a kbnLogger key so that we can ref "quiet"
|
||||
kbnLogger: Joi.boolean().default(true),
|
||||
kbnLoggerConfig: Joi.object({
|
||||
dest: Joi.string().default('stdout'),
|
||||
json: Joi.boolean().default(Joi.ref('$prod'))
|
||||
}).default(),
|
||||
kbnLoggerEvents: Joi.when('quiet', {
|
||||
quiet: Joi.boolean()
|
||||
.when('silent', {
|
||||
is: true,
|
||||
then: Joi.object({
|
||||
error: Joi.string().default('*')
|
||||
}).default(),
|
||||
otherwise: Joi.object({
|
||||
log: Joi.string().default('*'),
|
||||
response: Joi.string().default('*'),
|
||||
error: Joi.string().default('*')
|
||||
}).default()
|
||||
})
|
||||
}).default(),
|
||||
then: Joi.default(true).valid(true),
|
||||
otherwise: Joi.default(false)
|
||||
}),
|
||||
|
||||
verbose: Joi.boolean()
|
||||
.when('quiet', {
|
||||
is: true,
|
||||
then: Joi.valid(false).default(false),
|
||||
otherwise: Joi.default(true)
|
||||
}),
|
||||
|
||||
dest: Joi.string().default('stdout'),
|
||||
json: Joi.boolean().default(Joi.ref('$prod')),
|
||||
|
||||
events: Joi.any().default({})
|
||||
})
|
||||
.default(),
|
||||
|
||||
plugins: Joi.object({
|
||||
paths: Joi.array().items(Joi.string()).default([]),
|
||||
|
|
|
@ -121,9 +121,10 @@ module.exports = class TransformObjStream extends Stream.Transform {
|
|||
data.message = event.data.message;
|
||||
data.error = serializeError(event.data);
|
||||
}
|
||||
else if (_.isPlainObject(event.data) && event.data.message) {
|
||||
else if (_.isPlainObject(event.data) && event.data.tmpl) {
|
||||
_.assign(data, event.data);
|
||||
data.message = _.template(event.data.message)(event.data);
|
||||
data.tmpl = undefined;
|
||||
data.message = _.template(event.data.tmpl)(event.data);
|
||||
}
|
||||
else {
|
||||
data.message = _.isString(event.data) ? event.data : inspect(event.data);
|
||||
|
|
|
@ -12,9 +12,11 @@ let typeColors = {
|
|||
res: 'green',
|
||||
ops: 'cyan',
|
||||
err: 'red',
|
||||
info: 'blue',
|
||||
info: 'green',
|
||||
error: 'red',
|
||||
fatal: 'magenta'
|
||||
fatal: 'magenta',
|
||||
plugins: 'yellow',
|
||||
debug: 'brightBlack'
|
||||
};
|
||||
|
||||
let color = _.memoize(function (name) {
|
||||
|
@ -23,14 +25,18 @@ let color = _.memoize(function (name) {
|
|||
|
||||
module.exports = class KbnLoggerJsonFormat extends LogFormat {
|
||||
format(data) {
|
||||
let type = color(data.type)(_.padLeft(data.type, 6));
|
||||
let type = _.chain(data.type).padLeft(6).trunc(6).thru(color(data.type)).value();
|
||||
let time = color('time')(moment(data.timestamp).format());
|
||||
let msg = data.error ? color('error')(data.error.stack) : color('message')(data.message);
|
||||
|
||||
let tags = data.tags.reduce(function (s, t) {
|
||||
let tags = _(data.tags)
|
||||
.sortBy(function (tag) {
|
||||
return color(tag) === _.identity ? `1${tag}` : `0${tag}`;
|
||||
})
|
||||
.reduce(function (s, t) {
|
||||
return s + `[${ color(t)(t) }]`;
|
||||
}, '');
|
||||
|
||||
return `${type}: [ ${time} ] ${tags} ${msg}`;
|
||||
return `${type}: [${time}] ${tags} ${msg}`;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,9 +1,27 @@
|
|||
var fromNode = require('bluebird').fromNode;
|
||||
'use strict';
|
||||
|
||||
let _ = require('lodash');
|
||||
let fromNode = require('bluebird').fromNode;
|
||||
|
||||
module.exports = function (kbnServer, server, config) {
|
||||
if (!config.get('logging.kbnLogger')) return;
|
||||
|
||||
return fromNode(function (cb) {
|
||||
let events = config.get('logging.events');
|
||||
|
||||
if (config.get('logging.quiet')) {
|
||||
_.defaults(events, {
|
||||
log: ['error', 'fatal'],
|
||||
error: '*'
|
||||
});
|
||||
}
|
||||
|
||||
if (config.get('logging.verbose')) {
|
||||
_.defaults(events, {
|
||||
log: ['info', 'warning', 'error', 'fatal'],
|
||||
response: '*',
|
||||
error: '*'
|
||||
});
|
||||
}
|
||||
|
||||
server.register({
|
||||
register: require('good'),
|
||||
options: {
|
||||
|
@ -11,8 +29,11 @@ module.exports = function (kbnServer, server, config) {
|
|||
reporters: [
|
||||
{
|
||||
reporter: require('./LogReporter'),
|
||||
config: config.get('logging.kbnLoggerConfig'),
|
||||
events: config.get('logging.kbnLoggerEvents'),
|
||||
config: {
|
||||
json: config.get('logging.json'),
|
||||
dest: config.get('logging.dest')
|
||||
},
|
||||
events: events,
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -12,11 +12,13 @@ var fromRoot = require('../utils/fromRoot');
|
|||
var OptmzBundles = require('./OptmzBundles');
|
||||
var OptmzUiModules = require('./OptmzUiModules');
|
||||
var DirectoryNameAsDefaultFile = require('./DirectoryNameAsDefaultFile');
|
||||
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
||||
|
||||
class Optimizer extends EventEmitter {
|
||||
constructor(opts) {
|
||||
super();
|
||||
|
||||
this.verbose = opts.verbose;
|
||||
this.watch = opts.watch || false;
|
||||
this.sourceMaps = opts.sourceMaps || false;
|
||||
this.modules = new OptmzUiModules(opts.plugins);
|
||||
|
@ -35,26 +37,37 @@ class Optimizer extends EventEmitter {
|
|||
var compiler = webpack({
|
||||
entry: bundles.getEntriesToCompile(),
|
||||
|
||||
devtool: this.sourceMaps ? 'inline-source-map' : false,
|
||||
devtool: this.sourceMaps ? '#source-map' : false,
|
||||
|
||||
output: {
|
||||
path: this.bundles.dir,
|
||||
filename: '[name].js',
|
||||
sourceMapFilename: '[file].map',
|
||||
publicPath: '/bundles/',
|
||||
filename: '[name].js'
|
||||
devtoolModuleFilenameTemplate: '[resource-path]'
|
||||
},
|
||||
|
||||
plugins: [
|
||||
new webpack.ResolverPlugin([
|
||||
new DirectoryNameAsDefaultFile()
|
||||
]),
|
||||
new webpack.NoErrorsPlugin(),
|
||||
new webpack.optimize.DedupePlugin(),
|
||||
new webpack.optimize.OccurenceOrderPlugin(),
|
||||
new webpack.ResolverPlugin([
|
||||
new DirectoryNameAsDefaultFile()
|
||||
])
|
||||
new ExtractTextPlugin('[name].style.css', {
|
||||
allChunks: true
|
||||
})
|
||||
],
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
{ test: /\.less$/, loader: ExtractTextPlugin.extract('style', 'css?sourceMap!less?sourceMap') },
|
||||
{ test: /\.css$/, loader: ExtractTextPlugin.extract('style', 'css?sourceMap') },
|
||||
{ test: /\.html$/, loader: 'raw' },
|
||||
{ test: /\.png$/, loader: 'url?limit=2048!file?name=[path][name].[ext]' },
|
||||
{ test: /\.(woff|woff2|ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file?name=[path][name].[ext]' },
|
||||
].concat(modules.loaders),
|
||||
noParse: modules.noParse,
|
||||
loaders: modules.loaders
|
||||
},
|
||||
|
||||
resolve: {
|
||||
|
@ -74,8 +87,11 @@ class Optimizer extends EventEmitter {
|
|||
compiler.plugin('done', function (stats) {
|
||||
var errCount = _.size(stats.compilation.errors);
|
||||
|
||||
if (errCount || self.verbose) {
|
||||
console.log(`\n${ stats.toString({ colors: true }) }`);
|
||||
}
|
||||
|
||||
if (errCount) {
|
||||
console.log(stats.toString({ colors: true }));
|
||||
self.emit('error', new Error('Failed to compile bundle'));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ class OptmzBundles {
|
|||
|
||||
init(fresh) {
|
||||
return resolve()
|
||||
.then(fresh && this.cleanBundles)
|
||||
.then(fresh ? this.cleanBundles : _.noop)
|
||||
.then(this.ensureBundleDir)
|
||||
.then(this.syncBundleDir);
|
||||
}
|
||||
|
@ -113,7 +113,7 @@ class OptmzBundles {
|
|||
|
||||
return readdir(dir).map(function (name) {
|
||||
// skip '.', '..', and dot-prefixed files
|
||||
if (name.charAt(0) === '.') return false;
|
||||
if (name.charAt(0) === '.' || name === 'sourcemaps') return false;
|
||||
return join(dir, name);
|
||||
})
|
||||
.then(_.compact);
|
||||
|
|
|
@ -18,16 +18,7 @@ function OptmzUiExports(plugins) {
|
|||
var aliases = this.aliases = {};
|
||||
|
||||
// webpack loaders map loader configuration to regexps
|
||||
var loaders = this.loaders = [
|
||||
{ test: /\.less$/, loader: 'style/url!file!less' },
|
||||
{ test: /\.css$/, loader: 'style/url!file' },
|
||||
{ test: /\.html$/, loader: 'raw' },
|
||||
{
|
||||
test: /\.(woff|woff2|png)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
|
||||
loader: 'url-loader?limit=10000&minetype=application/font-woff'
|
||||
},
|
||||
{ test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file-loader' },
|
||||
];
|
||||
var loaders = this.loaders = [];
|
||||
|
||||
var claimedModuleIds = {};
|
||||
_.each(plugins, function (plugin) {
|
||||
|
@ -51,6 +42,7 @@ function OptmzUiExports(plugins) {
|
|||
var parse = true;
|
||||
var imports = null;
|
||||
var exports = null;
|
||||
var expose = null;
|
||||
|
||||
// basic style, just a path
|
||||
if (_.isString(spec)) path = spec;
|
||||
|
@ -66,6 +58,7 @@ function OptmzUiExports(plugins) {
|
|||
parse = _.get(spec, 'parse', parse);
|
||||
imports = _.get(spec, 'imports', imports);
|
||||
exports = _.get(spec, 'exports', exports);
|
||||
expose = _.get(spec, 'expose', expose);
|
||||
}
|
||||
|
||||
if (!path) {
|
||||
|
@ -80,6 +73,7 @@ function OptmzUiExports(plugins) {
|
|||
}
|
||||
|
||||
if (exports) loader.push(`exports?${exports}`);
|
||||
if (expose) loader.push(`expose?${expose}`);
|
||||
if (loader.length) loaders.push({ test: asRegExp(path), loader: loader.join('!') });
|
||||
|
||||
if (!parse) noParse.push(asRegExp(path));
|
||||
|
|
|
@ -1,15 +1,20 @@
|
|||
module.exports = function (kbnServer, server, config) {
|
||||
var _ = require('lodash');
|
||||
var resolve = require('path').resolve;
|
||||
var join = require('path').join;
|
||||
var fromRoot = require('../utils/fromRoot');
|
||||
|
||||
var Optimizer = require('./Optimizer');
|
||||
var bundleDir = resolve(config.get('optimize.bundleDir'));
|
||||
var status = kbnServer.status.create('optimize');
|
||||
|
||||
server.exposeStaticDir('/bundles/{path*}', bundleDir);
|
||||
if (config.get('optimize.sourceMaps')) {
|
||||
server.exposeStaticDir('/src/{path*}', fromRoot('src'));
|
||||
server.exposeStaticDir('/node_modules/{paths*}', fromRoot('node_modules'));
|
||||
}
|
||||
|
||||
return (new Optimizer({
|
||||
verbose: config.get('logging.verbose'),
|
||||
watch: config.get('optimize.watch'),
|
||||
sourceMaps: config.get('optimize.sourceMaps'),
|
||||
bundleDir: bundleDir,
|
||||
|
|
|
@ -15,8 +15,8 @@ module.exports = Promise.method(function (kibana) {
|
|||
.catch(function (err) {
|
||||
if (err.code !== 'EEXIST') throw err;
|
||||
|
||||
server.log(['pid', 'warn'], {
|
||||
message: 'pid file already exists at <%= path %>',
|
||||
server.log(['pid', 'warning'], {
|
||||
tmpl: 'pid file already exists at <%= path %>',
|
||||
path: path,
|
||||
pid: pid
|
||||
});
|
||||
|
@ -26,7 +26,7 @@ module.exports = Promise.method(function (kibana) {
|
|||
.then(function () {
|
||||
|
||||
server.log(['pid', 'debug'], {
|
||||
message: 'wrote pid file to <%= path %>',
|
||||
tmpl: 'wrote pid file to <%= path %>',
|
||||
path: path,
|
||||
pid: pid
|
||||
});
|
||||
|
|
|
@ -38,14 +38,9 @@ module.exports = class Plugin {
|
|||
let server = self.kbnServer.server;
|
||||
let status = self.kbnServer.status;
|
||||
|
||||
let basetags = ['plugin', id];
|
||||
let log = function (tags, data, timestamp) {
|
||||
|
||||
};
|
||||
|
||||
let config = server.config();
|
||||
server.log(['plugin', 'debug', 'init'], {
|
||||
message: 'Initializing plugin',
|
||||
server.log(['plugins', 'debug'], {
|
||||
tmpl: 'Initializing plugin <%= plugin.id %>',
|
||||
plugin: self
|
||||
});
|
||||
|
||||
|
|
|
@ -7,9 +7,10 @@ module.exports = function (kbnServer, server, config) {
|
|||
|
||||
var scanDirs = [].concat(config.get('plugins.scanDirs'));
|
||||
var absolutePaths = [].concat(config.get('plugins.paths'));
|
||||
var debug = _.bindKey(server, 'log', ['plugins', 'debug']);
|
||||
|
||||
return Promise.map(scanDirs, function (dir) {
|
||||
server.log('plugin-scan', 'Scanning ' + dir + ' for plugins');
|
||||
debug({ tmpl: 'Scanning `<%= dir %>` for plugins', dir: dir });
|
||||
|
||||
return readdir(dir).map(function (file) {
|
||||
if (file === '.' || file === '..') return false;
|
||||
|
@ -31,10 +32,10 @@ module.exports = function (kbnServer, server, config) {
|
|||
.filter(function (dir) {
|
||||
try {
|
||||
require(dir);
|
||||
server.log('plugin-scan', 'Found plugin at ' + dir);
|
||||
debug({ tmpl: 'Found plugin at <%= dir %>', dir: dir });
|
||||
return true;
|
||||
} catch (e) {
|
||||
server.log('plugin-scan', 'Skipping non-plugin directory at ' + dir);
|
||||
debug({ tmpl: 'Skipping non-plugin directory at <%= dir %>', dir: dir });
|
||||
return false;
|
||||
}
|
||||
})
|
||||
|
|
|
@ -10,8 +10,8 @@ function Status(name, server) {
|
|||
this.message = 'uninitialized';
|
||||
|
||||
this.on('change', function (current, previous) {
|
||||
server.log(['plugin', name, 'status'], {
|
||||
message: 'Change status from <%= prev %> to <%= cur %> - <%= curMsg %>',
|
||||
server.log(['plugins', name, 'info'], {
|
||||
tmpl: 'Change status from <%= prev %> to <%= cur %> - <%= curMsg %>',
|
||||
name: name,
|
||||
prev: previous.state,
|
||||
cur: current.state,
|
||||
|
|
|
@ -26,7 +26,6 @@ module.exports = function (kbnServer) {
|
|||
responseTimeMax: _.get(event, ['responseTimes', port, 'max']),
|
||||
requests: _.get(event, ['requests', port, 'total'], 0)
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
server.route({
|
||||
|
|
|
@ -8,6 +8,7 @@ html(lang='en')
|
|||
meta(name='viewport', content='width=device-width')
|
||||
link(rel='shortcut icon', href='/images/elk.ico')
|
||||
title Kibana
|
||||
link(rel='stylesheet', href='/bundles/#{app.id}.style.css')
|
||||
body(kbn-chrome)
|
||||
script window.__KBN__ = !{j(kibanaPayload)};
|
||||
script(src='/bundles/#{app.id}.js')
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
class="logo-small visible-sm hidden-xs"
|
||||
></li>
|
||||
|
||||
<li ng-if="chrome.getAppCount() > 1 && chrome.getAppId() !== 'appSwitcher'">
|
||||
<li ng-if="chrome.getAppCount() > 1 && chrome.getAppId() !== 'switcher'">
|
||||
<a href="/apps"><i class="fa fa-th" alt="Go to app switcher"></i></a>
|
||||
</li>
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ define(function (require) {
|
|||
var SegmentedRequest = Private(require('components/courier/fetch/request/segmented'));
|
||||
var searchStrategy = Private(require('components/courier/fetch/strategy/search'));
|
||||
var normalizeSortRequest = Private(require('components/courier/data_source/_normalize_sort_request'));
|
||||
var rootSearchSource = require('components/courier/data_source/_root_search_source');
|
||||
|
||||
_.class(SearchSource).inherits(SourceAbstract);
|
||||
function SearchSource(initialState) {
|
||||
|
@ -13,13 +14,6 @@ define(function (require) {
|
|||
}
|
||||
|
||||
// expose a ready state for the route setup to read
|
||||
var rootSearchSource;
|
||||
SearchSource.ready = new Promise(function (resolve) {
|
||||
require(['components/courier/data_source/_root_search_source'], function (PromiseModule) {
|
||||
rootSearchSource = Private(PromiseModule);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
|
||||
/*****
|
||||
* PUBLIC API
|
||||
|
@ -76,7 +70,7 @@ define(function (require) {
|
|||
var self = this;
|
||||
if (self._parent === false) return;
|
||||
if (self._parent) return self._parent;
|
||||
return onlyHardLinked ? undefined : rootSearchSource.get();
|
||||
return onlyHardLinked ? undefined : Private(rootSearchSource).get();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
.control-group {
|
||||
display: flex;
|
||||
flex: 0, 0, auto;
|
||||
flex: 0 0 auto;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
> * {
|
||||
padding-right: @padding-base-horizontal;
|
||||
flex: 0, 0, auto;
|
||||
flex: 0 0 auto;
|
||||
|
||||
&:last-child {
|
||||
padding-right: 0;
|
||||
|
@ -25,7 +25,7 @@
|
|||
|
||||
// the element should take up an even share of available space
|
||||
> .fill {
|
||||
flex: 1, 1, 1%;
|
||||
flex: 1 1 1%;
|
||||
}
|
||||
|
||||
button {
|
||||
|
@ -87,7 +87,7 @@
|
|||
|
||||
> .input-group {
|
||||
display: flex;
|
||||
flex: 1, 0, auto;
|
||||
flex: 1 0 auto;
|
||||
|
||||
> * {
|
||||
float: none;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@import (reference) "~bootstrap/less/mixins";
|
||||
|
||||
.flex-parent(@grow: 1, @shrink: 1, @basis: auto) {
|
||||
flex: @grow, @shrink, @basis;
|
||||
flex: @grow @shrink @basis;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ navbar {
|
|||
// tablets/phones
|
||||
@media (max-width: @screen-md-min) {
|
||||
> .fill {
|
||||
flex: 1, 1, @screen-md;
|
||||
flex: 1 1 @screen-md;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,12 +11,12 @@ paginate {
|
|||
text-align: center;
|
||||
|
||||
.pagination-other-pages {
|
||||
flex: 1, 0, auto;
|
||||
flex: 1 0 auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
&-list {
|
||||
flex: 0, 0, auto;
|
||||
flex: 0 0 auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 0;
|
||||
|
@ -24,7 +24,7 @@ paginate {
|
|||
list-style: none;
|
||||
|
||||
> li {
|
||||
flex: 0, 0, auto;
|
||||
flex: 0 0 auto;
|
||||
user-select: none;
|
||||
|
||||
a {
|
||||
|
@ -45,7 +45,7 @@ paginate {
|
|||
}
|
||||
|
||||
.pagination-size {
|
||||
flex: 0, 0, auto;
|
||||
flex: 0 0 auto;
|
||||
|
||||
input[type=number] {
|
||||
width: 3em;
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
|
||||
//@import url("//fonts.googleapis.com/css?family=Lato:400,700,400italic");
|
||||
|
||||
@import (reference) "~ui-styles/theme/bootstrap.less";
|
||||
@import (reference) "~ui-styles/theme/font-awesome.less";
|
||||
@import (reference) "~ui-styles/mixins";
|
||||
@import (reference) "~ui-styles/variables";
|
||||
|
||||
@import "~ui-styles/theme/bootstrap.less";
|
||||
@import "~ui-styles/theme/font-awesome.less";
|
||||
|
||||
|
||||
// Navbar =====================================================================
|
||||
|
||||
|
|
1
switcher.js.map
Normal file
1
switcher.js.map
Normal file
File diff suppressed because one or more lines are too long
15
tasks/dev.js
15
tasks/dev.js
|
@ -16,4 +16,19 @@ module.exports = function (grunt) {
|
|||
|
||||
grunt.task.run(tasks);
|
||||
});
|
||||
|
||||
grunt.registerTask('devServer', function (keepalive) {
|
||||
var port = grunt.option('port');
|
||||
var quiet = !(grunt.option('debug') || grunt.option('verbose'));
|
||||
|
||||
require('../src/devServer').run(port, quiet)
|
||||
.then(function (server) {
|
||||
grunt.log.ok('Server started: ' + server.info.uri);
|
||||
if (keepalive) {
|
||||
// return a never resolving promise
|
||||
return new Promise(_.noop);
|
||||
}
|
||||
})
|
||||
.nodeify(this.async());
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
module.exports = function (grunt) {
|
||||
var _ = require('lodash');
|
||||
|
||||
grunt.registerTask('devServer', function (keepalive) {
|
||||
var quiet = !(grunt.option('debug') || grunt.option('verbose'));
|
||||
var port = grunt.option('port');
|
||||
|
||||
require('../src/dev_server').run(port, quiet)
|
||||
.then(function (server) {
|
||||
grunt.log.ok('Server started: ' + server.info.uri);
|
||||
if (keepalive) {
|
||||
// return a never resolving promise
|
||||
return new Promise(_.noop);
|
||||
}
|
||||
})
|
||||
.nodeify(this.async());
|
||||
});
|
||||
};
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue