angular.module('index.grid.services', [])
.factory('LocalGroupSettingsFabric', function ($http) {
return $http.get('/api/indices/json');
})
.factory('LocalFabric', function () {
return {
getFieldCollection: function (fieldSettingCollection, fieldCollection) {
var fields = _.filter(fieldCollection, function (field) {
return _.some(fieldSettingCollection, function (neededField) {
return neededField.IssFieldId.toUpperCase() == field.name.toUpperCase();
});
});
var grouFields = [];
_.each(fields, function (field) {
var settingField = _.find(fieldSettingCollection, function (sett) { return sett.IssFieldId.toUpperCase() == field.name.toUpperCase(); });
if (settingField != null) {
var grField = {};
grField.name = field.name;
grField.title = field.short_title;
grField.type = field.type;
grField.sortOrder = settingField.SortOrder;
grField.postfix = settingField.FieldPostfix;
grouFields.push(grField);
}
});
grouFields = _.sortBy(grouFields, function (field) {
return field.sortOrder;
});
return grouFields;
},
getMarketDataCollection: function (marketDataCollectionFunc, callback) {
marketDataCollectionFunc.success(function (data, status) {
if (data != undefined) {
var marketData = data[1].marketdata; //add securities
_.each(data[1].securities, function (security_data) {
marketData.push(security_data);
});
if (callback != null)
callback(marketData);
}
});
},
getIndicesTree: function (groupTree, subGroupCollection, marketData, history, lang) {
//find title and indices for each subgroup from settings
// WEBSVC-2701
_.each(subGroupCollection, function (subGroup) {
if (subGroup.IssSubGroupId === 22) {
subGroup.IndexCollection = [{ Id: 16, SecId: "RGBITR", SortOrder: 0 },
{ Id: 7, SecId: "RUCBITR", SortOrder: 0 },
{ Id: 26, SecId: "RUMBITR", SortOrder: 0 }];
subGroup.HideButtonTitleEn = 'HIDE Clear Price indices';
subGroup.HideButtonTitleRu = 'Скрыть "ценовые" индексы';
}
});
if (groupTree != null) {
_.each(subGroupCollection, function (subGroup) {
var subElem = _.find(groupTree.collections, function (gr) { return gr.id == subGroup.IssSubGroupId; });
if (subElem == null)
return null;
subGroup.Name = subElem.title;
subGroup.GroupId = subElem.parent_id;
if (window.page.ru(lang))
subGroup.ButtonTitle = subGroup.ShowButtonTitleRu;
else {
subGroup.ButtonTitle = subGroup.ShowButtonTitleEn;
}
subGroup.IndicesCollection = _.filter(groupTree.collections, function (ind) {
return ind.parent_id == subElem.id;
});
_.each(subGroup.IndicesCollection, function (subIndex) {
if (subIndex.id == 40) {
f = "";
}
subIndex.SubIndicesCollection = _.filter(groupTree.collections_securities, function (ind) {
return ind.collection_id == subIndex.id
&& (_.some(marketData, function (num) {
return num.SECID.toUpperCase() == ind.secid.toUpperCase();
}) || _.some(history, function (num) {
return num.SECID.toUpperCase() == ind.secid.toUpperCase();
}));
});
subIndex.RowCount = _.size(subIndex.SubIndicesCollection);
});
subGroup.IndicesCollection = _.filter(subGroup.IndicesCollection, function (ind) { return ind.RowCount > 0; });
subGroup.RowCount = _.size(subGroup.IndicesCollection);
subGroup.ShowAll = false;
});
subGroupCollection = _.filter(subGroupCollection, function (subGroup) {
return subGroup.RowCount > 0;
});
subGroupCollection = _.sortBy(subGroupCollection, function (subGroup) {
return subGroup.SortOrder;
});
var groupCollection = [];
_.each(_.groupBy(subGroupCollection, function (subGr) { return subGr.GroupId; }), function (group) {
if (group[0] != null) {
var groupId = group[0].GroupId;
//find group data from ISS collection
var treeGroup = _.find(groupTree.collections, function (gr) { return gr.id == groupId; });
if (treeGroup != null) {
group = {
Id: treeGroup.id,
Name: treeGroup.title,
SubGroupCollection: group
};
}
groupCollection.push(group);
}
});
return groupCollection;
} else {
return "no data";
}
}
};
});