mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 01:13:23 -04:00
[indexPattern/FieldList] move indexed array creation into a class
This commit is contained in:
parent
2217bc6b79
commit
7b8988c9fb
5 changed files with 39 additions and 31 deletions
20
src/kibana/components/index_patterns/_field_list.js
Normal file
20
src/kibana/components/index_patterns/_field_list.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
define(function (require) {
|
||||
return function FieldListProvider(Private) {
|
||||
var Field = Private(require('components/index_patterns/_field'));
|
||||
var IndexedArray = require('utils/indexed_array/index');
|
||||
var _ = require('lodash');
|
||||
|
||||
_(FieldList).inherits(IndexedArray);
|
||||
function FieldList(indexPattern, specs) {
|
||||
FieldList.Super.call(this, {
|
||||
index: ['name'],
|
||||
group: ['type'],
|
||||
initialSet: specs.map(function (field) {
|
||||
return new Field(indexPattern, field);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
return FieldList;
|
||||
};
|
||||
});
|
|
@ -8,11 +8,10 @@ define(function (require) {
|
|||
var getIds = Private(require('components/index_patterns/_get_ids'));
|
||||
var mapper = Private(require('components/index_patterns/_mapper'));
|
||||
var intervals = Private(require('components/index_patterns/_intervals'));
|
||||
var Field = Private(require('components/index_patterns/_field'));
|
||||
var getComputedFields = require('components/index_patterns/_get_computed_fields');
|
||||
var DocSource = Private(require('components/courier/data_source/doc_source'));
|
||||
var mappingSetup = Private(require('utils/mapping_setup'));
|
||||
var IndexedArray = require('utils/indexed_array/index');
|
||||
var FieldList = Private(require('components/index_patterns/_field_list'));
|
||||
|
||||
var flattenHit = Private(require('components/index_patterns/_flatten_hit'));
|
||||
var formatHit = require('components/index_patterns/_format_hit');
|
||||
|
@ -107,14 +106,7 @@ define(function (require) {
|
|||
};
|
||||
|
||||
function initFields(fields) {
|
||||
fields = fields || self.fields || [];
|
||||
self.fields = new IndexedArray({
|
||||
index: ['name'],
|
||||
group: ['type'],
|
||||
initialSet: fields.map(function (field) {
|
||||
return new Field(self, field);
|
||||
})
|
||||
});
|
||||
self.fields = new FieldList(self, fields || self.fields || []);
|
||||
}
|
||||
|
||||
self._indexFields = function () {
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
</div>
|
||||
<ul
|
||||
bindonce class="list-unstyled discover-selected-fields" >
|
||||
<discover-field ng-repeat="field in fields|filter:{display:true}">
|
||||
<discover-field ng-repeat="field in fields.raw|filter:{display:true}">
|
||||
</discover-field>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ define(function (require) {
|
|||
var _ = require('lodash');
|
||||
var rison = require('utils/rison');
|
||||
var fieldCalculator = require('plugins/discover/components/field_chooser/lib/field_calculator');
|
||||
var Field = Private(require('components/index_patterns/_field'));
|
||||
var FieldList = Private(require('components/index_patterns/_field_list'));
|
||||
|
||||
return {
|
||||
restrict: 'E',
|
||||
|
@ -214,32 +214,28 @@ define(function (require) {
|
|||
|
||||
if (!indexPattern || !hits || !fieldCounts) return;
|
||||
|
||||
var fieldNames = _.keys(fieldCounts);
|
||||
var ipFieldNames = _.keys(indexPattern.fields.byName);
|
||||
var unknownFieldNames = _.difference(fieldNames, ipFieldNames);
|
||||
var unknownFields = unknownFieldNames.map(function (name) {
|
||||
return new Field(indexPattern, {
|
||||
name: name,
|
||||
var fieldSpecs = indexPattern.fields.slice(0);
|
||||
|
||||
var fieldNamesInDocs = _.keys(fieldCounts);
|
||||
var fieldNamesInIndexPattern = _.keys(indexPattern.fields.byName);
|
||||
|
||||
_.difference(fieldNamesInDocs, fieldNamesInIndexPattern)
|
||||
.forEach(function (unknownFieldName) {
|
||||
fieldSpecs.push({
|
||||
name: unknownFieldName,
|
||||
type: 'unknown'
|
||||
});
|
||||
});
|
||||
|
||||
return [].concat(indexPattern.fields.raw, unknownFields).map(function (f) {
|
||||
// clone the field with Object.create so that
|
||||
// we can edit it without leaking our changes
|
||||
// and so non-enumerable props/getters are
|
||||
// preserved
|
||||
var field = Object.create(f);
|
||||
|
||||
var fields = new FieldList(indexPattern, fieldSpecs);
|
||||
fields.forEach(function (field) {
|
||||
field.displayOrder = _.indexOf($scope.columns, field.name) + 1;
|
||||
field.display = !!field.displayOrder;
|
||||
field.rowCount = $scope.fieldCounts[field.name];
|
||||
|
||||
var prev = _.find(prevFields, { name: field.name });
|
||||
field.details = _.get(prev, 'details');
|
||||
|
||||
return field;
|
||||
field.details = _.get(prevFields, ['byName', field.name, 'details']);
|
||||
});
|
||||
|
||||
return fields;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -132,7 +132,7 @@ define(function (require) {
|
|||
// Re-init
|
||||
destroy();
|
||||
|
||||
_.each(indexPattern.fields, function (field) { field.count = 0;}); // Reset the popular fields
|
||||
_.each(indexPattern.fields, function (field) { field.$$spec.count = 0;}); // Reset the popular fields
|
||||
init($elem, {
|
||||
columns: [],
|
||||
toggle: sinon.spy(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue