var _ = require('underscore');
var AppLayout = require('../../../AppLayout');
var Backbone = require('backbone');
var SchemaCollection = require('../DownloadClientCollection');
var AddCollectionView = require('./DownloadClientAddCollectionView');

module.exports = {
    open : function(collection) {
        var schemaCollection = new SchemaCollection();
        var originalUrl = schemaCollection.url;
        schemaCollection.url = schemaCollection.url + '/schema';
        schemaCollection.fetch();
        schemaCollection.url = originalUrl;

        var groupedSchemaCollection = new Backbone.Collection();

        schemaCollection.on('sync', function() {

            var groups = schemaCollection.groupBy(function(model, iterator) {
                return model.get('protocol');
            });
            var modelCollection = _.map(groups, function(values, key, list) {
                return {
                    'header'   : key,
                    collection : values
                };
            });

            groupedSchemaCollection.reset(modelCollection);
        });

        var view = new AddCollectionView({
            collection       : groupedSchemaCollection,
            targetCollection : collection
        });

        AppLayout.modalRegion.show(view);
    }
};