UNPKG

ethoinfo-framework

Version:

ethoinfo-framework [![Build Status](https://travis-ci.org/ethoinformatics/ethoinfo-framework.png)](https://travis-ci.org/ethoinformatics/ethoinfo-framework) =============

101 lines (84 loc) 2.27 kB
require('./index.less'); var tmpl = require('./index.vash'), deviceSettings = require('device-settings'), q = require('q'), _ = require('lodash'), $ = require('jquery'), EventEmitter = require('events').EventEmitter, util = require('util'), Modal = require('modal'), app = require('app')(); function CodeManager(){ EventEmitter.call(this); var self = this, settingLookupDomains = _.chain(app.getDomains('setting-lookup')) .sortBy('label') .value(); var $element = $(tmpl({ settings: settingLookupDomains.map(function(domain){ return { name: domain.name, label: domain.label, }; }), })); function loadSettings(){ var loadedSelects = settingLookupDomains.map(function(domain){ var descManager = domain.getService('description-manager'); return domain.getService('entity-manager').getAll() .then(function(entities){ var $select = $element.find('#'+domain.name); entities.forEach(function(entity){ var $opt = $('<option></option>'); $opt.val(entity._id); $opt.text(descManager.getShortDescription(entity)); $select.append($opt); }); return $select; }); }); q.all(loadedSelects) .then(function(selects){ deviceSettings() .then(function(settings){ Object.keys(settings) .forEach(function(key){ var $select = _.find(selects, function($select){ return $select.attr('id') == key;}); if ($select) $select.val(settings[key]); }); }); }); } $element.find('.scroll-wrapper') .css('width', window.innerWidth) .css('height', window.innerHeight-(96+44)); var modal = new Modal({ title: 'Settings', $content: $element, hideOkay: true, }); modal.on('closed', function(){ self.emit('closed'); }); self.show = function(){ loadSettings(); modal.show(); }; $element.find('#btn-save-settings').click(function(){ deviceSettings() .then(function(settings){ $element.find('select').each(function(){ var $select = $(this); settings[$select.attr('id')] = $select.val(); }); deviceSettings(settings) .then(function(res){ console.dir(res); modal.hide(); }); }); }); } util.inherits(CodeManager, EventEmitter); module.exports = CodeManager;