diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..bb85398e --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +/.idea/ +*.iml +node_modules +npm.log +npm-debug.log +*.iml +.idea +Web.config +**/.DS_Store +.DS_Store \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..15b50a3b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,57 @@ +[submodule "submodules/fenix-ui-dashboard"] + path = submodules/fenix-ui-dashboard + url = https://github.com/FENIX-Platform/fenix-ui-dashboard +[submodule "submodules/fenix-ui-DSDEditor"] + path = submodules/fenix-ui-DSDEditor + url = https://github.com/FENIX-Platform/fenix-ui-DSDEditor +[submodule "submodules/fenix-ui-DataEditor"] + path = submodules/fenix-ui-DataEditor + url = https://github.com/FENIX-Platform/fenix-ui-DataEditor +[submodule "submodules/fenix-ui-metadata-editor"] + path = submodules/fenix-ui-metadata-editor + url = https://github.com/FENIX-Platform/fenix-ui-metadata-editor +[submodule "submodules/fenix-ui-map-creator"] + path = submodules/fenix-ui-map-creator + url = https://github.com/FENIX-Platform/fenix-ui-map-creator +[submodule "submodules/fenix-ui-chart-creator"] + path = submodules/fenix-ui-chart-creator + url = https://github.com/FENIX-Platform/fenix-ui-chart-creator +[submodule "submodules/fenix-ui-dataUpload"] + path = submodules/fenix-ui-dataUpload + url = https://github.com/FENIX-Platform/fenix-ui-dataUpload +[submodule "submodules/fenix-ui-data-management"] + path = submodules/fenix-ui-data-management + url = https://github.com/FENIX-Platform/fenix-ui-data-management +[submodule "submodules/fenix-ui-filter"] + path = submodules/fenix-ui-filter + url = https://github.com/FENIX-Platform/fenix-ui-filter +[submodule "submodules/fenix-ui-metadata-viewer"] + path = submodules/fenix-ui-metadata-viewer + url = https://github.com/FENIX-Platform/fenix-ui-metadata-viewer +[submodule "submodules/fenix-ui-common"] + path = submodules/fenix-ui-common + url = https://github.com/FENIX-Platform/fenix-ui-common +[submodule "submodules/fenix-ui-catalog"] + path = submodules/fenix-ui-catalog + url = https://github.com/FENIX-Platform/fenix-ui-catalog +[submodule "submodules/fenix-ui-reports"] + path = submodules/fenix-ui-reports + url = https://github.com/FENIX-Platform/fenix-ui-reports +[submodule "submodules/fenix-ui-menu"] + path = submodules/fenix-ui-menu + url = https://github.com/FENIX-Platform/fenix-ui-menu +[submodule "submodules/fenix-ui-map"] + path = submodules/fenix-ui-map + url = https://github.com/FENIX-Platform/fenix-ui-map +[submodule "submodules/fenix-ui-table-creator"] + path = submodules/fenix-ui-table-creator + url = https://github.com/FENIX-Platform/fenix-ui-table-creator +[submodule "submodules/fenix-ui-analysis"] + path = submodules/fenix-ui-analysis + url = https://github.com/FENIX-Platform/fenix-ui-analysis.git +[submodule "submodules/fenix-ui-visualization-box"] + path = submodules/fenix-ui-visualization-box + url = https://github.com/FENIX-Platform/fenix-ui-visualization-box.git +[submodule "submodules/fenix-ui-datamanagement-commons"] + path = submodules/fenix-ui-datamanagement-commons + url = https://github.com/FENIX-Platform/fenix-ui-datamanagement-commons.git diff --git a/chaplin.js b/chaplin.js new file mode 100644 index 00000000..16fbe388 --- /dev/null +++ b/chaplin.js @@ -0,0 +1,3148 @@ +/*! + * Chaplin 1.1.1 + * + * Chaplin may be freely distributed under the MIT license. + * For all details and documentation: + * http://chaplinjs.org + */ + +(function(){ + + var loader = (function() { + var modules = {}; + var cache = {}; + + var dummy = function() {return function() {};}; + var initModule = function(name, definition) { + var module = {id: name, exports: {}}; + definition(module.exports, dummy(), module); + var exports = cache[name] = module.exports; + return exports; + }; + + var loader = function(path) { + if (cache.hasOwnProperty(path)) return cache[path]; + if (modules.hasOwnProperty(path)) return initModule(path, modules[path]); + throw new Error('Cannot find module "' + path + '"'); + }; + + loader.register = function(bundle, fn) { + modules[bundle] = fn; + }; + return loader; + })(); + + loader.register('chaplin/application', function(e, r, module) { + 'use strict'; + var Application, Backbone, Composer, Dispatcher, EventBroker, Layout, Router, mediator, _; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + Dispatcher = loader('chaplin/dispatcher'); + + Layout = loader('chaplin/views/layout'); + + Composer = loader('chaplin/composer'); + + Router = loader('chaplin/lib/router'); + + EventBroker = loader('chaplin/lib/event_broker'); + + mediator = loader('chaplin/mediator'); + + module.exports = Application = (function() { + Application.extend = Backbone.Model.extend; + + _.extend(Application.prototype, EventBroker); + + Application.prototype.title = ''; + + Application.prototype.dispatcher = null; + + Application.prototype.layout = null; + + Application.prototype.router = null; + + Application.prototype.composer = null; + + Application.prototype.started = false; + + function Application(options) { + if (options == null) { + options = {}; + } + this.initialize(options); + } + + Application.prototype.initialize = function(options) { + if (options == null) { + options = {}; + } + if (this.started) { + throw new Error('Application#initialize: App was already started'); + } + this.initRouter(options.routes, options); + this.initDispatcher(options); + this.initLayout(options); + this.initComposer(options); + this.initMediator(); + return this.start(); + }; + + Application.prototype.initDispatcher = function(options) { + return this.dispatcher = new Dispatcher(options); + }; + + Application.prototype.initLayout = function(options) { + if (options == null) { + options = {}; + } + if (options.title == null) { + options.title = this.title; + } + return this.layout = new Layout(options); + }; + + Application.prototype.initComposer = function(options) { + if (options == null) { + options = {}; + } + return this.composer = new Composer(options); + }; + + Application.prototype.initMediator = function() { + return mediator.seal(); + }; + + Application.prototype.initRouter = function(routes, options) { + this.router = new Router(options); + return typeof routes === "function" ? routes(this.router.match) : void 0; + }; + + Application.prototype.start = function() { + this.router.startHistory(); + this.started = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + Application.prototype.disposed = false; + + Application.prototype.dispose = function() { + var prop, properties, _i, _len; + if (this.disposed) { + return; + } + properties = ['dispatcher', 'layout', 'router', 'composer']; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + if (this[prop] != null) { + this[prop].dispose(); + } + } + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Application; + + })(); + +//# sourceMappingURL=application.js.map + + });;loader.register('chaplin/mediator', function(e, r, module) { + 'use strict'; + var Backbone, handlers, mediator, support, utils, _, + __slice = [].slice; + + Backbone = loader('backbone'); + + _ = loader('underscore'); + + support = loader('chaplin/lib/support'); + + utils = loader('chaplin/lib/utils'); + + mediator = {}; + + mediator.subscribe = mediator.on = Backbone.Events.on; + + mediator.subscribeOnce = mediator.once = Backbone.Events.once; + + mediator.unsubscribe = mediator.off = Backbone.Events.off; + + mediator.publish = mediator.trigger = Backbone.Events.trigger; + + mediator._callbacks = null; + + handlers = mediator._handlers = {}; + + mediator.setHandler = function(name, method, instance) { + return handlers[name] = { + instance: instance, + method: method + }; + }; + + mediator.execute = function() { + var args, handler, name, nameOrObj, silent; + nameOrObj = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; + silent = false; + if (typeof nameOrObj === 'object') { + silent = nameOrObj.silent; + name = nameOrObj.name; + } else { + name = nameOrObj; + } + handler = handlers[name]; + if (handler) { + return handler.method.apply(handler.instance, args); + } else if (!silent) { + throw new Error("mediator.execute: " + name + " handler is not defined"); + } + }; + + mediator.removeHandlers = function(instanceOrNames) { + var handler, name, _i, _len; + if (!instanceOrNames) { + mediator._handlers = {}; + } + if (utils.isArray(instanceOrNames)) { + for (_i = 0, _len = instanceOrNames.length; _i < _len; _i++) { + name = instanceOrNames[_i]; + delete handlers[name]; + } + } else { + for (name in handlers) { + handler = handlers[name]; + if (handler.instance === instanceOrNames) { + delete handlers[name]; + } + } + } + }; + + utils.readonly(mediator, 'subscribe', 'subscribeOnce', 'unsubscribe', 'publish', 'setHandler', 'execute', 'removeHandlers'); + + mediator.seal = function() { + if (support.propertyDescriptors && Object.seal) { + return Object.seal(mediator); + } + }; + + utils.readonly(mediator, 'seal'); + + module.exports = mediator; + +//# sourceMappingURL=mediator.js.map + + });;loader.register('chaplin/dispatcher', function(e, r, module) { + 'use strict'; + var Backbone, Dispatcher, EventBroker, mediator, utils, _; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + mediator = loader('chaplin/mediator'); + + utils = loader('chaplin/lib/utils'); + + EventBroker = loader('chaplin/lib/event_broker'); + + module.exports = Dispatcher = (function() { + Dispatcher.extend = Backbone.Model.extend; + + _.extend(Dispatcher.prototype, EventBroker); + + Dispatcher.prototype.previousRoute = null; + + Dispatcher.prototype.currentController = null; + + Dispatcher.prototype.currentRoute = null; + + Dispatcher.prototype.currentParams = null; + + Dispatcher.prototype.currentQuery = null; + + function Dispatcher() { + this.initialize.apply(this, arguments); + } + + Dispatcher.prototype.initialize = function(options) { + if (options == null) { + options = {}; + } + this.settings = _.defaults(options, { + controllerPath: 'controllers/', + controllerSuffix: '_controller' + }); + return this.subscribeEvent('router:match', this.dispatch); + }; + + Dispatcher.prototype.dispatch = function(route, params, options) { + var _ref, _ref1; + params = params ? _.extend({}, params) : {}; + options = options ? _.extend({}, options) : {}; + if (options.query == null) { + options.query = {}; + } + if (options.forceStartup !== true) { + options.forceStartup = false; + } + if (!options.forceStartup && ((_ref = this.currentRoute) != null ? _ref.controller : void 0) === route.controller && ((_ref1 = this.currentRoute) != null ? _ref1.action : void 0) === route.action && _.isEqual(this.currentParams, params) && _.isEqual(this.currentQuery, options.query)) { + return; + } + return this.loadController(route.controller, (function(_this) { + return function(Controller) { + return _this.controllerLoaded(route, params, options, Controller); + }; + })(this)); + }; + + Dispatcher.prototype.loadController = function(name, handler) { + var fileName, moduleName; + if (name && typeof name === 'object') { + return handler(name); + } + fileName = name + this.settings.controllerSuffix; + moduleName = this.settings.controllerPath + fileName; + if (typeof define !== "undefined" && define !== null ? define.amd : void 0) { + return require([moduleName], handler); + } else { + return setTimeout((function(_this) { + return function() { + return handler(require(moduleName)); + }; + })(this), 0); + } + }; + + Dispatcher.prototype.controllerLoaded = function(route, params, options, Controller) { + var controller, prev, previous; + if (this.nextPreviousRoute = this.currentRoute) { + previous = _.extend({}, this.nextPreviousRoute); + if (this.currentParams != null) { + previous.params = this.currentParams; + } + if (previous.previous) { + delete previous.previous; + } + prev = { + previous: previous + }; + } + this.nextCurrentRoute = _.extend({}, route, prev); + controller = new Controller(params, this.nextCurrentRoute, options); + return this.executeBeforeAction(controller, this.nextCurrentRoute, params, options); + }; + + Dispatcher.prototype.executeAction = function(controller, route, params, options) { + if (this.currentController) { + this.publishEvent('beforeControllerDispose', this.currentController); + this.currentController.dispose(params, route, options); + } + this.currentController = controller; + this.currentParams = _.extend({}, params); + this.currentQuery = _.extend({}, options.query); + controller[route.action](params, route, options); + if (controller.redirected) { + return; + } + return this.publishEvent('dispatcher:dispatch', this.currentController, params, route, options); + }; + + Dispatcher.prototype.executeBeforeAction = function(controller, route, params, options) { + var before, executeAction, promise; + before = controller.beforeAction; + executeAction = (function(_this) { + return function() { + if (controller.redirected || _this.currentRoute && route === _this.currentRoute) { + _this.nextPreviousRoute = _this.nextCurrentRoute = null; + controller.dispose(); + return; + } + _this.previousRoute = _this.nextPreviousRoute; + _this.currentRoute = _this.nextCurrentRoute; + _this.nextPreviousRoute = _this.nextCurrentRoute = null; + return _this.executeAction(controller, route, params, options); + }; + })(this); + if (!before) { + executeAction(); + return; + } + if (typeof before !== 'function') { + throw new TypeError('Controller#beforeAction: function expected. ' + 'Old object-like form is not supported.'); + } + promise = controller.beforeAction(params, route, options); + if (promise && promise.then) { + return promise.then(executeAction); + } else { + return executeAction(); + } + }; + + Dispatcher.prototype.disposed = false; + + Dispatcher.prototype.dispose = function() { + if (this.disposed) { + return; + } + this.unsubscribeAllEvents(); + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Dispatcher; + + })(); + +//# sourceMappingURL=dispatcher.js.map + + });;loader.register('chaplin/composer', function(e, r, module) { + 'use strict'; + var Backbone, Composer, Composition, EventBroker, mediator, utils, _; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + mediator = loader('chaplin/mediator'); + + utils = loader('chaplin/lib/utils'); + + Composition = loader('chaplin/lib/composition'); + + EventBroker = loader('chaplin/lib/event_broker'); + + module.exports = Composer = (function() { + Composer.extend = Backbone.Model.extend; + + _.extend(Composer.prototype, EventBroker); + + Composer.prototype.compositions = null; + + function Composer() { + this.initialize.apply(this, arguments); + } + + Composer.prototype.initialize = function(options) { + if (options == null) { + options = {}; + } + this.compositions = {}; + mediator.setHandler('composer:compose', this.compose, this); + mediator.setHandler('composer:retrieve', this.retrieve, this); + return this.subscribeEvent('dispatcher:dispatch', this.cleanup); + }; + + Composer.prototype.compose = function(name, second, third) { + if (typeof second === 'function') { + if (third || second.prototype.dispose) { + if (second.prototype instanceof Composition) { + return this._compose(name, { + composition: second, + options: third + }); + } else { + return this._compose(name, { + options: third, + compose: function() { + var autoRender, disabledAutoRender; + if (second.prototype instanceof Backbone.Model || second.prototype instanceof Backbone.Collection) { + this.item = new second(null, this.options); + } else { + this.item = new second(this.options); + } + autoRender = this.item.autoRender; + disabledAutoRender = autoRender === void 0 || !autoRender; + if (disabledAutoRender && typeof this.item.render === 'function') { + return this.item.render(); + } + } + }); + } + } + return this._compose(name, { + compose: second + }); + } + if (typeof third === 'function') { + return this._compose(name, { + compose: third, + options: second + }); + } + return this._compose(name, second); + }; + + Composer.prototype._compose = function(name, options) { + var composition, current, isPromise, returned; + if (typeof options.compose !== 'function' && (options.composition == null)) { + throw new Error('Composer#compose was used incorrectly'); + } + if (options.composition != null) { + composition = new options.composition(options.options); + } else { + composition = new Composition(options.options); + composition.compose = options.compose; + if (options.check) { + composition.check = options.check; + } + } + current = this.compositions[name]; + isPromise = false; + if (current && current.check(composition.options)) { + current.stale(false); + } else { + if (current) { + current.dispose(); + } + returned = composition.compose(composition.options); + isPromise = typeof (returned != null ? returned.then : void 0) === 'function'; + composition.stale(false); + this.compositions[name] = composition; + } + if (isPromise) { + return returned; + } else { + return this.compositions[name].item; + } + }; + + Composer.prototype.retrieve = function(name) { + var active; + active = this.compositions[name]; + if (active && !active.stale()) { + return active.item; + } else { + return void 0; + } + }; + + Composer.prototype.cleanup = function() { + var composition, name, _ref; + _ref = this.compositions; + for (name in _ref) { + composition = _ref[name]; + if (composition.stale()) { + composition.dispose(); + delete this.compositions[name]; + } else { + composition.stale(true); + } + } + }; + + Composer.prototype.dispose = function() { + var composition, name, _ref; + if (this.disposed) { + return; + } + this.unsubscribeAllEvents(); + mediator.removeHandlers(this); + _ref = this.compositions; + for (name in _ref) { + composition = _ref[name]; + composition.dispose(); + } + delete this.compositions; + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Composer; + + })(); + +//# sourceMappingURL=composer.js.map + + });;loader.register('chaplin/controllers/controller', function(e, r, module) { + 'use strict'; + var Backbone, Controller, EventBroker, mediator, utils, _, + __slice = [].slice, + __hasProp = {}.hasOwnProperty; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + EventBroker = loader('chaplin/lib/event_broker'); + + utils = loader('chaplin/lib/utils'); + + mediator = loader('chaplin/mediator'); + + module.exports = Controller = (function() { + Controller.extend = Backbone.Model.extend; + + _.extend(Controller.prototype, Backbone.Events); + + _.extend(Controller.prototype, EventBroker); + + Controller.prototype.view = null; + + Controller.prototype.redirected = false; + + function Controller() { + this.initialize.apply(this, arguments); + } + + Controller.prototype.initialize = function() {}; + + Controller.prototype.beforeAction = function() {}; + + Controller.prototype.adjustTitle = function(subtitle) { + return mediator.execute('adjustTitle', subtitle); + }; + + Controller.prototype.reuse = function(name) { + var method; + method = arguments.length === 1 ? 'retrieve' : 'compose'; + return mediator.execute.apply(mediator, ["composer:" + method].concat(__slice.call(arguments))); + }; + + Controller.prototype.compose = function() { + throw new Error('Controller#compose was moved to Controller#reuse'); + }; + + Controller.prototype.redirectTo = function(pathDesc, params, options) { + this.redirected = true; + return utils.redirectTo(pathDesc, params, options); + }; + + Controller.prototype.disposed = false; + + Controller.prototype.dispose = function() { + var obj, prop; + if (this.disposed) { + return; + } + for (prop in this) { + if (!__hasProp.call(this, prop)) continue; + obj = this[prop]; + if (!(obj && typeof obj.dispose === 'function')) { + continue; + } + obj.dispose(); + delete this[prop]; + } + this.unsubscribeAllEvents(); + this.stopListening(); + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Controller; + + })(); + +//# sourceMappingURL=controller.js.map + + });;loader.register('chaplin/models/collection', function(e, r, module) { + 'use strict'; + var Backbone, Collection, EventBroker, Model, utils, _, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + EventBroker = loader('chaplin/lib/event_broker'); + + Model = loader('chaplin/models/model'); + + utils = loader('chaplin/lib/utils'); + + module.exports = Collection = (function(_super) { + __extends(Collection, _super); + + function Collection() { + return Collection.__super__.constructor.apply(this, arguments); + } + + _.extend(Collection.prototype, EventBroker); + + Collection.prototype.model = Model; + + Collection.prototype.serialize = function() { + return this.map(utils.serialize); + }; + + Collection.prototype.disposed = false; + + Collection.prototype.dispose = function() { + var prop, properties, _i, _len; + if (this.disposed) { + return; + } + this.trigger('dispose', this); + this.reset([], { + silent: true + }); + this.unsubscribeAllEvents(); + this.stopListening(); + this.off(); + properties = ['model', 'models', '_byId', '_byCid', '_callbacks']; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + delete this[prop]; + } + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Collection; + + })(Backbone.Collection); + +//# sourceMappingURL=collection.js.map + + });;loader.register('chaplin/models/model', function(e, r, module) { + 'use strict'; + var Backbone, EventBroker, Model, serializeAttributes, serializeModelAttributes, utils, _, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + utils = loader('chaplin/lib/utils'); + + EventBroker = loader('chaplin/lib/event_broker'); + + serializeAttributes = function(model, attributes, modelStack) { + var delegator, key, otherModel, serializedModels, value, _i, _len, _ref; + delegator = utils.beget(attributes); + if (modelStack == null) { + modelStack = {}; + } + modelStack[model.cid] = true; + for (key in attributes) { + value = attributes[key]; + if (value instanceof Backbone.Model) { + delegator[key] = serializeModelAttributes(value, model, modelStack); + } else if (value instanceof Backbone.Collection) { + serializedModels = []; + _ref = value.models; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + otherModel = _ref[_i]; + serializedModels.push(serializeModelAttributes(otherModel, model, modelStack)); + } + delegator[key] = serializedModels; + } + } + delete modelStack[model.cid]; + return delegator; + }; + + serializeModelAttributes = function(model, currentModel, modelStack) { + var attributes; + if (model === currentModel || model.cid in modelStack) { + return null; + } + attributes = typeof model.getAttributes === 'function' ? model.getAttributes() : model.attributes; + return serializeAttributes(model, attributes, modelStack); + }; + + module.exports = Model = (function(_super) { + __extends(Model, _super); + + function Model() { + return Model.__super__.constructor.apply(this, arguments); + } + + _.extend(Model.prototype, EventBroker); + + Model.prototype.getAttributes = function() { + return this.attributes; + }; + + Model.prototype.serialize = function() { + return serializeAttributes(this, this.getAttributes()); + }; + + Model.prototype.disposed = false; + + Model.prototype.dispose = function() { + var prop, properties, _i, _len, _ref; + if (this.disposed) { + return; + } + this.trigger('dispose', this); + if ((_ref = this.collection) != null) { + if (typeof _ref.remove === "function") { + _ref.remove(this, { + silent: true + }); + } + } + this.unsubscribeAllEvents(); + this.stopListening(); + this.off(); + properties = ['collection', 'attributes', 'changed', 'defaults', '_escapedAttributes', '_previousAttributes', '_silent', '_pending', '_callbacks']; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + delete this[prop]; + } + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Model; + + })(Backbone.Model); + +//# sourceMappingURL=model.js.map + + });;loader.register('chaplin/views/layout', function(e, r, module) { + 'use strict'; + var $, Backbone, EventBroker, Layout, View, mediator, utils, _, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + mediator = loader('chaplin/mediator'); + + utils = loader('chaplin/lib/utils'); + + EventBroker = loader('chaplin/lib/event_broker'); + + View = loader('chaplin/views/view'); + + $ = Backbone.$; + + module.exports = Layout = (function(_super) { + __extends(Layout, _super); + + Layout.prototype.el = 'body'; + + Layout.prototype.keepElement = true; + + Layout.prototype.title = ''; + + Layout.prototype.globalRegions = null; + + Layout.prototype.listen = { + 'beforeControllerDispose mediator': 'scroll' + }; + + function Layout(options) { + if (options == null) { + options = {}; + } + this.openLink = __bind(this.openLink, this); + this.globalRegions = []; + this.title = options.title; + if (options.regions) { + this.regions = options.regions; + } + this.settings = _.defaults(options, { + titleTemplate: function(data) { + var st; + st = data.subtitle ? "" + data.subtitle + " \u2013 " : ''; + return st + data.title; + }, + openExternalToBlank: false, + routeLinks: 'a, .go-to', + skipRouting: '.noscript', + scrollTo: [0, 0] + }); + mediator.setHandler('region:show', this.showRegion, this); + mediator.setHandler('region:register', this.registerRegionHandler, this); + mediator.setHandler('region:unregister', this.unregisterRegionHandler, this); + mediator.setHandler('region:find', this.regionByName, this); + mediator.setHandler('adjustTitle', this.adjustTitle, this); + Layout.__super__.constructor.apply(this, arguments); + if (this.settings.routeLinks) { + this.startLinkRouting(); + } + } + + Layout.prototype.scroll = function() { + var position; + position = this.settings.scrollTo; + if (position) { + return window.scrollTo(position[0], position[1]); + } + }; + + Layout.prototype.adjustTitle = function(subtitle) { + var title; + if (subtitle == null) { + subtitle = ''; + } + title = this.settings.titleTemplate({ + title: this.title, + subtitle: subtitle + }); + setTimeout((function(_this) { + return function() { + document.title = title; + return _this.publishEvent('adjustTitle', subtitle, title); + }; + })(this), 50); + return title; + }; + + Layout.prototype.startLinkRouting = function() { + var route; + route = this.settings.routeLinks; + if (!route) { + return; + } + if ($) { + return this.$el.on('click', route, this.openLink); + } else { + return this.delegate('click', route, this.openLink); + } + }; + + Layout.prototype.stopLinkRouting = function() { + var route; + route = this.settings.routeLinks; + if ($) { + if (route) { + return this.$el.off('click', route); + } + } else { + return this.undelegate('click', route, this.openLink); + } + }; + + Layout.prototype.isExternalLink = function(link) { + var _ref, _ref1; + return link.target === '_blank' || link.rel === 'external' || ((_ref = link.protocol) !== 'http:' && _ref !== 'https:' && _ref !== 'file:' && _ref !== 'ms-appx:') || ((_ref1 = link.hostname) !== location.hostname && _ref1 !== ''); + }; + + Layout.prototype.openLink = function(event) { + var el, external, href, isAnchor, skipRouting, type; + if (utils.modifierKeyPressed(event)) { + return; + } + el = $ ? event.currentTarget : event.delegateTarget; + isAnchor = el.nodeName === 'A'; + href = el.getAttribute('href') || el.getAttribute('data-href') || null; + if ((href == null) || href === '' || href.charAt(0) === '#') { + return; + } + skipRouting = this.settings.skipRouting; + type = typeof skipRouting; + if (type === 'function' && !skipRouting(href, el) || type === 'string' && ($ ? $(el).is(skipRouting) : Backbone.utils.matchesSelector(el, skipRouting))) { + return; + } + external = isAnchor && this.isExternalLink(el); + if (external) { + if (this.settings.openExternalToBlank) { + event.preventDefault(); + this.openWindow(href, el); + } + return; + } + utils.redirectTo({ + url: href + }); + event.preventDefault(); + }; + + Layout.prototype.openWindow = function(href, el) { + return window.open(href); + }; + + Layout.prototype.registerRegionHandler = function(instance, name, selector) { + if (name != null) { + return this.registerGlobalRegion(instance, name, selector); + } else { + return this.registerGlobalRegions(instance); + } + }; + + Layout.prototype.registerGlobalRegion = function(instance, name, selector) { + this.unregisterGlobalRegion(instance, name); + return this.globalRegions.unshift({ + instance: instance, + name: name, + selector: selector + }); + }; + + Layout.prototype.registerGlobalRegions = function(instance) { + var name, selector, version, _i, _len, _ref; + _ref = utils.getAllPropertyVersions(instance, 'regions'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + version = _ref[_i]; + for (name in version) { + selector = version[name]; + this.registerGlobalRegion(instance, name, selector); + } + } + }; + + Layout.prototype.unregisterRegionHandler = function(instance, name) { + if (name != null) { + return this.unregisterGlobalRegion(instance, name); + } else { + return this.unregisterGlobalRegions(instance); + } + }; + + Layout.prototype.unregisterGlobalRegion = function(instance, name) { + var cid, region; + cid = instance.cid; + return this.globalRegions = (function() { + var _i, _len, _ref, _results; + _ref = this.globalRegions; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + region = _ref[_i]; + if (region.instance.cid !== cid || region.name !== name) { + _results.push(region); + } + } + return _results; + }).call(this); + }; + + Layout.prototype.unregisterGlobalRegions = function(instance) { + var region; + return this.globalRegions = (function() { + var _i, _len, _ref, _results; + _ref = this.globalRegions; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + region = _ref[_i]; + if (region.instance.cid !== instance.cid) { + _results.push(region); + } + } + return _results; + }).call(this); + }; + + Layout.prototype.regionByName = function(name) { + var reg, _i, _len, _ref; + _ref = this.globalRegions; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + reg = _ref[_i]; + if (reg.name === name && !reg.instance.stale) { + return reg; + } + } + }; + + Layout.prototype.showRegion = function(name, instance) { + var region; + region = this.regionByName(name); + if (!region) { + throw new Error("No region registered under " + name); + } + return instance.container = region.selector === '' ? $ ? region.instance.$el : region.instance.el : region.instance.noWrap ? $ ? $(region.instance.container).find(region.selector) : region.instance.container.querySelector(region.selector) : region.instance[$ ? '$' : 'find'](region.selector); + }; + + Layout.prototype.dispose = function() { + var prop, _i, _len, _ref; + if (this.disposed) { + return; + } + this.stopLinkRouting(); + _ref = ['globalRegions', 'title', 'route']; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + prop = _ref[_i]; + delete this[prop]; + } + mediator.removeHandlers(this); + return Layout.__super__.dispose.apply(this, arguments); + }; + + return Layout; + + })(View); + +//# sourceMappingURL=layout.js.map + + });;loader.register('chaplin/views/view', function(e, r, module) { + 'use strict'; + var $, Backbone, EventBroker, View, attach, bind, mediator, setHTML, utils, _, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + mediator = loader('chaplin/mediator'); + + EventBroker = loader('chaplin/lib/event_broker'); + + utils = loader('chaplin/lib/utils'); + + $ = Backbone.$; + + bind = (function() { + if (Function.prototype.bind) { + return function(item, ctx) { + return item.bind(ctx); + }; + } else if (_.bind) { + return _.bind; + } + })(); + + setHTML = (function() { + if ($) { + return function(elem, html) { + elem.empty(); + elem.append(html); + return html; + }; + } else { + return function(elem, html) { + return elem.innerHTML = html; + }; + } + })(); + + attach = (function() { + if ($) { + return function(view) { + var actual; + actual = $(view.container); + if (typeof view.containerMethod === 'function') { + return view.containerMethod(actual, view.el); + } else { + return actual[view.containerMethod](view.el); + } + }; + } else { + return function(view) { + var actual; + actual = typeof view.container === 'string' ? document.querySelector(view.container) : view.container; + if (typeof view.containerMethod === 'function') { + return view.containerMethod(actual, view.el); + } else { + return actual[view.containerMethod](view.el); + } + }; + } + })(); + + module.exports = View = (function(_super) { + __extends(View, _super); + + _.extend(View.prototype, EventBroker); + + View.prototype.autoRender = false; + + View.prototype.autoAttach = true; + + View.prototype.container = null; + + View.prototype.containerMethod = $ ? 'append' : 'appendChild'; + + View.prototype.regions = null; + + View.prototype.region = null; + + View.prototype.stale = false; + + View.prototype.noWrap = false; + + View.prototype.keepElement = false; + + View.prototype.subviews = null; + + View.prototype.subviewsByName = null; + + View.prototype.optionNames = ['autoAttach', 'autoRender', 'container', 'containerMethod', 'region', 'regions', 'noWrap']; + + function View(options) { + var optName, optValue, region, render; + if (options) { + for (optName in options) { + optValue = options[optName]; + if (__indexOf.call(this.optionNames, optName) >= 0) { + this[optName] = optValue; + } + } + } + render = this.render; + this.render = (function(_this) { + return function() { + var returnValue; + if (_this.disposed) { + return false; + } + returnValue = render.apply(_this, arguments); + if (_this.autoAttach) { + _this.attach.apply(_this, arguments); + } + return returnValue; + }; + })(this); + this.subviews = []; + this.subviewsByName = {}; + if (this.noWrap) { + if (this.region) { + region = mediator.execute('region:find', this.region); + if (region != null) { + this.el = region.instance.container != null ? region.instance.region != null ? $(region.instance.container).find(region.selector) : region.instance.container : region.instance.$(region.selector); + } + } + if (this.container) { + this.el = this.container; + } + } + View.__super__.constructor.apply(this, arguments); + this.delegateListeners(); + if (this.model) { + this.listenTo(this.model, 'dispose', this.dispose); + } + if (this.collection) { + this.listenTo(this.collection, 'dispose', (function(_this) { + return function(subject) { + if (!subject || subject === _this.collection) { + return _this.dispose(); + } + }; + })(this)); + } + if (this.regions != null) { + mediator.execute('region:register', this); + } + if (this.autoRender) { + this.render(); + } + } + + View.prototype.delegate = function(eventName, second, third) { + var bound, event, events, handler, list, selector, _ref; + if (Backbone.utils && ((_ref = Backbone.utils) != null ? _ref.delegate : void 0)) { + return Backbone.utils.delegate(this, eventName, second, third); + } + if (typeof eventName !== 'string') { + throw new TypeError('View#delegate: first argument must be a string'); + } + if (arguments.length === 2) { + handler = second; + } else if (arguments.length === 3) { + selector = second; + if (typeof selector !== 'string') { + throw new TypeError('View#delegate: ' + 'second argument must be a string'); + } + handler = third; + } else { + throw new TypeError('View#delegate: ' + 'only two or three arguments are allowed'); + } + if (typeof handler !== 'function') { + throw new TypeError('View#delegate: ' + 'handler argument must be function'); + } + list = (function() { + var _i, _len, _ref1, _results; + _ref1 = eventName.split(' '); + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + event = _ref1[_i]; + _results.push("" + event + ".delegate" + this.cid); + } + return _results; + }).call(this); + events = list.join(' '); + bound = bind(handler, this); + this.$el.on(events, selector || null, bound); + return bound; + }; + + View.prototype._delegateEvents = function(events) { + var bound, eventName, handler, key, match, selector, value; + if (Backbone.View.prototype.delegateEvents.length === 2) { + return Backbone.View.prototype.delegateEvents.call(this, events, true); + } + for (key in events) { + value = events[key]; + handler = typeof value === 'function' ? value : this[value]; + if (!handler) { + throw new Error("Method '" + value + "' does not exist"); + } + match = key.match(/^(\S+)\s*(.*)$/); + eventName = "" + match[1] + ".delegateEvents" + this.cid; + selector = match[2]; + bound = bind(handler, this); + this.$el.on(eventName, selector || null, bound); + } + }; + + View.prototype.delegateEvents = function(events, keepOld) { + var classEvents, _i, _len, _ref; + if (!keepOld) { + this.undelegateEvents(); + } + if (events) { + return this._delegateEvents(events); + } + _ref = utils.getAllPropertyVersions(this, 'events'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + classEvents = _ref[_i]; + if (typeof classEvents === 'function') { + classEvents = classEvents.call(this); + } + this._delegateEvents(classEvents); + } + }; + + View.prototype.undelegate = function(eventName, second, third) { + var event, events, handler, list, selector, _ref; + if (Backbone.utils && ((_ref = Backbone.utils) != null ? _ref.undelegate : void 0)) { + return Backbone.utils.undelegate(this, eventName, second, third); + } + if (eventName) { + if (typeof eventName !== 'string') { + throw new TypeError('View#undelegate: first argument must be a string'); + } + if (arguments.length === 2) { + if (typeof second === 'string') { + selector = second; + } else { + handler = second; + } + } else if (arguments.length === 3) { + selector = second; + if (typeof selector !== 'string') { + throw new TypeError('View#undelegate: ' + 'second argument must be a string'); + } + handler = third; + } + list = (function() { + var _i, _len, _ref1, _results; + _ref1 = eventName.split(' '); + _results = []; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + event = _ref1[_i]; + _results.push("" + event + ".delegate" + this.cid); + } + return _results; + }).call(this); + events = list.join(' '); + return this.$el.off(events, selector || null); + } else { + return this.$el.off(".delegate" + this.cid); + } + }; + + View.prototype.delegateListeners = function() { + var eventName, key, method, target, version, _i, _len, _ref, _ref1; + if (!this.listen) { + return; + } + _ref = utils.getAllPropertyVersions(this, 'listen'); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + version = _ref[_i]; + if (typeof version === 'function') { + version = version.call(this); + } + for (key in version) { + method = version[key]; + if (typeof method !== 'function') { + method = this[method]; + } + if (typeof method !== 'function') { + throw new Error('View#delegateListeners: ' + ("listener for \"" + key + "\" must be function")); + } + _ref1 = key.split(' '), eventName = _ref1[0], target = _ref1[1]; + this.delegateListener(eventName, target, method); + } + } + }; + + View.prototype.delegateListener = function(eventName, target, callback) { + var prop; + if (target === 'model' || target === 'collection') { + prop = this[target]; + if (prop) { + this.listenTo(prop, eventName, callback); + } + } else if (target === 'mediator') { + this.subscribeEvent(eventName, callback); + } else if (!target) { + this.on(eventName, callback, this); + } + }; + + View.prototype.registerRegion = function(name, selector) { + return mediator.execute('region:register', this, name, selector); + }; + + View.prototype.unregisterRegion = function(name) { + return mediator.execute('region:unregister', this, name); + }; + + View.prototype.unregisterAllRegions = function() { + return mediator.execute({ + name: 'region:unregister', + silent: true + }, this); + }; + + View.prototype.subview = function(name, view) { + var byName, subviews; + subviews = this.subviews; + byName = this.subviewsByName; + if (name && view) { + this.removeSubview(name); + subviews.push(view); + byName[name] = view; + return view; + } else if (name) { + console.log(name); + return byName[name]; + } + }; + + View.prototype.removeSubview = function(nameOrView) { + var byName, index, name, otherName, otherView, subviews, view; + if (!nameOrView) { + return; + } + subviews = this.subviews; + byName = this.subviewsByName; + if (typeof nameOrView === 'string') { + name = nameOrView; + view = byName[name]; + } else { + view = nameOrView; + for (otherName in byName) { + otherView = byName[otherName]; + if (!(otherView === view)) { + continue; + } + name = otherName; + break; + } + } + if (!(name && view && view.dispose)) { + return; + } + view.dispose(); + index = utils.indexOf(subviews, view); + if (index !== -1) { + subviews.splice(index, 1); + } + return delete byName[name]; + }; + + View.prototype.getTemplateData = function() { + var data, source; + data = this.model ? utils.serialize(this.model) : this.collection ? { + items: utils.serialize(this.collection), + length: this.collection.length + } : {}; + source = this.model || this.collection; + if (source) { + if (typeof source.isSynced === 'function' && !('synced' in data)) { + data.synced = source.isSynced(); + } + } + return data; + }; + + View.prototype.getTemplateFunction = function() { + throw new Error('View#getTemplateFunction must be overridden'); + }; + + View.prototype.render = function() { + var el, html, templateFunc; + if (this.disposed) { + return false; + } + templateFunc = this.getTemplateFunction(); + if (typeof templateFunc === 'function') { + html = templateFunc(this.getTemplateData()); + if (this.noWrap) { + el = document.createElement('div'); + el.innerHTML = html; + if (el.children.length > 1) { + throw new Error('There must be a single top-level element when ' + 'using `noWrap`.'); + } + this.undelegateEvents(); + this.setElement(el.firstChild, true); + } else { + setHTML(($ ? this.$el : this.el), html); + } + } + return this; + }; + + View.prototype.attach = function() { + if (this.region != null) { + mediator.execute('region:show', this.region, this); + } + if (this.container && !document.body.contains(this.el)) { + attach(this); + return this.trigger('addedToDOM'); + } + }; + + View.prototype.disposed = false; + + View.prototype.dispose = function() { + var prop, properties, subview, _i, _j, _len, _len1, _ref; + if (this.disposed) { + return; + } + this.unregisterAllRegions(); + _ref = this.subviews; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + subview = _ref[_i]; + subview.dispose(); + } + this.unsubscribeAllEvents(); + this.off(); + if (this.keepElement) { + this.undelegateEvents(); + this.undelegate(); + this.stopListening(); + } else { + this.remove(); + } + properties = ['el', '$el', 'options', 'model', 'collection', 'subviews', 'subviewsByName', '_callbacks']; + for (_j = 0, _len1 = properties.length; _j < _len1; _j++) { + prop = properties[_j]; + delete this[prop]; + } + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return View; + + })(Backbone.View); + +//# sourceMappingURL=view.js.map + + });;loader.register('chaplin/views/collection_view', function(e, r, module) { + 'use strict'; + var $, Backbone, CollectionView, View, addClass, endAnimation, filterChildren, insertView, startAnimation, toggleElement, utils, _, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + View = loader('chaplin/views/view'); + + utils = loader('chaplin/lib/utils'); + + $ = Backbone.$; + + filterChildren = function(nodeList, selector) { + var node, _i, _len, _results; + if (!selector) { + return nodeList; + } + _results = []; + for (_i = 0, _len = nodeList.length; _i < _len; _i++) { + node = nodeList[_i]; + if (Backbone.utils.matchesSelector(node, selector)) { + _results.push(node); + } + } + return _results; + }; + + toggleElement = (function() { + if ($) { + return function(elem, visible) { + return elem.toggle(visible); + }; + } else { + return function(elem, visible) { + return elem.style.display = (visible ? '' : 'none'); + }; + } + })(); + + addClass = (function() { + if ($) { + return function(elem, cls) { + return elem.addClass(cls); + }; + } else { + return function(elem, cls) { + return elem.classList.add(cls); + }; + } + })(); + + startAnimation = (function() { + if ($) { + return function(elem, useCssAnimation, cls) { + if (useCssAnimation) { + return addClass(elem, cls); + } else { + return elem.css('opacity', 0); + } + }; + } else { + return function(elem, useCssAnimation, cls) { + if (useCssAnimation) { + return addClass(elem, cls); + } else { + return elem.style.opacity = 0; + } + }; + } + })(); + + endAnimation = (function() { + if ($) { + return function(elem, duration) { + return elem.animate({ + opacity: 1 + }, duration); + }; + } else { + return function(elem, duration) { + elem.style.transition = "opacity " + (duration / 1000) + "s"; + return elem.style.opacity = 1; + }; + } + })(); + + insertView = (function() { + if ($) { + return function(list, viewEl, position, length, itemSelector) { + var children, childrenLength, insertInMiddle, isEnd, method; + insertInMiddle = (0 < position && position < length); + isEnd = function(length) { + return length === 0 || position >= length; + }; + if (insertInMiddle || itemSelector) { + children = list.children(itemSelector); + childrenLength = children.length; + if (children[position] !== viewEl) { + if (isEnd(childrenLength)) { + return list.append(viewEl); + } else { + if (position === 0) { + return children.eq(position).before(viewEl); + } else { + return children.eq(position - 1).after(viewEl); + } + } + } + } else { + method = isEnd(length) ? 'append' : 'prepend'; + return list[method](viewEl); + } + }; + } else { + return function(list, viewEl, position, length, itemSelector) { + var children, childrenLength, insertInMiddle, isEnd, last; + insertInMiddle = (0 < position && position < length); + isEnd = function(length) { + return length === 0 || position === length; + }; + if (insertInMiddle || itemSelector) { + children = filterChildren(list.children, itemSelector); + childrenLength = children.length; + if (children[position] !== viewEl) { + if (isEnd(childrenLength)) { + return list.appendChild(viewEl); + } else if (position === 0) { + return list.insertBefore(viewEl, children[position]); + } else { + last = children[position - 1]; + if (list.lastChild === last) { + return list.appendChild(viewEl); + } else { + return list.insertBefore(viewEl, last.nextElementSibling); + } + } + } + } else if (isEnd(length)) { + return list.appendChild(viewEl); + } else { + return list.insertBefore(viewEl, list.firstChild); + } + }; + } + })(); + + module.exports = CollectionView = (function(_super) { + __extends(CollectionView, _super); + + CollectionView.prototype.itemView = null; + + CollectionView.prototype.autoRender = true; + + CollectionView.prototype.renderItems = true; + + CollectionView.prototype.animationDuration = 500; + + CollectionView.prototype.useCssAnimation = false; + + CollectionView.prototype.animationStartClass = 'animated-item-view'; + + CollectionView.prototype.animationEndClass = 'animated-item-view-end'; + + CollectionView.prototype.listSelector = null; + + CollectionView.prototype.$list = null; + + CollectionView.prototype.fallbackSelector = null; + + CollectionView.prototype.$fallback = null; + + CollectionView.prototype.loadingSelector = null; + + CollectionView.prototype.$loading = null; + + CollectionView.prototype.itemSelector = null; + + CollectionView.prototype.filterer = null; + + CollectionView.prototype.filterCallback = function(view, included) { + if ($) { + view.$el.stop(true, true); + } + return toggleElement(($ ? view.$el : view.el), included); + }; + + CollectionView.prototype.visibleItems = null; + + CollectionView.prototype.optionNames = View.prototype.optionNames.concat(['renderItems', 'itemView']); + + function CollectionView(options) { + this.renderAllItems = __bind(this.renderAllItems, this); + this.toggleFallback = __bind(this.toggleFallback, this); + this.itemsReset = __bind(this.itemsReset, this); + this.itemRemoved = __bind(this.itemRemoved, this); + this.itemAdded = __bind(this.itemAdded, this); + this.visibleItems = []; + CollectionView.__super__.constructor.apply(this, arguments); + } + + CollectionView.prototype.initialize = function(options) { + if (options == null) { + options = {}; + } + this.addCollectionListeners(); + if (options.filterer != null) { + return this.filter(options.filterer); + } + }; + + CollectionView.prototype.addCollectionListeners = function() { + this.listenTo(this.collection, 'add', this.itemAdded); + this.listenTo(this.collection, 'remove', this.itemRemoved); + return this.listenTo(this.collection, 'reset sort', this.itemsReset); + }; + + CollectionView.prototype.getTemplateData = function() { + var templateData; + templateData = { + length: this.collection.length + }; + if (typeof this.collection.isSynced === 'function') { + templateData.synced = this.collection.isSynced(); + } + return templateData; + }; + + CollectionView.prototype.getTemplateFunction = function() {}; + + CollectionView.prototype.render = function() { + var listSelector; + CollectionView.__super__.render.apply(this, arguments); + listSelector = typeof this.listSelector === 'function' ? this.listSelector() : this.listSelector; + if ($) { + this.$list = listSelector ? this.$(listSelector) : this.$el; + } else { + this.list = listSelector ? this.find(this.listSelector) : this.el; + } + this.initFallback(); + this.initLoadingIndicator(); + if (this.renderItems) { + return this.renderAllItems(); + } + }; + + CollectionView.prototype.itemAdded = function(item, collection, options) { + return this.insertView(item, this.renderItem(item), options.at); + }; + + CollectionView.prototype.itemRemoved = function(item) { + return this.removeViewForItem(item); + }; + + CollectionView.prototype.itemsReset = function() { + return this.renderAllItems(); + }; + + CollectionView.prototype.initFallback = function() { + if (!this.fallbackSelector) { + return; + } + if ($) { + this.$fallback = this.$(this.fallbackSelector); + } else { + this.fallback = this.find(this.fallbackSelector); + } + this.on('visibilityChange', this.toggleFallback); + this.listenTo(this.collection, 'syncStateChange', this.toggleFallback); + return this.toggleFallback(); + }; + + CollectionView.prototype.toggleFallback = function() { + var visible; + visible = this.visibleItems.length === 0 && (typeof this.collection.isSynced === 'function' ? this.collection.isSynced() : true); + return toggleElement(($ ? this.$fallback : this.fallback), visible); + }; + + CollectionView.prototype.initLoadingIndicator = function() { + if (!(this.loadingSelector && typeof this.collection.isSyncing === 'function')) { + return; + } + if ($) { + this.$loading = this.$(this.loadingSelector); + } else { + this.loading = this.find(this.loadingSelector); + } + this.listenTo(this.collection, 'syncStateChange', this.toggleLoadingIndicator); + return this.toggleLoadingIndicator(); + }; + + CollectionView.prototype.toggleLoadingIndicator = function() { + var visible; + visible = this.collection.length === 0 && this.collection.isSyncing(); + return toggleElement(($ ? this.$loading : this.loading), visible); + }; + + CollectionView.prototype.getItemViews = function() { + var itemViews, name, view, _ref; + itemViews = {}; + if (this.subviews.length > 0) { + _ref = this.subviewsByName; + for (name in _ref) { + view = _ref[name]; + if (name.slice(0, 9) === 'itemView:') { + itemViews[name.slice(9)] = view; + } + } + } + return itemViews; + }; + + CollectionView.prototype.filter = function(filterer, filterCallback) { + var hasItemViews, included, index, item, view, _i, _len, _ref; + if (typeof filterer === 'function' || filterer === null) { + this.filterer = filterer; + } + if (typeof filterCallback === 'function' || filterCallback === null) { + this.filterCallback = filterCallback; + } + hasItemViews = (function(_this) { + return function() { + var name; + if (_this.subviews.length > 0) { + for (name in _this.subviewsByName) { + if (name.slice(0, 9) === 'itemView:') { + return true; + } + } + } + return false; + }; + })(this)(); + if (hasItemViews) { + _ref = this.collection.models; + for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { + item = _ref[index]; + included = typeof this.filterer === 'function' ? this.filterer(item, index) : true; + view = this.subview("itemView:" + item.cid); + if (!view) { + throw new Error('CollectionView#filter: ' + ("no view found for " + item.cid)); + } + this.filterCallback(view, included); + this.updateVisibleItems(view.model, included, false); + } + } + return this.trigger('visibilityChange', this.visibleItems); + }; + + CollectionView.prototype.renderAllItems = function() { + var cid, index, item, items, remainingViewsByCid, view, _i, _j, _len, _len1, _ref; + items = this.collection.models; + this.visibleItems = []; + remainingViewsByCid = {}; + for (_i = 0, _len = items.length; _i < _len; _i++) { + item = items[_i]; + view = this.subview("itemView:" + item.cid); + if (view) { + remainingViewsByCid[item.cid] = view; + } + } + _ref = this.getItemViews(); + for (cid in _ref) { + if (!__hasProp.call(_ref, cid)) continue; + view = _ref[cid]; + if (!(cid in remainingViewsByCid)) { + this.removeSubview("itemView:" + cid); + } + } + for (index = _j = 0, _len1 = items.length; _j < _len1; index = ++_j) { + item = items[index]; + view = this.subview("itemView:" + item.cid); + if (view) { + this.insertView(item, view, index, false); + } else { + this.insertView(item, this.renderItem(item), index); + } + } + if (items.length === 0) { + return this.trigger('visibilityChange', this.visibleItems); + } + }; + + CollectionView.prototype.renderItem = function(item) { + var view; + view = this.subview("itemView:" + item.cid); + if (!view) { + view = this.initItemView(item); + this.subview("itemView:" + item.cid, view); + } + view.render(); + return view; + }; + + CollectionView.prototype.initItemView = function(model) { + if (this.itemView) { + return new this.itemView({ + autoRender: false, + model: model + }); + } else { + throw new Error('The CollectionView#itemView property ' + 'must be defined or the initItemView() must be overridden.'); + } + }; + + CollectionView.prototype.insertView = function(item, view, position, enableAnimation) { + var elem, included, length, list; + if (enableAnimation == null) { + enableAnimation = true; + } + if (this.animationDuration === 0) { + enableAnimation = false; + } + if (typeof position !== 'number') { + position = this.collection.indexOf(item); + } + included = typeof this.filterer === 'function' ? this.filterer(item, position) : true; + elem = $ ? view.$el : view.el; + if (included && enableAnimation) { + startAnimation(elem, this.useCssAnimation, this.animationStartClass); + } + if (this.filterer) { + this.filterCallback(view, included); + } + length = this.collection.length; + list = $ ? this.$list : this.list; + if (included) { + insertView(list, elem, position, length, this.itemSelector); + view.trigger('addedToParent'); + } + this.updateVisibleItems(item, included); + if (included && enableAnimation) { + if (this.useCssAnimation) { + setTimeout(((function(_this) { + return function() { + return addClass(elem, _this.animationEndClass); + }; + })(this)), 0); + } else { + endAnimation(elem, this.animationDuration); + } + } + return view; + }; + + CollectionView.prototype.removeViewForItem = function(item) { + this.updateVisibleItems(item, false); + return this.removeSubview("itemView:" + item.cid); + }; + + CollectionView.prototype.updateVisibleItems = function(item, includedInFilter, triggerEvent) { + var includedInVisibleItems, visibilityChanged, visibleItemsIndex; + if (triggerEvent == null) { + triggerEvent = true; + } + visibilityChanged = false; + visibleItemsIndex = utils.indexOf(this.visibleItems, item); + includedInVisibleItems = visibleItemsIndex !== -1; + if (includedInFilter && !includedInVisibleItems) { + this.visibleItems.push(item); + visibilityChanged = true; + } else if (!includedInFilter && includedInVisibleItems) { + this.visibleItems.splice(visibleItemsIndex, 1); + visibilityChanged = true; + } + if (visibilityChanged && triggerEvent) { + this.trigger('visibilityChange', this.visibleItems); + } + return visibilityChanged; + }; + + CollectionView.prototype.dispose = function() { + var prop, properties, _i, _len; + if (this.disposed) { + return; + } + properties = ['$list', '$fallback', '$loading', 'visibleItems']; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + delete this[prop]; + } + return CollectionView.__super__.dispose.apply(this, arguments); + }; + + return CollectionView; + + })(View); + +//# sourceMappingURL=collection_view.js.map + + });;loader.register('chaplin/lib/route', function(e, r, module) { + 'use strict'; + var Backbone, Controller, EventBroker, Route, isEmpty, utils, _, + __hasProp = {}.hasOwnProperty, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + EventBroker = loader('chaplin/lib/event_broker'); + + Controller = loader('chaplin/controllers/controller'); + + utils = loader('chaplin/lib/utils'); + + isEmpty = function(object) { + var key, value; + for (key in object) { + if (!__hasProp.call(object, key)) continue; + value = object[key]; + return false; + } + return true; + }; + + module.exports = Route = (function() { + var escapeRegExp, optionalRegExp, paramRegExp, processTrailingSlash; + + Route.extend = Backbone.Model.extend; + + _.extend(Route.prototype, EventBroker); + + escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g; + + optionalRegExp = /\((.*?)\)/g; + + paramRegExp = /(?::|\*)(\w+)/g; + + processTrailingSlash = function(path, trailing) { + switch (trailing) { + case true: + if (path.slice(-1) !== '/') { + path += '/'; + } + break; + case false: + if (path.slice(-1) === '/') { + path = path.slice(0, -1); + } + } + return path; + }; + + function Route(pattern, controller, action, options) { + this.pattern = pattern; + this.controller = controller; + this.action = action; + this.handler = __bind(this.handler, this); + this.replaceParams = __bind(this.replaceParams, this); + this.parseOptionalPortion = __bind(this.parseOptionalPortion, this); + if (typeof this.pattern !== 'string') { + throw new Error('Route: RegExps are not supported. Use strings with :names and `constraints` option of route'); + } + this.options = options ? _.extend({}, options) : {}; + if (this.options.paramsInQS !== false) { + this.options.paramsInQS = true; + } + if (this.options.name != null) { + this.name = this.options.name; + } + if (this.name && this.name.indexOf('#') !== -1) { + throw new Error('Route: "#" cannot be used in name'); + } + if (this.name == null) { + this.name = this.controller + '#' + this.action; + } + this.allParams = []; + this.requiredParams = []; + this.optionalParams = []; + if (this.action in Controller.prototype) { + throw new Error('Route: You should not use existing controller ' + 'properties as action names'); + } + this.createRegExp(); + if (typeof Object.freeze === "function") { + Object.freeze(this); + } + } + + Route.prototype.matches = function(criteria) { + var invalidParamsCount, name, propertiesCount, property, _i, _len, _ref; + if (typeof criteria === 'string') { + return criteria === this.name; + } else { + propertiesCount = 0; + _ref = ['name', 'action', 'controller']; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + name = _ref[_i]; + propertiesCount++; + property = criteria[name]; + if (property && property !== this[name]) { + return false; + } + } + invalidParamsCount = propertiesCount === 1 && (name === 'action' || name === 'controller'); + return !invalidParamsCount; + } + }; + + Route.prototype.reverse = function(params, query) { + var name, raw, remainingParams, url, value, _i, _j, _len, _len1, _ref, _ref1; + params = this.normalizeParams(params); + remainingParams = _.extend({}, params); + if (params === false) { + return false; + } + url = this.pattern; + _ref = this.requiredParams; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + name = _ref[_i]; + value = params[name]; + url = url.replace(RegExp("[:*]" + name, "g"), value); + delete remainingParams[name]; + } + _ref1 = this.optionalParams; + for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { + name = _ref1[_j]; + if (value = params[name]) { + url = url.replace(RegExp("[:*]" + name, "g"), value); + delete remainingParams[name]; + } + } + raw = url.replace(optionalRegExp, function(match, portion) { + if (portion.match(/[:*]/g)) { + return ""; + } else { + return portion; + } + }); + url = processTrailingSlash(raw, this.options.trailing); + if (typeof query !== 'object') { + query = utils.queryParams.parse(query); + } + if (this.options.paramsInQS !== false) { + _.extend(query, remainingParams); + } + if (!isEmpty(query)) { + url += '?' + utils.queryParams.stringify(query); + } + return url; + }; + + Route.prototype.normalizeParams = function(params) { + var paramIndex, paramName, paramsHash, routeParams, _i, _ref; + if (utils.isArray(params)) { + if (params.length < this.requiredParams.length) { + return false; + } + paramsHash = {}; + routeParams = this.requiredParams.concat(this.optionalParams); + for (paramIndex = _i = 0, _ref = params.length - 1; _i <= _ref; paramIndex = _i += 1) { + paramName = routeParams[paramIndex]; + paramsHash[paramName] = params[paramIndex]; + } + if (!this.testConstraints(paramsHash)) { + return false; + } + params = paramsHash; + } else { + if (params == null) { + params = {}; + } + if (!this.testParams(params)) { + return false; + } + } + return params; + }; + + Route.prototype.testConstraints = function(params) { + var constraint, constraints, name; + constraints = this.options.constraints; + if (constraints) { + for (name in constraints) { + if (!__hasProp.call(constraints, name)) continue; + constraint = constraints[name]; + if (!constraint.test(params[name])) { + return false; + } + } + } + return true; + }; + + Route.prototype.testParams = function(params) { + var paramName, _i, _len, _ref; + _ref = this.requiredParams; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + paramName = _ref[_i]; + if (params[paramName] === void 0) { + return false; + } + } + return this.testConstraints(params); + }; + + Route.prototype.createRegExp = function() { + var pattern; + pattern = this.pattern; + pattern = pattern.replace(escapeRegExp, '\\$&'); + this.replaceParams(pattern, (function(_this) { + return function(match, param) { + return _this.allParams.push(param); + }; + })(this)); + pattern = pattern.replace(optionalRegExp, this.parseOptionalPortion); + pattern = this.replaceParams(pattern, (function(_this) { + return function(match, param) { + _this.requiredParams.push(param); + return _this.paramCapturePattern(match); + }; + })(this)); + return this.regExp = RegExp("^" + pattern + "(?=/*(?=\\?|$))"); + }; + + Route.prototype.parseOptionalPortion = function(match, optionalPortion) { + var portion; + portion = this.replaceParams(optionalPortion, (function(_this) { + return function(match, param) { + _this.optionalParams.push(param); + return _this.paramCapturePattern(match); + }; + })(this)); + return "(?:" + portion + ")?"; + }; + + Route.prototype.replaceParams = function(s, callback) { + return s.replace(paramRegExp, callback); + }; + + Route.prototype.paramCapturePattern = function(param) { + if (param.charAt(0) === ':') { + return '([^\/\?]+)'; + } else { + return '(.*?)'; + } + }; + + Route.prototype.test = function(path) { + var constraints, matched; + matched = this.regExp.test(path); + if (!matched) { + return false; + } + constraints = this.options.constraints; + if (constraints) { + return this.testConstraints(this.extractParams(path)); + } + return true; + }; + + Route.prototype.handler = function(pathParams, options) { + var actionParams, params, path, query, route, _ref; + options = options ? _.extend({}, options) : {}; + if (typeof pathParams === 'object') { + query = utils.queryParams.stringify(options.query); + params = pathParams; + path = this.reverse(params); + } else { + _ref = pathParams.split('?'), path = _ref[0], query = _ref[1]; + if (query == null) { + query = ''; + } else { + options.query = utils.queryParams.parse(query); + } + params = this.extractParams(path); + path = processTrailingSlash(path, this.options.trailing); + } + actionParams = _.extend({}, params, this.options.params); + route = { + path: path, + action: this.action, + controller: this.controller, + name: this.name, + query: query + }; + return this.publishEvent('router:match', route, actionParams, options); + }; + + Route.prototype.extractParams = function(path) { + var index, match, matches, paramName, params, _i, _len, _ref; + params = {}; + matches = this.regExp.exec(path); + _ref = matches.slice(1); + for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { + match = _ref[index]; + paramName = this.allParams.length ? this.allParams[index] : index; + params[paramName] = match; + } + return params; + }; + + return Route; + + })(); + +//# sourceMappingURL=route.js.map + + });;loader.register('chaplin/lib/router', function(e, r, module) { + 'use strict'; + var Backbone, EventBroker, History, Route, Router, mediator, utils, _, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + mediator = loader('chaplin/mediator'); + + EventBroker = loader('chaplin/lib/event_broker'); + + History = loader('chaplin/lib/history'); + + Route = loader('chaplin/lib/route'); + + utils = loader('chaplin/lib/utils'); + + module.exports = Router = (function() { + Router.extend = Backbone.Model.extend; + + _.extend(Router.prototype, EventBroker); + + function Router(options) { + var isWebFile; + this.options = options != null ? options : {}; + this.match = __bind(this.match, this); + isWebFile = window.location.protocol !== 'file:'; + _.defaults(this.options, { + pushState: isWebFile, + root: '/', + trailing: false + }); + this.removeRoot = new RegExp('^' + utils.escapeRegExp(this.options.root) + '(#)?'); + this.subscribeEvent('!router:route', this.oldEventError); + this.subscribeEvent('!router:routeByName', this.oldEventError); + this.subscribeEvent('!router:changeURL', this.oldURLEventError); + this.subscribeEvent('dispatcher:dispatch', this.changeURL); + mediator.setHandler('router:route', this.route, this); + mediator.setHandler('router:reverse', this.reverse, this); + this.createHistory(); + } + + Router.prototype.oldEventError = function() { + throw new Error('!router:route and !router:routeByName events were removed. Use `Chaplin.utils.redirectTo`'); + }; + + Router.prototype.oldURLEventError = function() { + throw new Error('!router:changeURL event was removed.'); + }; + + Router.prototype.createHistory = function() { + return Backbone.history = new History(); + }; + + Router.prototype.startHistory = function() { + return Backbone.history.start(this.options); + }; + + Router.prototype.stopHistory = function() { + if (Backbone.History.started) { + return Backbone.history.stop(); + } + }; + + Router.prototype.findHandler = function(predicate) { + var handler, _i, _len, _ref; + _ref = Backbone.history.handlers; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + handler = _ref[_i]; + if (predicate(handler)) { + return handler; + } + } + }; + + Router.prototype.match = function(pattern, target, options) { + var action, controller, route, _ref; + if (options == null) { + options = {}; + } + if (arguments.length === 2 && typeof target === 'object') { + options = target; + controller = options.controller, action = options.action; + if (!(controller && action)) { + throw new Error('Router#match must receive either target or ' + 'options.controller & options.action'); + } + } else { + controller = options.controller, action = options.action; + if (controller || action) { + throw new Error('Router#match cannot use both target and ' + 'options.controller / options.action'); + } + _ref = target.split('#'), controller = _ref[0], action = _ref[1]; + } + _.defaults(options, { + trailing: this.options.trailing + }); + route = new Route(pattern, controller, action, options); + Backbone.history.handlers.push({ + route: route, + callback: route.handler + }); + return route; + }; + + Router.prototype.route = function(pathDesc, params, options) { + var handler, path, pathParams; + if (typeof pathDesc === 'object') { + path = pathDesc.url; + if (!params && pathDesc.params) { + params = pathDesc.params; + } + } + params = params ? utils.isArray(params) ? params.slice() : _.extend({}, params) : {}; + if (path != null) { + path = path.replace(this.removeRoot, ''); + handler = this.findHandler(function(handler) { + return handler.route.test(path); + }); + options = params; + params = null; + } else { + options = options ? _.extend({}, options) : {}; + handler = this.findHandler(function(handler) { + if (handler.route.matches(pathDesc)) { + params = handler.route.normalizeParams(params); + if (params) { + return true; + } + } + return false; + }); + } + if (handler) { + _.defaults(options, { + changeURL: true + }); + pathParams = path != null ? path : params; + handler.callback(pathParams, options); + return true; + } else { + throw new Error('Router#route: request was not routed'); + } + }; + + Router.prototype.reverse = function(criteria, params, query) { + var handler, handlers, reversed, root, url, _i, _len; + root = this.options.root; + if ((params != null) && typeof params !== 'object') { + throw new TypeError('Router#reverse: params must be an array or an ' + 'object'); + } + handlers = Backbone.history.handlers; + for (_i = 0, _len = handlers.length; _i < _len; _i++) { + handler = handlers[_i]; + if (!(handler.route.matches(criteria))) { + continue; + } + reversed = handler.route.reverse(params, query); + if (reversed !== false) { + url = root ? root + reversed : reversed; + return url; + } + } + throw new Error("Router#reverse: invalid route criteria specified: " + (JSON.stringify(criteria))); + }; + + Router.prototype.changeURL = function(controller, params, route, options) { + var navigateOptions, url; + if (!((route.path != null) && options.changeURL)) { + return; + } + url = route.path + (route.query ? "?" + route.query : ""); + navigateOptions = { + trigger: options.trigger === true, + replace: options.replace === true + }; + return Backbone.history.navigate(url, navigateOptions); + }; + + Router.prototype.disposed = false; + + Router.prototype.dispose = function() { + if (this.disposed) { + return; + } + this.stopHistory(); + delete Backbone.history; + this.unsubscribeAllEvents(); + mediator.removeHandlers(this); + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Router; + + })(); + +//# sourceMappingURL=router.js.map + + });;loader.register('chaplin/lib/history', function(e, r, module) { + 'use strict'; + var Backbone, History, isExplorer, rootStripper, routeStripper, trailingSlash, _, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + routeStripper = /^[#\/]|\s+$/g; + + rootStripper = /^\/+|\/+$/g; + + isExplorer = /msie [\w.]+/; + + trailingSlash = /\/$/; + + History = (function(_super) { + __extends(History, _super); + + function History() { + return History.__super__.constructor.apply(this, arguments); + } + + History.prototype.getFragment = function(fragment, forcePushState) { + var root; + if (fragment == null) { + if (this._hasPushState || !this._wantsHashChange || forcePushState) { + fragment = this.location.pathname + this.location.search; + root = this.root.replace(trailingSlash, ''); + if (!fragment.indexOf(root)) { + fragment = fragment.substr(root.length); + } + } else { + fragment = this.getHash(); + } + } + return fragment.replace(routeStripper, ''); + }; + + History.prototype.start = function(options) { + var atRoot, fragment, loc, _ref, _ref1; + if (Backbone.History.started) { + throw new Error('Backbone.history has already been started'); + } + Backbone.History.started = true; + this.options = _.extend({}, { + root: '/' + }, this.options, options); + this.root = this.options.root; + this._wantsHashChange = this.options.hashChange !== false; + this._wantsPushState = Boolean(this.options.pushState); + this._hasPushState = Boolean(this.options.pushState && this.history && this.history.pushState); + fragment = this.getFragment(); + routeStripper = (_ref = this.options.routeStripper) != null ? _ref : routeStripper; + rootStripper = (_ref1 = this.options.rootStripper) != null ? _ref1 : rootStripper; + this.root = ('/' + this.root + '/').replace(rootStripper, '/'); + if (this._hasPushState) { + Backbone.$(window).on('popstate', this.checkUrl); + } else if (this._wantsHashChange && 'onhashchange' in window) { + Backbone.$(window).on('hashchange', this.checkUrl); + } else if (this._wantsHashChange) { + this._checkUrlInterval = setInterval(this.checkUrl, this.interval); + } + this.fragment = fragment; + loc = this.location; + atRoot = loc.pathname.replace(/[^\/]$/, '$&/') === this.root; + if (this._wantsHashChange && this._wantsPushState && !this._hasPushState && !atRoot) { + this.fragment = this.getFragment(null, true); + this.location.replace(this.root + '#' + this.fragment); + return true; + } else if (this._wantsPushState && this._hasPushState && atRoot && loc.hash) { + this.fragment = this.getHash().replace(routeStripper, ''); + this.history.replaceState({}, document.title, this.root + this.fragment); + } + if (!this.options.silent) { + return this.loadUrl(); + } + }; + + History.prototype.navigate = function(fragment, options) { + var historyMethod, isSameFragment, url; + if (fragment == null) { + fragment = ''; + } + if (!Backbone.History.started) { + return false; + } + if (!options || options === true) { + options = { + trigger: options + }; + } + fragment = this.getFragment(fragment); + url = this.root + fragment; + if (this.fragment === fragment) { + return false; + } + this.fragment = fragment; + if (fragment.length === 0 && url !== this.root) { + url = url.slice(0, -1); + } + if (this._hasPushState) { + historyMethod = options.replace ? 'replaceState' : 'pushState'; + this.history[historyMethod]({}, document.title, url); + } else if (this._wantsHashChange) { + this._updateHash(this.location, fragment, options.replace); + isSameFragment = fragment !== this.getFragment(this.getHash(this.iframe)); + if ((this.iframe != null) && isSameFragment) { + if (!options.replace) { + this.iframe.document.open().close(); + } + this._updateHash(this.iframe.location, fragment, options.replace); + } + } else { + return this.location.assign(url); + } + if (options.trigger) { + return this.loadUrl(fragment); + } + }; + + return History; + + })(Backbone.History); + + module.exports = Backbone.$ ? History : Backbone.History; + +//# sourceMappingURL=history.js.map + + });;loader.register('chaplin/lib/event_broker', function(e, r, module) { + 'use strict'; + var EventBroker, mediator, + __slice = [].slice; + + mediator = loader('chaplin/mediator'); + + EventBroker = { + subscribeEvent: function(type, handler) { + if (typeof type !== 'string') { + throw new TypeError('EventBroker#subscribeEvent: ' + 'type argument must be a string'); + } + if (typeof handler !== 'function') { + throw new TypeError('EventBroker#subscribeEvent: ' + 'handler argument must be a function'); + } + mediator.unsubscribe(type, handler, this); + return mediator.subscribe(type, handler, this); + }, + subscribeEventOnce: function(type, handler) { + if (typeof type !== 'string') { + throw new TypeError('EventBroker#subscribeEventOnce: ' + 'type argument must be a string'); + } + if (typeof handler !== 'function') { + throw new TypeError('EventBroker#subscribeEventOnce: ' + 'handler argument must be a function'); + } + mediator.unsubscribe(type, handler, this); + return mediator.subscribeOnce(type, handler, this); + }, + unsubscribeEvent: function(type, handler) { + if (typeof type !== 'string') { + throw new TypeError('EventBroker#unsubscribeEvent: ' + 'type argument must be a string'); + } + if (typeof handler !== 'function') { + throw new TypeError('EventBroker#unsubscribeEvent: ' + 'handler argument must be a function'); + } + return mediator.unsubscribe(type, handler); + }, + unsubscribeAllEvents: function() { + return mediator.unsubscribe(null, null, this); + }, + publishEvent: function() { + var args, type; + type = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; + if (typeof type !== 'string') { + throw new TypeError('EventBroker#publishEvent: ' + 'type argument must be a string'); + } + return mediator.publish.apply(mediator, [type].concat(__slice.call(args))); + } + }; + + if (typeof Object.freeze === "function") { + Object.freeze(EventBroker); + } + + module.exports = EventBroker; + +//# sourceMappingURL=event_broker.js.map + + });;loader.register('chaplin/lib/support', function(e, r, module) { + 'use strict'; + var support; + + support = { + propertyDescriptors: (function() { + var error, o; + if (!(typeof Object.defineProperty === 'function' && typeof Object.defineProperties === 'function')) { + return false; + } + try { + o = {}; + Object.defineProperty(o, 'foo', { + value: 'bar' + }); + return o.foo === 'bar'; + } catch (_error) { + error = _error; + return false; + } + })() + }; + + module.exports = support; + +//# sourceMappingURL=support.js.map + + });;loader.register('chaplin/lib/composition', function(e, r, module) { + 'use strict'; + var Backbone, Composition, EventBroker, has, _, + __hasProp = {}.hasOwnProperty; + + _ = loader('underscore'); + + Backbone = loader('backbone'); + + EventBroker = loader('chaplin/lib/event_broker'); + + has = Object.prototype.hasOwnProperty; + + module.exports = Composition = (function() { + Composition.extend = Backbone.Model.extend; + + _.extend(Composition.prototype, Backbone.Events); + + _.extend(Composition.prototype, EventBroker); + + Composition.prototype.item = null; + + Composition.prototype.options = null; + + Composition.prototype._stale = false; + + function Composition(options) { + if (options != null) { + this.options = _.extend({}, options); + } + this.item = this; + this.initialize(this.options); + } + + Composition.prototype.initialize = function() {}; + + Composition.prototype.compose = function() {}; + + Composition.prototype.check = function(options) { + return _.isEqual(this.options, options); + }; + + Composition.prototype.stale = function(value) { + var item, name; + if (value == null) { + return this._stale; + } + this._stale = value; + for (name in this) { + item = this[name]; + if (item && item !== this && typeof item === 'object' && has.call(item, 'stale')) { + item.stale = value; + } + } + }; + + Composition.prototype.disposed = false; + + Composition.prototype.dispose = function() { + var obj, prop, properties, _i, _len; + if (this.disposed) { + return; + } + for (prop in this) { + if (!__hasProp.call(this, prop)) continue; + obj = this[prop]; + if (obj && typeof obj.dispose === 'function') { + if (obj !== this) { + obj.dispose(); + delete this[prop]; + } + } + } + this.unsubscribeAllEvents(); + this.stopListening(); + properties = ['redirected']; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + delete this[prop]; + } + this.disposed = true; + return typeof Object.freeze === "function" ? Object.freeze(this) : void 0; + }; + + return Composition; + + })(); + +//# sourceMappingURL=composition.js.map + + });;loader.register('chaplin/lib/sync_machine', function(e, r, module) { + 'use strict'; + var STATE_CHANGE, SYNCED, SYNCING, SyncMachine, UNSYNCED, event, _fn, _i, _len, _ref; + + UNSYNCED = 'unsynced'; + + SYNCING = 'syncing'; + + SYNCED = 'synced'; + + STATE_CHANGE = 'syncStateChange'; + + SyncMachine = { + _syncState: UNSYNCED, + _previousSyncState: null, + syncState: function() { + return this._syncState; + }, + isUnsynced: function() { + return this._syncState === UNSYNCED; + }, + isSynced: function() { + return this._syncState === SYNCED; + }, + isSyncing: function() { + return this._syncState === SYNCING; + }, + unsync: function() { + var _ref; + if ((_ref = this._syncState) === SYNCING || _ref === SYNCED) { + this._previousSync = this._syncState; + this._syncState = UNSYNCED; + this.trigger(this._syncState, this, this._syncState); + this.trigger(STATE_CHANGE, this, this._syncState); + } + }, + beginSync: function() { + var _ref; + if ((_ref = this._syncState) === UNSYNCED || _ref === SYNCED) { + this._previousSync = this._syncState; + this._syncState = SYNCING; + this.trigger(this._syncState, this, this._syncState); + this.trigger(STATE_CHANGE, this, this._syncState); + } + }, + finishSync: function() { + if (this._syncState === SYNCING) { + this._previousSync = this._syncState; + this._syncState = SYNCED; + this.trigger(this._syncState, this, this._syncState); + this.trigger(STATE_CHANGE, this, this._syncState); + } + }, + abortSync: function() { + if (this._syncState === SYNCING) { + this._syncState = this._previousSync; + this._previousSync = this._syncState; + this.trigger(this._syncState, this, this._syncState); + this.trigger(STATE_CHANGE, this, this._syncState); + } + } + }; + + _ref = [UNSYNCED, SYNCING, SYNCED, STATE_CHANGE]; + _fn = function(event) { + return SyncMachine[event] = function(callback, context) { + if (context == null) { + context = this; + } + this.on(event, callback, context); + if (this._syncState === event) { + return callback.call(context); + } + }; + }; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + event = _ref[_i]; + _fn(event); + } + + if (typeof Object.freeze === "function") { + Object.freeze(SyncMachine); + } + + module.exports = SyncMachine; + +//# sourceMappingURL=sync_machine.js.map + + });;loader.register('chaplin/lib/utils', function(e, r, module) { + 'use strict'; + var support, utils, _, + __slice = [].slice, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, + __hasProp = {}.hasOwnProperty; + + _ = loader('underscore'); + + support = loader('chaplin/lib/support'); + + utils = { + beget: (function() { + var ctor; + if (typeof Object.create === 'function') { + return Object.create; + } else { + ctor = function() {}; + return function(obj) { + ctor.prototype = obj; + return new ctor; + }; + } + })(), + indexOf: (function() { + if (Array.prototype.indexOf) { + return function(list, index) { + return list.indexOf(index); + }; + } else if (_.indexOf) { + return _.indexOf; + } + })(), + isArray: Array.isArray || _.isArray, + serialize: function(data) { + if (typeof data.serialize === 'function') { + return data.serialize(); + } else if (typeof data.toJSON === 'function') { + return data.toJSON(); + } else { + throw new TypeError('utils.serialize: Unknown data was passed'); + } + }, + readonly: (function() { + var readonlyDescriptor; + if (support.propertyDescriptors) { + readonlyDescriptor = { + writable: false, + enumerable: true, + configurable: false + }; + return function() { + var obj, prop, properties, _i, _len; + obj = arguments[0], properties = 2 <= arguments.length ? __slice.call(arguments, 1) : []; + for (_i = 0, _len = properties.length; _i < _len; _i++) { + prop = properties[_i]; + readonlyDescriptor.value = obj[prop]; + Object.defineProperty(obj, prop, readonlyDescriptor); + } + return true; + }; + } else { + return function() { + return false; + }; + } + })(), + getPrototypeChain: function(object) { + var chain, _ref, _ref1, _ref2, _ref3; + chain = [object.constructor.prototype]; + while (object = (_ref = (_ref1 = object.constructor) != null ? (_ref2 = _ref1.superclass) != null ? _ref2.prototype : void 0 : void 0) != null ? _ref : (_ref3 = object.constructor) != null ? _ref3.__super__ : void 0) { + chain.push(object); + } + return chain.reverse(); + }, + getAllPropertyVersions: function(object, property) { + var proto, result, value, _i, _len, _ref; + result = []; + _ref = utils.getPrototypeChain(object); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + proto = _ref[_i]; + value = proto[property]; + if (value && __indexOf.call(result, value) < 0) { + result.push(value); + } + } + return result; + }, + upcase: function(str) { + return str.charAt(0).toUpperCase() + str.substring(1); + }, + escapeRegExp: function(str) { + return String(str || '').replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); + }, + modifierKeyPressed: function(event) { + return event.shiftKey || event.altKey || event.ctrlKey || event.metaKey; + }, + reverse: function(criteria, params, query) { + return loader('chaplin/mediator').execute('router:reverse', criteria, params, query); + }, + redirectTo: function(pathDesc, params, options) { + return loader('chaplin/mediator').execute('router:route', pathDesc, params, options); + }, + querystring: { + stringify: function(queryParams) { + var arrParam, encodedKey, key, query, stringifyKeyValuePair, value, _i, _len; + query = ''; + stringifyKeyValuePair = function(encodedKey, value) { + if (value != null) { + return '&' + encodedKey + '=' + encodeURIComponent(value); + } else { + return ''; + } + }; + for (key in queryParams) { + if (!__hasProp.call(queryParams, key)) continue; + value = queryParams[key]; + encodedKey = encodeURIComponent(key); + if (utils.isArray(value)) { + for (_i = 0, _len = value.length; _i < _len; _i++) { + arrParam = value[_i]; + query += stringifyKeyValuePair(encodedKey, arrParam); + } + } else { + query += stringifyKeyValuePair(encodedKey, value); + } + } + return query && query.substring(1); + }, + parse: function(queryString) { + var current, field, pair, pairs, params, value, _i, _len, _ref; + params = {}; + if (!queryString) { + return params; + } + queryString = queryString.slice(queryString.indexOf('?') + 1); + pairs = queryString.split('&'); + for (_i = 0, _len = pairs.length; _i < _len; _i++) { + pair = pairs[_i]; + if (!pair.length) { + continue; + } + _ref = pair.split('='), field = _ref[0], value = _ref[1]; + if (!field.length) { + continue; + } + field = decodeURIComponent(field); + value = decodeURIComponent(value); + current = params[field]; + if (current) { + if (current.push) { + current.push(value); + } else { + params[field] = [current, value]; + } + } else { + params[field] = value; + } + } + return params; + } + } + }; + + utils.queryParams = utils.querystring; + + if (typeof Object.seal === "function") { + Object.seal(utils); + } + + module.exports = utils; + +//# sourceMappingURL=utils.js.map + + });;loader.register('chaplin', function(e, r, module) { + module.exports = { + Application: loader('chaplin/application'), + mediator: loader('chaplin/mediator'), + Dispatcher: loader('chaplin/dispatcher'), + Controller: loader('chaplin/controllers/controller'), + Composer: loader('chaplin/composer'), + Composition: loader('chaplin/lib/composition'), + Collection: loader('chaplin/models/collection'), + Model: loader('chaplin/models/model'), + Layout: loader('chaplin/views/layout'), + View: loader('chaplin/views/view'), + CollectionView: loader('chaplin/views/collection_view'), + Route: loader('chaplin/lib/route'), + Router: loader('chaplin/lib/router'), + EventBroker: loader('chaplin/lib/event_broker'), + support: loader('chaplin/lib/support'), + SyncMachine: loader('chaplin/lib/sync_machine'), + utils: loader('chaplin/lib/utils') + }; + +//# sourceMappingURL=chaplin.js.map + + }); + var regDeps = function(Backbone, _) { + loader.register('backbone', function(exports, require, module) { + module.exports = Backbone; + }); + loader.register('underscore', function(exports, require, module) { + module.exports = _; + }); + }; + + if (typeof define === 'function' && define.amd) { + define(['backbone', 'underscore'], function(Backbone, _) { + regDeps(Backbone, _); + return loader('chaplin'); + }); + } else if (typeof module === 'object' && module && module.exports) { + regDeps(require('backbone'), require('underscore')); + module.exports = loader('chaplin'); + } else if (typeof require === 'function') { + regDeps(window.Backbone, window._ || window.Backbone.utils); + window.Chaplin = loader('chaplin'); + } else { + throw new Error('Chaplin requires Common.js or AMD modules'); + } + +})(); diff --git a/config/Config.js b/config/Config.js index dacc12a3..5616f006 100644 --- a/config/Config.js +++ b/config/Config.js @@ -1,57 +1,72 @@ /*global define*/ define(function () { - 'use strict'; - - //var CODELIST_PREFIX = 'http://fenixservices.fao.org/d3s/msd/resources/data/uid/' - var CODELIST_PREFIX = 'http://fenix.fao.org/d3s/msd/resources/' - - return { - - //Chaplin JS configuration - CHAPLINJS_CONTROLLER_SUFFIX: '-controller', - CHAPLINJS_PROJECT_ROOT: '/fenix/', - CHAPLINJS_PUSH_STATE: false, - CHAPLINJS_SCROLL_TO: false, - CHAPLINJS_APPLICATION_TITLE: "FENIX Web App", - - //WDS configuration - DB_NAME: 'db_name', - WDS_URL: 'http://hqlprfenixapp2.hq.un.fao.org:10100/wds-5.2.1/rest/crud', - WDS_OUTPUT_TYPE: 'object', - WDS_OLAP_OUTPUT_TYPE : 'array', - - //Top Menu configuration - TOP_MENU_CONFIG: 'config/submodules/fx-menu/top_menu.json', - //TOP_MENU_TEMPLATE: 'fx-menu/templates/side.html', - TOP_MENU_TEMPLATE: 'fx-menu/templates/blank-fluid.html', - TOP_MENU_SHOW_BREADCRUMB : true, - //TOP_MENU_SHOW_BREADCRUMB : false, - TOP_MENU_SHOW_BREADCRUMB_HOME : true, - TOP_MENU_SHOW_FOOTER: false, - TOP_MENU_AUTH_MODE_HIDDEN_ITEMS: ['login'], - TOP_MENU_PUBLIC_MODE_HIDDEN_ITEMS :['datamgmt', 'logout'], - //TOP_MENU_PUBLIC_MODE_HIDDEN_ITEMS :['protected', 'logout'], - - - SECURITY_NOT_AUTHORIZED_REDIRECTION_LINK : "login", - - // COUNTRIES_CODE_LIST : CODELIST_PREFIX + "UNECA_ISO3", - COUNTRIES_CODE_LIST : CODELIST_PREFIX + "/crs_donors/2015", - CODELIST_URL : CODELIST_PREFIX, - MD_EXPORT_URL : 'http://fenixapps2.fao.org/fenixExport', - DATA_ENVIROMENT_URL : 'http://fenixservices.fao.org', - - SOCIAL_LINK_FACEBOOK : "https://facebook.com", - SOCIAL_LINK_TWITTER : "https://twitter.com", - SOCIAL_LINK_YOUTUBE : "https://youtube.com", - - DOWNLOAD_FILE_SYSTEM_ROOT : 'http://fenixrepo.fao.org/cdn/data/adam/download/', - - SERVER : "http://www.fao.org/fenixrepo/external/lprapp16/" - //SERVER : "http://fenixrepo.fao.org/external/lprapp16/" - //SERVER : "http://fenix.fao.org/" - //SERVER : "http://lprapp16.fao.org/" - - }; - }); + 'use strict'; + + var SERVER = 'http://fenix.fao.org/', + CODELIST_PREFIX = SERVER+ 'msd/resources/', + CODELIST_HIERARCHY_PREFIX = SERVER+ 'msd/codes/hierarchy/'; + + + return { + + SELECTORS: { + RECIPIENT_COUNTRY: 'recipientcode', + RESOURCE_PARTNER: 'donorcode', + SECTOR: 'parentsector_code', + SUB_SECTOR: 'purposecode', + CHANNELS_SUBCATEGORY: 'channelsubcategory_code', + CHANNEL: 'channelcode', + ODA: 'oda', + YEAR: 'year', + YEAR_FROM: 'year-from', + YEAR_TO: 'year-to', + COUNTRY: 'countrycode' + }, + + ENVIRONMENT : 'develop', + DEFAULT_UID: 'adam_usd_commitment', + SERVER: SERVER, + CODES_POSTFIX : '/codes/filter', + HIERARCHY_CODES_POSTFIX : '/codes/hierarchy', + D3P_POSTFIX : "d3s_dev/processes/", + + //Chaplin JS configuration + CHAPLINJS_CONTROLLER_SUFFIX: '-controller', + CHAPLINJS_PROJECT_ROOT: '/fenix/', + CHAPLINJS_PUSH_STATE: false, + CHAPLINJS_SCROLL_TO: false, + CHAPLINJS_APPLICATION_TITLE: "FENIX Web App", + + //Top Menu configuration + TOP_MENU_CONFIG: 'config/submodules/fx-menu/top_menu.json', + TOP_MENU_TEMPLATE: 'fx-menu/html/blank-fluid.html', + TOP_MENU_SHOW_BREADCRUMB: true, + TOP_MENU_SHOW_BREADCRUMB_HOME: false, + TOP_MENU_SHOW_FOOTER: false, + TOP_MENU_AUTH_MODE_HIDDEN_ITEMS: ['login'], + TOP_MENU_PUBLIC_MODE_HIDDEN_ITEMS: ['datamgmt', 'logout'], + + SECURITY_NOT_AUTHORIZED_REDIRECTION_LINK: "login", + + // COUNTRIES_CODE_LIST : CODELIST_PREFIX + "UNECA_ISO3", + COUNTRIES_CODE_LIST: CODELIST_PREFIX + "/crs_donors/2015", + CODELIST_URL: CODELIST_PREFIX, + MD_EXPORT_URL: SERVER, + DATA_ENVIROMENT_URL: 'http://fenixservices.fao.org', + + SOCIAL_LINK_FACEBOOK: "https://facebook.com", + SOCIAL_LINK_TWITTER: "https://twitter.com", + SOCIAL_LINK_YOUTUBE: "https://youtube.com", + + DOWNLOAD_FILE_SYSTEM_ROOT: 'http://fenixrepo.fao.org/cdn/data/adam/download/', + + //D3S_CODELIST_URL:( C.SERVICE_BASE_ADDRESS || DC.SERVICE_BASE_ADDRESS) + "/resources/", + + CODELIST_POSTFIX: "/resources/", + + CODELIST_SERVICE: "d3s_dev/msd" + + + }; +}); diff --git a/config/Events.js b/config/Events.js index 63e9b71b..339fe1b9 100644 --- a/config/Events.js +++ b/config/Events.js @@ -8,7 +8,19 @@ define(function ( ) { NOT_AUTHORIZED : "fx.fenix.security.not_authorized", STATE_CHANGE : 'fx.fenix.state.change', - MENU_UPDATE : 'fx.fenix.menu.change' + MENU_UPDATE : 'fx.fenix.menu.change', + MENU_ADD_BREADCRUMB: 'fx.fenix.menu.addbreadcrumb', + + SELECTORS_READY: "fx.analyze.selectors.ready", + SELECTORS_ITEM_SELECT : "fx.analyze.selectors.select", + TREE_READY : "fx.analyze.tree.ready", + RELOAD_RESULT : "fx.analyze.results.reload", + CHANGE_MODE: "fx.analyze.mode.change", + + MENU_RESET_BREADCRUMB: 'fx.fenix.menu.resetbreadcrumb', + + TITLE_ADD_ITEM: 'fx.title.item.add', + TITLE_REMOVE_ITEM: 'fx.title.item.remove' }; }); diff --git a/config/analyse/comp_advantage/Events.js b/config/analyse/comp_advantage/Events.js new file mode 100644 index 00000000..73a29101 --- /dev/null +++ b/config/analyse/comp_advantage/Events.js @@ -0,0 +1,10 @@ + /*global define*/ +define(function ( ) { + + 'use strict'; + + return { + FILTER_ON_READY : "fx.filter.onready", + FILTER_ON_CHANGE : "fx.filter.onchange" + }; +}); diff --git a/config/analyse/comp_advantage/config-comp-advantage.js b/config/analyse/comp_advantage/config-comp-advantage.js new file mode 100644 index 00000000..0d199ac3 --- /dev/null +++ b/config/analyse/comp_advantage/config-comp-advantage.js @@ -0,0 +1,8 @@ +/*global define*/ +define(function ( ) { + + 'use strict'; + + return { + }; +}); \ No newline at end of file diff --git a/config/analyse/comp_advantage/config-filter.js b/config/analyse/comp_advantage/config-filter.js new file mode 100644 index 00000000..5dea24c0 --- /dev/null +++ b/config/analyse/comp_advantage/config-filter.js @@ -0,0 +1,79 @@ +define(function () { + + 'use strict'; + + return { + + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], // afghanistan, + config: { //Selectize configuration + maxItems: 1 + // placeholder: "All", + // plugins: ['remove_button'], + // mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + } + } +}); \ No newline at end of file diff --git a/config/analyse/comp_advantage/config-table-filter.js b/config/analyse/comp_advantage/config-table-filter.js new file mode 100644 index 00000000..56740988 --- /dev/null +++ b/config/analyse/comp_advantage/config-table-filter.js @@ -0,0 +1,30 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + groupedRow : { + + selector : { + id : "input", + type : "checkbox", + source : [ + { value : "groupedRow", label : "Group row"} + + ], + default: ["groupedRow"] + }, + + template : { + title : "groupedRow" + } + } + + } + + + +}); \ No newline at end of file diff --git a/config/analyse/comp_advantage/config-table.js b/config/analyse/comp_advantage/config-table.js new file mode 100644 index 00000000..ca573117 --- /dev/null +++ b/config/analyse/comp_advantage/config-table.js @@ -0,0 +1,167 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "comp_advantage", + type: 'custom', + config: { + "groupedRow":false, + "aggregationFn":{"value":"sum"}, + "formatter":"localstring", + "decimals":2, + "pageSize": "150", + "showRowHeaders":true, + "rows":["purposecode_EN", "year", "delivery", "fao_delivery", "total_fao_delivery", "advantage_ratio", "ratio"], //"delivery", "fao_delivery", "total_fao_delivery", "advantage_ratio", "ratio" + //"rows":["purposecode_EN", "recipientcode_EN", "year", "ratio"], //"delivery", "fao_delivery", "total_fao_delivery", "advantage_ratio", "ratio" + + + "aggregations":[], + // "values":["delivery", "fao_delivery", "total_fao_delivery", "advantage_ratio"], + // inputFormat : "fenixtool", + + config: { + pageSize: 150, + height: 700, + autoSelectFirstRow: false, + customRowAttribute : function(record,rn,grid){ + grid.autoSelectFirstRow = false; + + // grid.columnList[0].styleClass = null; + //grid.columnList[1].styleClass = null; + // grid.columnList[6].styleClass = null; + + + if (record[6] === 'YES'){ + // grid.columnList[0].styleClass = 'big-col-width'; + // grid.columnList[1].styleClass = 'smaller-col-width'; + // grid.columnList[6].styleClass = 'small-col-width'; + + return 'style="background-color:#A4C368"'; // green + + } + + //else { + // grid.columnList[0].styleClass = 'gt-col-1_11-purposecode_en'; + // grid.columnList[1].styleClass = 'gt-col-1_11-year'; + // grid.columnList[6].styleClass = 'gt-col-1_11-ratio'; + //} + + }, + columns: [ + {id: "purposecode_EN", width: 250}, + {id: "year", width: 70, align: 'center'}, + {id: "delivery", width: 100, align: 'center', title: "FAO delivery in sub-sector & country ÷ Total FAO delivery in country", + renderer: function (value, record, columnObj, grid, colNo, rowNo) { + var val = value; + + if(val && val > 0 && val < 100 ){ + val = parseFloat(val).toFixed(2); + } + + return val; + }}, + {id: "fao_delivery", width: 100, align: 'center', title: "FAO delivery in sub-sector & country ÷ Total delivery by all ODA implementing agencies in sub-sector & country", + renderer: function (value, record, columnObj, grid, colNo, rowNo) { + var val = value; + + if(val && val > 0 && val < 100 ){ + val = parseFloat(val).toFixed(2); + } + return val; + }}, + {id: "total_fao_delivery", width: 100, align: 'center', title: "Total FAO delivery in country ÷ Total agricultural delivery by all ODA implementing agencies in country", + renderer: function (value, record, columnObj, grid, colNo, rowNo) { + var val = value; + + if(val && val > 0 && val < 100 ){ + val = parseFloat(val).toFixed(2); + } + return val; + }}, + {id: "advantage_ratio", width: 100, align: 'center', title: "FAO Delivery over Total Delivery ÷ Total FAO Delivery over Total Agriculture", + renderer: function (value, record, columnObj, grid, colNo, rowNo) { + var val = value; + if(val && val > 0){ + val = parseFloat(val).toFixed(4); + } + return val; + }}, + { + id: 'ratio', width: 100, align: 'center', title: "Ratio > 1 = 'Yes' while Ratio < 1 = 'No'", + renderer: function (value, record1, columnObj, grid, colNo, rowNo) { + var lowCase = value.toLowerCase(); + return lowCase.charAt(0).toUpperCase() + lowCase.slice(1); + } + }] + + } + }, + + filterFor: { + "filter_fca": ['year', 'recipientcode'], + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_comparative_advantage" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "sector", + "purposecode", + "year", + "delivery", + "fao_delivery", + "total_fao_delivery", + "advantage_ratio", + "ratio" + ], + "rows": { + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_fca" + } + } + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/compare/Config.js b/config/analyse/compare/Config.js new file mode 100644 index 00000000..98f805db --- /dev/null +++ b/config/analyse/compare/Config.js @@ -0,0 +1,260 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + analysis: { + box : { + tab : "chart", + hideFlipButton : true, + faces : ["front"], + tabConfig: { + chart: { + toolbar: { + template: "
", + config: { + compare: { + selector: { + id: "dropdown", + source: [ + {value: "donorcode", label: "Resource Partner"}, + {value: "parentsector_code", label: "Sector"}, + ], + default: ["donorcode"], + config: { + maxItems: 1 + } + }, + template: { + title: "Compare by" + } + } + } + }, + config: function (model, values) { + + var order = ["donorcode", "parentsector_code"]; + + var config = { + aggregationFn: {"value": "sum", "Value": "sum", "VALUE": "sum"}, + formatter: "value", + decimals: 2, + hidden: [], + series: order, + useDimensionLabelsIfExist: true, + x: ["year"], + aggregations: [], + y: ["value"], + type: "line", + createConfiguration: function (model, config) { + + var compare = values.values.compare[0], + index = order.indexOf(compare), + colors = ["red"], + used = {}; + + for (var ii in model.cols) { + + if (model.cols.hasOwnProperty(ii)) { + i = model.cols[ii]; + config.xAxis.categories.push(i.title[this.lang]); + } + } + + for (var i in model.rows) { + + var name = model.rows[i], + compareByValue = name[index]; + + var s = { + name: name.join(" / "), + data: model.data[i] + }; + + var color = used[compareByValue]; + + if (!color) { + used[compareByValue] = colors.shift(); + color = used[compareByValue] + } + + s.color = color; + + config.series.push(s); + + } + + return config; + } + }; + + return config; + } + } + } + } + }, + + filter: { + items: { + recipientcode: { + selector: { + id: "tree", + hideSummary: true, //Hide selection summary, + config: { //Selectize configuration + plugins: ['remove_button'], + mode: 'multi' + } + }, + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + donorcode: { + selector: { + id: "tree", + default: ["2", "7"], // Belgium, Netherlands + hideSummary: true, //Hide selection summary, + config: { //Selectize configuration + plugins: ['remove_button'], + mode: 'multi' + } + }, + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "tree", + config: { //Selectize configuration + maxItems: 1, + plugins: ['remove_button'], + mode: 'multi' + }, + default : ["311", "600"], + hideSummary: true, //Hide selection summary, + }, + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "tree", + config: { + plugins: ['remove_button'], + mode: 'multi' + }, + hideSummary: true, //Hide selection summary, + }, + cl: { + // codes: ["60010", "60020", "60030", "60040", "60061", "60062", "60063"], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} //obj or array of obj + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + }, + hideSummary: true, //Hide selection summary, + }, + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + hideSummary: true, //Hide selection summary, + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + }, + hideSummary: true, //Hide selection summary, + }, + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + hideSwitch: true, + hideRemoveButton: true + } + } + } + } + } + +}); \ No newline at end of file diff --git a/config/analyse/config.js b/config/analyse/config.js new file mode 100644 index 00000000..f8887ef8 --- /dev/null +++ b/config/analyse/config.js @@ -0,0 +1,991 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + SECONDARY_MENU: { + url: 'config/browse/secondary_menu.json' + }, + + "compare": { + + download: { + "target": "6.PROTECTIVE FUNCTIONS AND SELECTIVE ECOSYSTEM SERVICES.zip" + }, + + filter: [ + { + "type": "distinct", + "uid": "FLUDE_TOPIC_6", + "column": "indicator", + "containerType": "baseContainer", + "title": "Indicator", + "defaultCodes": ["SoilWatProt"], + "components": [ + { + "type": "codelist", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "uid" : "FLUDE_INDICATORS", + "title": {"EN": "Distinct"}, + // name is the ID output in tehe filter getValues() + "name": "indicator", + "config": { + "defaultsource": [] + } + } + ] + }, + { + "type": "static", + "containerType": "baseContainer", + "title": "Year", + "components": [ + { + "type": "time", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Year"}, + "name": "year", + config: { + "defaultsource": [ + {"value": "2015", "label": "2015", "selected": true}, + {"value": "2010", "label": "2010", "selected": false}, + {"value": "2005", "label": "2005", "selected": false}, + {"value": "2000", "label": "2000", "selected": false}, + {"value": "1990", "label": "1990", "selected": false} + ] + } + } + ] + }, + { + "type": "codelist", + "containerType": "baseContainer", + "title": "Domains", + "components": [ + { + "uid": "FLUDE_DOMAINS", + "type": "codelist", + "name": "domain", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Codelist"}, + + config: { + "defaultsource": [ + //{"value": null, "label": "All", "selected": true}, + //{"value": null, "label": "All", "selected": true, "removeFilter": true}, + ], + "enableMultiselection": true + } + } + ] + }, + { + "type": "codelist", + "containerType": "baseContainer", + "title": "Incomes", + "components": [ + { + "uid": "FLUDE_INCOMES", + "type": "codelist", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Codelist"}, + "name": "incomes", + config: { + "defaultsource": [ + //{"value": null, "label": "All", "selected": true}, + ], + "enableMultiselection": true + } + } + ] + }, + { + "type": "codelist", + "containerType": "baseContainer", + "title": "Subregions", + "components": [ + { + "uid": "FLUDE_SUBREGIONS", + "type": "codelist", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Codelist"}, + "name": "subregion", + config: { + "defaultsource": [ + //{"value": null, "label": "All", "selected": true}, + ], + "enableMultiselection": true + } + } + ] + } + ], + + dashboard: { + //data cube's uid + uid: "FLUDE_TOPIC_6", + + //data base filter + filter: [], + + //bridge configuration + bridge: { + + type: "d3p" + + }, + + /* + * in case bridge is WDS this is the cube metadata. + * if bridge is D3P this is ignored + * */ + metadata: {}, + + items: [ + { + id: 'item-1', + type: 'map', + class: "fx-map-chart", + //needed if layout = injected + container: "#item-1", + config: { + container: "#item-1" , + leaflet: { + zoomControl: false, + attributionControl: true, + scrollWheelZoom: false, + minZoom: 2 + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 2010, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + } + ] + }, + { + id: 'item-2', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-2", + config: { + container: "#item-2", + adapter: { + type: "standard", + xDimensions: 'time', + yDimensions: 'element', + valueDimensions: 'value', + seriesDimensions: ['country'] + }, + template: { + //"title": "Top 25..." + }, + creator: { + chartObj: { + chart: { + type: "column" + }, + tooltip: { + valueSuffix: ' 1000 HA' + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 1990, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 25, + "page": 1 + } + } + ] + }, + { + id: 'item-3', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-3", + config: { + container: "#item-3", + adapter: { + type: "standard", + xDimensions: 'year', + yDimensions: 'indicator', + valueDimensions: 'value', + seriesDimensions: ['region'] + }, + template: {}, + creator: { + chartObj: { + chart: { + type: "column" + }, + tooltip: { + valueSuffix: ' 1000 HA' + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 1990, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "region", "year", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "region": "ASC", + "year": "ASC" + } + } + ] + }, + { + id: 'item-4', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-4", + config: { + container: "#item-4", + adapter: { + type: "pie", + valueDimensions: 'value', + seriesDimensions: ['region'] + }, + template: {}, + creator: { + chartObj: { + chart: { + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false, + type: 'pie' + }, + title: { + //text: 'Browser market shares January, 2015 to May, 2015' + }, + tooltip: { + pointFormat: '{series.name}: {point.percentage:.1f}%' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true + }, + showInLegend: true + } + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 2010, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "region", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "region": "ASC" + } + } + ] + }, + { + id: 'item-5', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-5", + config: { + container: "#item-5", + adapter: { + type: "standard", + xDimensions: 'year', + yDimensions: 'indicator', + valueDimensions: 'value', + seriesDimensions: ['subregion'] + }, + template: {}, + creator: { + chartObj: { + chart: { + type: "column" + }, + tooltip: { + valueSuffix: ' 1000 HA' + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 1990, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "subregion", "year", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "subregion": "ASC", + "year": "ASC" + } + } + ] + }, + { + id: 'item-6', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-6", + config: { + container: "#item-6", + adapter: { + type: "pie", + valueDimensions: 'value', + seriesDimensions: ['subregion'] + }, + template: {}, + creator: { + chartObj: { + chart: { + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false, + type: 'pie' + }, + title: { + //text: 'Browser market shares January, 2015 to May, 2015' + }, + tooltip: { + pointFormat: '{series.name}: {point.percentage:.1f}%' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true + }, + showInLegend: true + } + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 2010, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "subregion", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "subregion": "ASC" + } + } + ] + }, + + { + id: 'item-7', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-7", + config: { + container: "#item-7", + adapter: { + type: "standard", + xDimensions: 'year', + yDimensions: 'indicator', + valueDimensions: 'value', + seriesDimensions: ['domain'] + }, + template: {}, + creator: { + chartObj: { + chart: { + type: "column" + }, + tooltip: { + valueSuffix: ' 1000 HA' + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 1990, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "domain", "year", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "domain": "ASC", + "year": "ASC" + } + } + ] + }, + { + id: 'item-8', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-8", + config: { + container: "#item-8", + adapter: { + type: "pie", + valueDimensions: 'value', + seriesDimensions: ['domain'] + }, + template: {}, + creator: { + chartObj: { + chart: { + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false, + type: 'pie' + }, + title: { + //text: 'Browser market shares January, 2015 to May, 2015' + }, + tooltip: { + pointFormat: '{series.name}: {point.percentage:.1f}%' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true + }, + showInLegend: true + } + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 2010, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "domain", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "domain": "ASC" + } + } + ] + }, + + { + id: 'item-9', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-9", + config: { + container: "#item-9", + adapter: { + type: "standard", + xDimensions: 'year', + yDimensions: 'indicator', + valueDimensions: 'value', + seriesDimensions: ['incomes'] + }, + template: {}, + creator: { + chartObj: { + chart: { + type: "column" + }, + tooltip: { + valueSuffix: ' 1000 HA' + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 1990, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "incomes", "year", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "incomes": "ASC", + "year": "ASC" + } + } + ] + }, + + { + id: 'item-10', + type: 'chart', + class: "fx-timeseries-ecample", + //needed if layout = injected + container: "#item-10", + config: { + container: "#item-10", + adapter: { + type: "pie", + valueDimensions: 'value', + seriesDimensions: ['incomes'] + }, + template: {}, + creator: { + chartObj: { + chart: { + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false, + type: 'pie' + }, + title: { + //text: 'Browser market shares January, 2015 to May, 2015' + }, + tooltip: { + pointFormat: '{series.name}: {point.percentage:.1f}%' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: true + }, + showInLegend: true + } + } + } + } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: ['indicator', 'year'], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "year": { + "time": [ + { + "from": 2010, + "to": 2010 + } + ] + }, + "indicator": { + "codes": [ + { + "uid": "FLUDE_INDICATORS", + "codes": [ + "SoilWatProt" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "incomes", "indicator" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "AVG" + }, + { + "columns": ["um"], + "rule": "FIRST" + } + ] + } + }, + { + "name": "order", + "parameters": { + "incomes": "ASC" + } + } + ] + } + + + ] + } + } + + } + + + +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/Events.js b/config/analyse/partner_matrix/Events.js new file mode 100644 index 00000000..73a29101 --- /dev/null +++ b/config/analyse/partner_matrix/Events.js @@ -0,0 +1,10 @@ + /*global define*/ +define(function ( ) { + + 'use strict'; + + return { + FILTER_ON_READY : "fx.filter.onready", + FILTER_ON_CHANGE : "fx.filter.onchange" + }; +}); diff --git a/config/analyse/partner_matrix/config-charts-country-donor.js b/config/analyse/partner_matrix/config-charts-country-donor.js new file mode 100644 index 00000000..17f47f2b --- /dev/null +++ b/config/analyse/partner_matrix/config-charts-country-donor.js @@ -0,0 +1,566 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-fao-oda", + type: 'chart', + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50, + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% FAO Sectors/Total ODA'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + + }, + filterFor: { + "filter_all_subsectors_sum": ['year', 'oda', 'recipientcode', 'donorcode'], + "filter_related_oda": ['year', 'oda', 'recipientcode', 'donorcode'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + }, + { + "uid":"percentage_oda" + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid": { + "uid": "filter_all_subsectors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "max" + } + ] + }, + "rid": { + "uid": "all_subsectors_sum" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + }, + "rid": { + "uid": "total_oda" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid": { + "uid": "filter_related_oda" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "max" + } + ] + }}, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO Sectors" + }, + "rid": { + "uid": "related_oda" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( related_oda_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% FAO Sectors/Total ODA" + } + + }, + + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + + + ] + }, // FAO SECTORS and TOTAL ODA by TOP 10 RESOURCE PARTNERS + { + id: 'top-channel-categories', + type: 'chart', + config: { + type: "pieold", + x: ["channelsubcategory_name"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + }, + subtitle: { + text: '' + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + } // TOP CHANNELS + ] + } + } +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-charts-country.js b/config/analyse/partner_matrix/config-charts-country.js new file mode 100644 index 00000000..e55c3c15 --- /dev/null +++ b/config/analyse/partner_matrix/config-charts-country.js @@ -0,0 +1,1360 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "top-partners-fao-oda", + type: 'chart', + config: { + type: "column", + x: ["donorcode_EN"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50, + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% FAO Sectors/Total'){ + serie.update({ + yAxis: 'fao-axis', + type: 'spline', + dashStyle: 'shortdot', + tooltip: { + valueSuffix: ' %' + }, + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + // xAxis: { + // type: 'datetime' + // }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'fao-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + }, + + filterFor: { + "filter_top_10": ['year', 'oda', 'recipientcode'], + "filter_fao_sector": ['year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "fao_sector" + }, + { + "uid":"total_oda" + }, + { + "uid":"percentage_oda" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, + { + "name": "order", + "parameters": { + "indicator": "DESC", + "value": "DESC" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + }, + "rid":{"uid":"top_10"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "tables":[ + { + "uid":"top_10", + "column":"donorcode" + } + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid":{"uid":"filter_fao_sector"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO sectors" + }, + "rid":{"uid":"fao_sector"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "tables":[ + { + "uid":"top_10", + "column":"donorcode" + } + ] + } + } + }, + "rid":{"uid":"filter_total_oda"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + }, + "rid":{"uid":"total_oda"} + }, + + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "fao_sector" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "donorcode" + } + ], + [ + { + "type": "id", + "value": "donorcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( fao_sector_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% FAO Sectors/Total" + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ] + /* postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "fao_sector" + }, + { + "uid":"total_oda" + }, + { + "uid":"percentage_oda" + } + ], + "parameters": { + } + + }, + { + "name": "order", + "parameters": { + "indicator":"DESC", + "value": "DESC" + }, + + "rid":{"uid":"union_process"} + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + }, + "rid":{"uid":"top_10"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "tables":[ + { + "uid":"top_10", + "column":"donorcode" + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + + } + }, + "rid":{"uid":"filter_faosubsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO Sectors" + }, + "rid":{"uid":"fao_sector"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "tables":[ + { + "uid":"top_10", + "column":"donorcode" + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_oda"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + }, + "rid":{"uid":"total_oda"} + }, + + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "fao_sector" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "donorcode" + } + ], + [ + { + "type": "id", + "value": "donorcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( fao_sector_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% FAO Sectors/Total" + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ]*/ + }, // FAO SECTORS and TOTAL ODA by TOP 10 RESOURCE PARTNERS + { + id: 'top-channel-categories', + type: 'chart', + config: { + type: "pieold", + x: ["channelsubcategory_name"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + }, + subtitle: { + text: '' + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, // TOP CHANNELS + { + id: "top-partners", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["donorcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + }, + chart: { + marginTop: 50 + }, + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + }, + + filterFor: { //FX-filter format + filter_top_5: ["year", "oda", "recipientcode"], + filter_2: ["year", "oda", "recipientcode"] + }, + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + + } + }, + "rid":{"uid":"filter_top_5"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 5, + "page": 1 + }, + "rid":{"uid":"top_5"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_5" + } + ], + "parameters": { + "columns": [ + "donorcode", + "year", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode":{ + "tables":[ + { + "uid":"top_5", + "column":"donorcode" + } + ] + } + + } + }, + "rid":{"uid":"filter_2"} + } + ] + }, // TOTAL ODA from TOP 5 RESOURCE PARTNERS + + { + id: "top-fao-partners", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["donorcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + }, + + chart: { + marginTop: 50 + }, + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + } + }, + + filterFor: { //FX-filter format + filter_top_5: ["year", "oda", "recipientcode"], + filter_2: ["year", "oda", "recipientcode"] + }, + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + + } + }, + "rid":{"uid":"filter_top_5"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 5, + "page": 1 + }, + "rid":{"uid":"top_5"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_5" + } + ], + "parameters": { + "columns": [ + "donorcode", + "year", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode":{ + "tables":[ + { + "uid":"top_5", + "column":"donorcode" + } + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + + } + }, + "rid":{"uid":"filter_2"} + } + ]} + ] + } + } +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-charts-donor.js b/config/analyse/partner_matrix/config-charts-donor.js new file mode 100644 index 00000000..dcdccba8 --- /dev/null +++ b/config/analyse/partner_matrix/config-charts-donor.js @@ -0,0 +1,938 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + dashboard: { + + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "top-recipients-fao-oda", + type: 'chart', + config: { + type: "column", + x: ["recipientcode_EN"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50, + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% FAO Sectors/Total'){ + serie.update({ + yAxis: 'fao-axis', + type: 'spline', + dashStyle: 'shortdot', + tooltip: { + valueSuffix: ' %' + }, + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + // xAxis: { + // type: 'datetime' + // }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'fao-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + }, + + filterFor: { + "filter_top_10": ['year', 'oda', 'donorcode'], + "filter_fao_sector": ['year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "fao_sector" + }, + { + "uid":"total_oda" + }, + { + "uid":"percentage_oda" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, + { + "name": "order", + "parameters": { + "indicator": "DESC", + "value": "DESC" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + }, + "rid":{"uid":"top_10"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "tables":[ + { + "uid":"top_10", + "column":"recipientcode" + } + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid":{"uid":"filter_fao_sector"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO sectors" + }, + "rid":{"uid":"fao_sector"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_10" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "tables":[ + { + "uid":"top_10", + "column":"recipientcode" + } + ] + } + } + }, + "rid":{"uid":"filter_total_oda"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + }, + "rid":{"uid":"total_oda"} + }, + + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "fao_sector" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "recipientcode" + } + ], + [ + { + "type": "id", + "value": "recipientcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( fao_sector_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% FAO Sectors/Total" + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ] + }, // FAO SECTORS and TOTAL ODA by TOP 10 RESOURCE PARTNERS + { + id: 'top-channel-categories', + type: 'chart', + config: { + type: "pieold", + x: ["channelsubcategory_name"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + }, + subtitle: { + text: '' + } + } + + }, + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, // TOP CHANNELS + { + id: "top-recipients", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["recipientcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + }, + chart: { + marginTop: 50 + }, + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + }, + + filterFor: { //FX-filter format + filter_top_5: ["year", "oda", "donorcode"], + filter_2: ["year", "oda", "donorcode"] + }, + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + + } + }, + "rid":{"uid":"filter_top_5"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 5, + "page": 1 + }, + "rid":{"uid":"top_5"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_5" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode":{ + "tables":[ + { + "uid":"top_5", + "column":"recipientcode" + } + ] + } + + } + }, + "rid":{"uid":"filter_2"} + } + ] + }, // TOTAL ODA from TOP 5 RESOURCE PARTNERS + + { + id: "top-fao-recipients", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["recipientcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + }, + + chart: { + marginTop: 50 + }, + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + }, + subtitle: { + text: '' + } + + } + }, + + filterFor: { //FX-filter format + filter_top_5: ["year", "oda", "donorcode"], + filter_2: ["year", "oda", "donorcode"] + }, + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + + } + }, + "rid":{"uid":"filter_top_5"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 5, + "page": 1 + }, + "rid":{"uid":"top_5"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + }, + { + "uid": "top_5" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode":{ + "tables":[ + { + "uid":"top_5", + "column":"recipientcode" + } + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + + } + }, + "rid":{"uid":"filter_2"} + } + ]} + ] + } + } +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-filter.js b/config/analyse/partner_matrix/config-filter.js new file mode 100644 index 00000000..58203620 --- /dev/null +++ b/config/analyse/partner_matrix/config-filter.js @@ -0,0 +1,132 @@ +define(function () { + + 'use strict'; + + return { + + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], // afghanistan, + emptyOption : { + enabled: true, + text: "All", + value: "all" + }, + config: { //Selectize configuration + maxItems: 1, + // placeholder: "All", + // plugins: ['remove_button'], + // mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + donorcode: { + selector: { + id: "dropdown", + default: ["all"], // All, + emptyOption : { + enabled: true, + text: "All", + value: "all" + }, + config: { //Selectize configuration + maxItems: 1, + // placeholder: "All", + // plugins: ['remove_button'], + // mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + } + } +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-partner-matrix.js b/config/analyse/partner_matrix/config-partner-matrix.js new file mode 100644 index 00000000..5191ec8c --- /dev/null +++ b/config/analyse/partner_matrix/config-partner-matrix.js @@ -0,0 +1,17 @@ +/*global define*/ +define(function ( ) { + + 'use strict'; + + return { + dashboard: { + DEFAULT_TOPIC : 'country' //country, donor or country-donor + }, + topic: { + SELECTED_TOPIC: 'selected_topic', + RECIPIENT_COUNTRY_SELECTED: 'country', + RESOURCE_PARTNER_SELECTED: 'donor', + RECIPIENT_AND_PARTNER_SELECTED: 'country-donor' + } + }; +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-table-country-donor.js b/config/analyse/partner_matrix/config-table-country-donor.js new file mode 100644 index 00000000..df17a110 --- /dev/null +++ b/config/analyse/partner_matrix/config-table-country-donor.js @@ -0,0 +1,419 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "partner-matrix", + type: 'custom', + config: { + "groupedRow":false, + "aggregationFn":{"value":"sum"}, + "formatter":"localstring", + "decimals":2, + "pageSize": "150", + "showRowHeaders":true, + "columns":["indicator"], + "rows":["donorcode_EN", "recipientcode_EN"], + "aggregations":[], + "values":["value"], + inputFormat : "fenixtool", + + config: { + pageSize: 150, + autoSelectFirstRow: false, + columns: [ + {id: "donorcode_EN", width: 150}, + {id: "recipientcode_EN", width: 200}, + {id: "indicator", width: 150}, + {id: "indicator", width: 200}, + {id: "indicator", width: 200} + ] + } + }, + + filterFor: { + "filter_all_subsectors": ['year', 'oda', 'recipientcode', 'donorcode'], + "filter_faosubsectors": ['year', 'oda', 'recipientcode', 'donorcode'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + }, + { + "uid":"percentage_oda" + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_all_subsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "max" + } + ] + }, + "rid": { + "uid": "all_subsectors_sum" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA (mil $)" + }, + "rid": { + "uid": "total_oda" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid":{"uid":"filter_faosubsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }}, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO sectors (mil $)" + }, + "rid": { + "uid": "related_oda" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + ], + [ + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( related_oda_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO Sectors (%)" + } + + }, + + { + "name": "filter", + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-table-country.js b/config/analyse/partner_matrix/config-table-country.js new file mode 100644 index 00000000..830aeeae --- /dev/null +++ b/config/analyse/partner_matrix/config-table-country.js @@ -0,0 +1,397 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "partner-matrix", + type: 'custom', + config: { + "groupedRow":false, + "aggregationFn":{"value":"sum"}, + "formatter":"localstring", + "decimals":2, + "pageSize": "150", + "showRowHeaders":true, + "columns":["indicator"], + "rows":["recipientcode_EN", "donorcode_EN"], + "aggregations":[], + "values":["value"], + inputFormat : "fenixtool", + + config: { + pageSize: 150, + autoSelectFirstRow: false, + columns: [ + {id: "recipientcode_EN", width: 200}, + {id: "donorcode_EN", width: 150}, + {id: "indicator", width: 150}, + {id: "indicator", width: 200}, + {id: "indicator", width: 200} + ] + } + }, + + filterFor: { + "filter_all_subsectors": ['year', 'oda', 'recipientcode'], + "filter_faosubsectors": ['year', 'oda', 'recipientcode'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + }, + { + "uid":"percentage_oda" + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_all_subsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "max" + } + ] + }, + "rid": { + "uid": "all_subsectors_sum" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA (mil $)" + }, + "rid": { + "uid": "total_oda" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid":{"uid":"filter_faosubsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }}, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO sectors (mil $)" + }, + "rid": { + "uid": "related_oda" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + ], + [ + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( related_oda_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO Sectors (%)" + } + + }, + + { + "name": "filter", + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-table-donor.js b/config/analyse/partner_matrix/config-table-donor.js new file mode 100644 index 00000000..59572004 --- /dev/null +++ b/config/analyse/partner_matrix/config-table-donor.js @@ -0,0 +1,397 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "partner-matrix", + type: 'custom', + config: { + "groupedRow":false, + "aggregationFn":{"value":"sum"}, + "formatter":"localstring", + "decimals":2, + "pageSize": "150", + "showRowHeaders":true, + "columns":["indicator"], + "rows":["donorcode_EN", "recipientcode_EN"], + "aggregations":[], + "values":["value"], + inputFormat : "fenixtool", + + config: { + pageSize: 150, + autoSelectFirstRow: false, + columns: [ + {id: "donorcode_EN", width: 150}, + {id: "recipientcode_EN", width: 200}, + {id: "indicator", width: 150}, + {id: "indicator", width: 200}, + {id: "indicator", width: 200} + ] + } + }, + + filterFor: { + "filter_all_subsectors": ['year', 'oda', 'donorcode'], + "filter_faosubsectors": ['year', 'oda', 'donorcode'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + }, + { + "uid":"percentage_oda" + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + } + } + }, + "rid":{"uid":"filter_all_subsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "max" + } + ] + }, + "rid": { + "uid": "all_subsectors_sum" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA (mil $)" + }, + "rid": { + "uid": "total_oda" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_resource_matrix_oda" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "fao_sector": { + "enumeration": [ + "1" + ] + } + } + }, + "rid":{"uid":"filter_faosubsectors"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }}, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in FAO sectors (mil $)" + }, + "rid": { + "uid": "related_oda" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "total_oda" + }, + { + "uid": "related_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + ], + [ + { + "type": "id", + "value": "recipientcode" + }, + { + "type": "id", + "value": "donorcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "FAO Sector (%)" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( related_oda_value / total_oda_value )*100"] + + } + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": null + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "key": true, + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO Sectors (%)" + } + + }, + + { + "name": "filter", + "parameters": { + "columns": [ + "recipientcode", + "donorcode", + "value", + "unitcode", + "indicator" + ], + "rows": { + } + }, + "rid": { + "uid": "percentage_oda" + } + } + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/partner_matrix/config-table-filter.js b/config/analyse/partner_matrix/config-table-filter.js new file mode 100644 index 00000000..56740988 --- /dev/null +++ b/config/analyse/partner_matrix/config-table-filter.js @@ -0,0 +1,30 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + groupedRow : { + + selector : { + id : "input", + type : "checkbox", + source : [ + { value : "groupedRow", label : "Group row"} + + ], + default: ["groupedRow"] + }, + + template : { + title : "groupedRow" + } + } + + } + + + +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/Events.js b/config/analyse/priority_analysis/Events.js new file mode 100644 index 00000000..8861973b --- /dev/null +++ b/config/analyse/priority_analysis/Events.js @@ -0,0 +1,12 @@ + /*global define*/ +define(function ( ) { + + 'use strict'; + + return { + FILTER_ON_READY : "fx.filter.onready", + FILTER_ON_CHANGE : "fx.filter.onchange", + VENN_ON_CHANGE: "fx.chart.venn.onchange", + VENN_NO_VALUES: "fx.chart.venn.novalues" + }; +}); diff --git a/config/analyse/priority_analysis/config-charts.js b/config/analyse/priority_analysis/config-charts.js new file mode 100644 index 00000000..efd3b84c --- /dev/null +++ b/config/analyse/priority_analysis/config-charts.js @@ -0,0 +1,576 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + dashboard: { + //default dataset id + uid: "adam_priority_analysis", + + context: "BY_PARTNER", + + items: [ + { + id: "top-partners", // TOP 10 RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["donorcode_EN"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50 + }, + subtitle: { + text: '' + } + } + + }, + + filterFor: { + // "filter_top_10": ['year', 'purposecode', 'recipientcode'] + "filter_top_10": ['year', 'purposecode'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_priority_analysis" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + /* "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + },*/ + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "99820" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": {"uid": "filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + }, + "rid": {"uid": "top_10"} + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "oda" + } + } + + ] + }, // TOP 10 PARTNERS + { + id: "top-recipients", // TOP 10 RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["donorcode_EN"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50 + }, + subtitle: { + text: '' + } + } + + }, + + filterFor: { + // "filter_top_10": ['year', 'purposecode', 'recipientcode'] + "filter_top_10": ['year', 'purposecode'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_priority_analysis" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + /* "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + },*/ + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "99820" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": {"uid": "filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + }, + "rid": {"uid": "top_10"} + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "oda" + } + } + + ] + }, // TOP 10 RECIPIENTS + { + id: "financing-priorities-partners", + type: 'chart', + config: { + type: "column", + x: ["purposecode_EN"], //x axis + series: ["donorcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50 + }, + subtitle: { + text: '' + }, + plotOptions: { + column: { + stacking: 'normal' + } + }, + tooltip: { + formatter: function () { + var unit = 'USD Mil'; + + return '' + + this.series.name + '
' + + Highcharts.numberFormat(this.y, 2, '.', ',') + ' ' + unit; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + } + } + } + }, + + filterFor: { + //"filter_top_10": ['year', 'purposecode', 'recipientcode'] + "filter_top_10": ['year', 'purposecode'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_priority_analysis" + } + ], + "parameters": { + "columns": [ + "donorcode", + "purposecode", + "value", + "unitcode" + ], + "rows": { + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + /*"recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + },*/ + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "99820" + ] + } + ] + } + } + }, + "rid": {"uid": "filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "purposecode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }//, + // { + // "name": "page", + // "parameters": { + // "perPage": 10, + // "page": 1 + // } + // }, + ] + }, // BY TOP 10 RESOURCE PARTNERS + { + id: "financing-priorities-recipients", + type: 'chart', + config: { + type: "column", + x: ["purposecode_EN"], //x axis + series: ["donorcode_EN"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + marginTop: 50 + }, + subtitle: { + text: '' + }, + plotOptions: { + column: { + stacking: 'normal' + } + }, + tooltip: { + formatter: function () { + var unit = 'USD Mil'; + + return '' + + this.series.name + '
' + + Highcharts.numberFormat(this.y, 2, '.', ',') + ' ' + unit; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + } + } + } + }, + + filterFor: { + //"filter_top_10": ['year', 'purposecode', 'recipientcode'] + "filter_top_10": ['year', 'purposecode'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_priority_analysis" + } + ], + "parameters": { + "columns": [ + "donorcode", + "purposecode", + "value", + "unitcode" + ], + "rows": { + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + /*"recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + },*/ + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "99820" + ] + } + ] + } + } + }, + "rid": {"uid": "filter_top_10"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "purposecode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }//, + // { + // "name": "page", + // "parameters": { + // "perPage": 10, + // "page": 1 + // } + // }, + ] + } // BY TOP 10 RECIPIENTS + + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-filter.js b/config/analyse/priority_analysis/config-filter.js new file mode 100644 index 00000000..6ed4569a --- /dev/null +++ b/config/analyse/priority_analysis/config-filter.js @@ -0,0 +1,112 @@ +define(function () { + + 'use strict'; + + return { + + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], // afghanistan, + emptyOption : { + enabled: true, + text: "All", + value: "all" + }, + config: { //Selectize configuration + maxItems: 1, + // placeholder: "All", + // plugins: ['remove_button'], + // mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + donorcode: { + selector: { + id: "dropdown", + default: ["all"], // All, + emptyOption : { + enabled: true, + text: "All", + value: "all" + }, + config: { //Selectize configuration + maxItems: 1, + // placeholder: "All", + // plugins: ['remove_button'], + // mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + } + } +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-priority-analysis.js b/config/analyse/priority_analysis/config-priority-analysis.js new file mode 100644 index 00000000..4709efd0 --- /dev/null +++ b/config/analyse/priority_analysis/config-priority-analysis.js @@ -0,0 +1,23 @@ +/*global define*/ +define(function ( ) { + + 'use strict'; + + return { + dashboard: { + DEFAULT_TOPIC : 'recipient' //recipient, partner or recipient-partner + }, + topic: { + SELECTED_TOPIC: 'selected_topic', + RECIPIENT_COUNTRY_SELECTED: 'recipient', + RESOURCE_PARTNER_SELECTED: 'partner', + RECIPIENT_AND_PARTNER_SELECTED: 'recipient-partner' + }, + selections: { + ALL: 'all' + }, + items: { + VENN_DIAGRAM: 'venn-diagram' + } + }; +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-table.js b/config/analyse/priority_analysis/config-table.js new file mode 100644 index 00000000..7bffb1f6 --- /dev/null +++ b/config/analyse/priority_analysis/config-table.js @@ -0,0 +1,91 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + //default dataset id + uid: "adam_cpf_undaf_priorities_table", + + items: [ + { + id: "priorities-table", + type: 'custom', + config: { + "groupedRow": false, + "formatter": "localstring", + "showRowHeaders": true, + // "values":["projectshortdescription"], + // "rows":[ "purposecode", "projecttitle"], + "rows": ["recipientcode", "purposecode", "undaf_stated_priority", "cpf_stated_priority"], + "aggregations": [], + inputFormat: "fenixtool", + + config: { + pageSize: 150, + autoSelectFirstRow: false, + columns: [ + {id: "recipientcode_EN", width: 200}, + {id: "purposecode_EN", width: 200}, + {id: "undaf_stated_priority", width: 300}, + {id: "cpf_stated_priority", width: 300} + ] + } + }, + + filterFor: { + "filter_priorities": ['recipientcode'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_cpf_undaf_priorities_table" + } + ], + "parameters": { + "columns": [ + "purposecode", + "undaf_stated_priority", + "cpf_stated_priority", + "undaf_period", + "cpf_period", + "recipientcode" + ], + "rows": { + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": {"uid": "filter_priorities"} + }, + { + "name": "group", + "parameters": { + "by": [ + "purposecode", "undaf_stated_priority", "cpf_stated_priority", "undaf_period", "cpf_period", "recipientcode" + ], + "aggregations": [] + } + } + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-venn-partner.js b/config/analyse/priority_analysis/config-venn-partner.js new file mode 100644 index 00000000..78d0b1cf --- /dev/null +++ b/config/analyse/priority_analysis/config-venn-partner.js @@ -0,0 +1,250 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + //default dataset id + uid: "adam_combined_priorities_table", + + items: [ + { + id: 'venn-diagram', + type: 'chart', + config: { + type: "venn", + renderer: "jvenn", + x: ["purposecode"], //x axis and series + series: ["indicator"], // series + y: ["purposecode_EN"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false// || default raw else fenixtool + + }, + + filterFor: { + "filter_partner": ['donorcode'] + }, + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "recipient" // RESULT OF PART 1: ALL UNDAF PRIORITIES + }, + { + "uid": "fao" // RESULT OF PART 2: ALL FAO PRIORITIES + }, + { + "uid":"partner" // RESULT OF PART 3: SELECTED RESOURCE PARTNER PRIORITIES + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "recipient" + ] + } + } + }, + "rid":{"uid":"filter_recipient"} + }, // PART 1: ALL UNDAF PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): ALL UNDAF PRIORITIES: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Countries (All)" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "recipient" + } + }, // (1iii): ALL UNDAF PRIORITIES: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "fao" + ] + } + } + }, + "rid":{"uid":"filter_fao"} + + }, // PART 2: ALL FAO PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (2ii): ALL FAO PRIORITIES: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO (All)" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"fao"} + }, // (2iii): ALL FAO PRIORITIES: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "partner" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" // Donor + ] + } + ] + } + } + }, + "rid":{"uid":"filter_partner"} + + }, // PART 3: SELECTED RESOURCE PARTNER PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (3ii): SELECTED RESOURCE PARTNER PRIORITIES: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Partners (Austria)" // PART 3 FINAL INDICATOR NAME + }, + "rid":{"uid":"partner"} + }// (3iii): ALL RESOURCE PARTNER PRIORITIES: Add Column + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-venn-recipient-partner.js b/config/analyse/priority_analysis/config-venn-recipient-partner.js new file mode 100644 index 00000000..72f093ea --- /dev/null +++ b/config/analyse/priority_analysis/config-venn-recipient-partner.js @@ -0,0 +1,274 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + //default dataset id + uid: "adam_combined_priorities_table", + + items: [ + { + id: 'venn-diagram', + type: 'chart', + config: { + type: "venn", + renderer: "jvenn", + x: ["purposecode"], //x axis and series + series: ["indicator"], // series + y: ["purposecode_EN"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false// || default raw else fenixtool + + }, + + filterFor: { + "filter_partner": ['donorcode'], + "filter_recipient": ['recipientcode'], + "filter_fao": ['recipientcode'] + }, + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "recipient" // RESULT OF PART 1: UNDAF PRIORITIES FOR COUNTRY + }, + { + "uid": "fao" // RESULT OF PART 2: FAO PRIORITIES FOR COUNTRY + }, + { + "uid":"partner" // RESULT OF PART 3: SELECTED RESOURCE PARTNER PRIORITIES + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "recipient" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid":{"uid":"filter_recipient"} + }, // PART 1: UNDAF PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): UNDAF PRIORITIES FOR COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Countries ((Afghanistan))" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "recipient" + } + }, // (1iii): UNDAF PRIORITIES FOR COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "fao" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid":{"uid":"filter_fao"} + + }, // PART 2: FAO PRIORITIES FOR COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (2ii): FAO PRIORITIES FOR COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO (Afghanistan)" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"fao"} + }, // (2iii): FAO PRIORITIES FOR COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "partner" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" // Donor + ] + } + ] + } + } + }, + "rid":{"uid":"filter_partner"} + + }, // PART 3: SELECTED RESOURCE PARTNER PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (3ii): SELECTED RESOURCE PARTNER PRIORITIES: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Partners (Austria)" // PART 3 FINAL INDICATOR NAME + }, + "rid":{"uid":"partner"} + }// (3iii): SELECTED RESOURCE PARTNER PRIORITIES: Add Column + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/priority_analysis/config-venn-recipient.js b/config/analyse/priority_analysis/config-venn-recipient.js new file mode 100644 index 00000000..28b069ab --- /dev/null +++ b/config/analyse/priority_analysis/config-venn-recipient.js @@ -0,0 +1,262 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + dashboard: { + //default dataset id + uid: "adam_combined_priorities_table", + + items: [ + { + id: 'venn-diagram', + type: 'chart', + config: { + type: "venn", + renderer: "jvenn", + x: ["purposecode"], //x axis and series + series: ["indicator"], // series + y: ["purposecode_EN"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false// || default raw else fenixtool + + }, + + filterFor: { + "filter_recipient": ['recipientcode'], + "filter_fao": ['recipientcode'] + }, + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "recipient" // RESULT OF PART 1: UNDAF PRIORITIES FOR COUNTRY + }, + { + "uid": "fao" // RESULT OF PART 2: FAO PRIORITIES FOR COUNTRY + }, + { + "uid":"partner" // RESULT OF PART 3: ALL RESOURCE PARTNER PRIORITIES + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "recipient" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid":{"uid":"filter_recipient"} + }, // PART 1: UNDAF PRIORITIES FOR COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): UNDAF PRIORITIES FOR COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Countries (Afghanistan)" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "recipient" + } + }, // (1iii): UNDAF PRIORITIES FOR COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "fao" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid":{"uid":"filter_fao"} + + }, // PART 2: FAO PRIORITIES FOR COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (2ii): FAO PRIORITIES FOR COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "FAO (Afghanistan)" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"fao"} + }, // (2iii): FAO PRIORITIES FOR COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_combined_priorities_table" + } + ], + "parameters": { + "columns": [ + "typecode", + "purposecode" + ], + "rows": { + "typecode": { + "enumeration": [ + "partner" + ] + } + } + }, + "rid":{"uid":"filter_partner"} + + }, // PART 3: ALL RESOURCE PARTNER PRIORITIES: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "typecode", + "purposecode" + ], + "aggregations": [ + ] + } + + }, // (3ii): ALL RESOURCE PARTNER PRIORITIES: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Partners (All)" // PART 3 FINAL INDICATOR NAME + }, + "rid":{"uid":"partner"} + }// (3iii): ALL RESOURCE PARTNER PRIORITIES: Add Column + ] + } + ] + } + } + + +}); \ No newline at end of file diff --git a/config/analyse/projects/Config.js b/config/analyse/projects/Config.js new file mode 100644 index 00000000..be5719c7 --- /dev/null +++ b/config/analyse/projects/Config.js @@ -0,0 +1,213 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + filter: [ + { + "type": "codelist", + "containerType": "baseContainer", + "title": "Country", + "components": [ + { + "uid": "crs_recipients", + "version": "2015", + "type": "codelist", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Codelist"}, + "name": "recipientcode", + config: { + "defaultsource": [ + //{"value": null, "label": "All", "selected": true}, + ], + "defaultcodes": ["238"], //Ethiopia + "onlyValueText": true, + "enableMultiselection": false + } + + } + ] + }, + { + "type": "codelist", + "containerType": "baseContainer", + "title": "Donor", + "components": [ + { + "uid": "crs_donors", + "version": "2015", + "type": "codelist", + "componentType": "dropDownList-FENIX", + "lang": "EN", + "title": {"EN": "Codelist"}, + "name": "donorcode", + config: { + "defaultsource": [ + //{"value": null, "label": "All", "selected": true}, + ], + "defaultcodes": ["1"], //Austria + "onlyValueText": true, + "enableMultiselection": false + } + + } + ] + }, + { + "type": "static", + "containerType": "baseContainer", + "components": [ + { + "type": "range", + "name": "year", + "componentType": "timeRangeLists-FENIX", + "class" : "timeRangeList", + "lang": "EN", + "title": {"EN": "Year"}, + "config": { + "from" : { + "title": {"EN": "From"}, + "defaultsource": [ + {"value": "2000", "label": "2000", "selected": true}, + {"value": "2001", "label": "2001", "selected": false}, + {"value": "2002", "label": "2002", "selected": false}, + {"value": "2003", "label": "2003", "selected": false}, + {"value": "2004", "label": "2004", "selected": false}, + {"value": "2005", "label": "2005", "selected": false}, + {"value": "2006", "label": "2006", "selected": false}, + {"value": "2007", "label": "2007", "selected": false}, + {"value": "2008", "label": "2008", "selected": false}, + {"value": "2009", "label": "2009", "selected": false}, + {"value": "2010", "label": "2010", "selected": false}, + {"value": "2011", "label": "2011", "selected": false}, + {"value": "2012", "label": "2012", "selected": false}, + {"value": "2013", "label": "2013", "selected": false} + ] + }, + "to" : { + "title": {"EN": "To"}, + "defaultsource": [ + {"value": "2013", "label": "2013", "selected": true}, + {"value": "2012", "label": "2012", "selected": false}, + {"value": "2011", "label": "2011", "selected": false}, + {"value": "2010", "label": "2010", "selected": false}, + {"value": "2009", "label": "2009", "selected": false}, + {"value": "2008", "label": "2008", "selected": false}, + {"value": "2007", "label": "2007", "selected": false}, + {"value": "2006", "label": "2006", "selected": false}, + {"value": "2005", "label": "2005", "selected": false}, + {"value": "2004", "label": "2004", "selected": false}, + {"value": "2003", "label": "2003", "selected": false}, + {"value": "2002", "label": "2002", "selected": false}, + {"value": "2001", "label": "2001", "selected": false}, + {"value": "2000", "label": "2000", "selected": false} + ] + } + } + } + ] + } + ], + + dashboard: { + //data cube's uid + uid: "adam_usd_commitment", + + //data base filter + filter: [], + + //bridge configuration + bridge: { + type: "d3p" + }, + + /* + * in case bridge is WDS this is the cube metadata. + * if bridge is D3P this is ignored + * */ + metadata: {}, + + items: [ + { + id: 'item-1', + type: 'table', + class: "fx-map-chart", + //needed if layout = injected + container: "#item-1", + config: { + container: "#item-1", + options: { + "columns_order": ["projecttitle", "year", "value"] + } + + // options: { + // hidden_columns: ["GenderCode", + // "AgeRangeCode" + // ] + // } + }, + // for now it takes the id, TODO: add uid as well + allowedFilter: [], + filter: [ + { + "name": "filter", + "parameters": { + "rows": { + "flowcode": { + "codes": [ + { + "uid": "crs_flow_types", + "version": "2015", + "codes": [ "10_12", "10_11", "10_13", "10_19"] + } + ] + }, + "sectorcode": { + "codes": [ + { + "uid": "crs_sectors", + "version": "2015", + "codes": [ + "600" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2015", + "codes": [ + "625" //Afghanistan + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2013 + } + ] + } + }, + "columns": ["year", "value", "projecttitle"] // DSD Order + } + } + ] + } + + ] + } + + } + + + +}); \ No newline at end of file diff --git a/config/browse/Events.js b/config/browse/Events.js new file mode 100644 index 00000000..73a29101 --- /dev/null +++ b/config/browse/Events.js @@ -0,0 +1,10 @@ + /*global define*/ +define(function ( ) { + + 'use strict'; + + return { + FILTER_ON_READY : "fx.filter.onready", + FILTER_ON_CHANGE : "fx.filter.onchange" + }; +}); diff --git a/config/browse/config-all-sector.js b/config/browse/config-all-sector.js new file mode 100644 index 00000000..07e484b2 --- /dev/null +++ b/config/browse/config-all-sector.js @@ -0,0 +1,1809 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'OTHER_SECTORS', + filter: { + parentsector_code: { + selector: { + id: "dropdown", + config: { //Selectize configuration + // allowEmptyOption: true, + //maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-md-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + dependencies: { + "year-from": {id: "min", event: "select"} + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + frankie: true, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + /** { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + },**/ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "top-recipients-all-sectors", //ref [data-item=':id'] + type: 'chart', + config: { + type: "column", + x: ["recipientcode"], //x axis + series: ["unitcode"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: { + "filter_top_10_recipients_sum": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_recipients_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode", "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'}, {"value": 'NA'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "top-partners-all-sectors", //ref [data-item=':id'] + type: 'chart', + config: { + type: "column", + x: ["donorcode"], //x axis + series: ["unitcode"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: { + "filter_top_10_partners_sum": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_partners_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode", "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE donorcode NOT IN (?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": 'NA'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: "top-sectors", //ref [data-item=':id'] + type: 'chart', + config: { + type: "column", + x: ["parentsector_code"], //x axis + series: ["unitcode"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: { + "filter_top_10_sectors_sum": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_sectors_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code", "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE parentsector_code NOT IN (?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": 'NA'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposecode"], //x axis and series + series: ["unitcode"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filterFor: { + "filter_top_10_subsectors_sum": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "purposecode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_subsectors_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "purposecode", "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE purposecode NOT IN (?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": 'NA'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["unitcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + filter: { //FX-filter format + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "unitcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filter: { //FX-filter format + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + } + /* { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: 'top-partners', // TOP DONORS + type: 'chart', + config: { + type: "column", + x: ["donorname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorname" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + },*/ + /* { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + } + ,{ + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["unitcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + filter: { //FX-filter format + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "unitcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filter: { //FX-filter format + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + }*/ + ] + } + } + + + +}); \ No newline at end of file diff --git a/config/browse/config-browse.js b/config/browse/config-browse.js new file mode 100644 index 00000000..1ff093c8 --- /dev/null +++ b/config/browse/config-browse.js @@ -0,0 +1,30 @@ +/*global define*/ +define(function ( ) { + + 'use strict'; + + return { + dashboard: { + DEFAULT_CONFIG : 'FAO_SECTOR' //OTHER_SECTORS || FAO_SECTOR + }, + filter: { + RECIPIENT_COUNTRY: 'recipientcode', + RESOURCE_PARTNER: 'donorcode', + SECTOR: 'parentsector_code', + SUB_SECTOR: 'purposecode', + CHANNELS_SUBCATEGORY: 'channelsubcategory_code', + CHANNEL: 'channelcode', + ODA: 'oda', + YEAR: 'year', + YEAR_FROM: 'year-from', + YEAR_TO: 'year-to', + COUNTRY: 'countrycode' + }, + topic: { + BY_COUNTRY: 'country', + BY_SECTOR: 'sector', + BY_RESOURCE_PARTNER: 'donor', + BY_COUNTRY_RESOURCE_PARTNER: 'country_donor' + } + }; +}); \ No newline at end of file diff --git a/config/browse/config-by-filter-values.js b/config/browse/config-by-filter-values.js new file mode 100644 index 00000000..58ae48d2 --- /dev/null +++ b/config/browse/config-by-filter-values.js @@ -0,0 +1,19 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + "sector": { + parentsector_code: [ + { + value: "", + config: { path: "config-all-sector"}, + display: { hide: ['tot-oda-sector', 'top-partners-others', 'top-recipients-others', 'top-recipients', 'top-partners'], show: ['tot-oda', 'top-sectors', 'top-recipients-all-sectors', 'top-partners-all-sectors']} + }, + {value: "9999", config: {path: "config-fao-sector"}} + ] + } + } +}); \ No newline at end of file diff --git a/config/browse/config-by-topic.js b/config/browse/config-by-topic.js new file mode 100644 index 00000000..9569330d --- /dev/null +++ b/config/browse/config-by-topic.js @@ -0,0 +1,25 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + "sector": { + purposecode: {hide: ['tot-oda', 'top-sectors', 'top-subsectors', 'tot-oda-sector', 'top-recipients-all-sectors', 'top-partners-all-sectors'], show: ['tot-oda-subsector', 'top-recipients', 'top-partners', 'top-partners-others', 'top-recipients-others']}, + parentsector_code: {hide: ['tot-oda', 'top-sectors', 'tot-oda-subsector', 'top-recipients-all-sectors', 'top-partners-all-sectors'], show: ['top-subsectors', 'tot-oda-sector', 'top-partners-others', 'top-recipients-others', 'top-recipients', 'top-partners']} + }, + "country": { + purposecode: {hide: ['top-sectors', 'top-sectors-others', 'top-subsectors', 'tot-oda-sector', 'tot-oda'], show: ['tot-oda-subsector']}, + parentsector_code: {hide: ['top-sectors', 'top-sectors-others', 'tot-oda-subsector', 'tot-oda'], show: ['top-subsectors', 'tot-oda-sector']} + }, + "donor": { + purposecode: {hide: ['top-sectors', 'top-sectors-others', 'top-subsectors', 'tot-oda-sector', 'tot-oda'], show: ['tot-oda-subsector']}, + parentsector_code: {hide: ['top-sectors', 'top-sectors-others', 'tot-oda-subsector', 'tot-oda'], show: ['top-subsectors', 'tot-oda-sector']} + }, + "country_donor": { + purposecode: {hide: ['top-sectors', 'top-sectors-others', 'top-subsectors', 'tot-oda-sector', 'tot-oda'], show: ['tot-oda-subsector']}, + parentsector_code: {hide: ['top-sectors', 'top-sectors-others', 'tot-oda-subsector', 'tot-oda'], show: ['top-subsectors', 'tot-oda-sector']} + } + } +}); \ No newline at end of file diff --git a/config/browse/config-development-indicators.js b/config/browse/config-development-indicators.js new file mode 100644 index 00000000..f3974fe1 --- /dev/null +++ b/config/browse/config-development-indicators.js @@ -0,0 +1,67 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + "country": { + + uid: "adam_country_indicators", + + items: [ + { + id: 'indicators-1', + type: 'custom', + + filter: { //FX-filter format + countrycode: ["625"] //Afghanistan + }, + postProcess: [ + { + "name": "filter", + "parameters": { + "columns": ["period", "value", "indicatorcode", "source", "note", "link", "itemcode", "unitcode"] + } + },{ + "name": "order", + "parameters": { + "indicatorcode": "ASC" + } + }] + } + ] + }, + "donor": { + + uid: "adam_country_indicators", + + items: [ + { + id: 'indicators-1', + type: 'custom', + + filter: { //FX-filter format + countrycode: ["1"] //Austria + }, + postProcess: [ + { + "name": "filter", + "parameters": { + "columns": ["period", "value", "indicatorcode", "source", "note", "link", "itemcode", "unitcode"] + } + },{ + "name": "order", + "parameters": { + "indicatorcode": "ASC" + } + }] + } + ] + + } + } + + +}); \ No newline at end of file diff --git a/config/browse/config-fao-country.js b/config/browse/config-fao-country.js new file mode 100644 index 00000000..f7bd27b2 --- /dev/null +++ b/config/browse/config-fao-country.js @@ -0,0 +1,2679 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'FAO_SECTOR', + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + default: ["9999"], + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_country_ODA": ['recipientcode', 'year', 'oda'], + "filter_total_sector_country_oda": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_country_oda" // RESULT OF PART 1: TOTAL ODA FOR THE COUNTRY + }, + { + "uid": "total_sector_country_oda" // RESULT OF PART 2: TOTAL ODA FOR SECTOR IN COUNTRY + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR SECTOR IN COUNTRY / TOTAL ODA FOR COUNTRY x 100) + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_country_ODA"} + }, // PART 1: TOTAL ODA FOR THE COUNTRY: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): TOTAL ODA FOR THE COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA in the Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_country_oda" + } + }, // (1iii): TOTAL ODA FOR THE COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_sector_country_oda"} + + }, // PART 2: TOTAL ODA for SECTOR in COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + + }, // (2ii): TOTAL ODA for SECTOR in COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sector for the Country" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"total_sector_country_oda"} + }, // (2iii): TOTAL ODA for SECTOR in COUNTRY: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_country_oda" + }, + { + "uid": "total_sector_country_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_sector_country_oda_value / total_country_oda_value )*100"] + + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "% SECTOR/TOTAL" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_country_sector_oda": ['recipientcode', 'year', 'oda'], + "filter_total_country_subsector_oda": ['recipientcode', 'purposecode', 'year', 'oda'], + }, + postProcess:[ + { + "name": "union", + "sid": [ + { + "uid": "total_country_sector_oda" // RESULT OF PART 1: TOTAL ODA FOR SECTOR IN COUNTRY + }, + { + "uid": "total_country_subsector_oda" // RESULT OF PART 2: TOTAL ODA FOR SUB SECTOR IN COUNTRY + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR SECTOR IN COUNTRY / TOTAL ODA FOR COUNTRY x 100) + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": + {"uid":"filter_total_country_sector_oda"} + }, // PART 1: TOTAL ODA FOR THE SECTOR IN COUNTRY: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FOR THE SECTOR IN COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sector for the Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_country_sector_oda" + } + }, // (1iii): TOTAL ODA FOR THE SECTOR IN COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_country_subsector_oda"} + + }, // PART 2: TOTAL ODA for SUBSECTOR in COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + + }, // (2ii): TOTAL ODA for SUBSECTOR in COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sub Sector for the Country" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"total_country_subsector_oda"} + }, // (2iii): TOTAL ODA for SUB SECTOR in COUNTRY: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_country_sector_oda" + }, + { + "uid": "total_country_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_country_subsector_oda_value / total_country_sector_oda_value )*100"] + + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: 'top-partners', // TOP DONORS + type: 'chart', + config: { + type: "column", + x: ["donorname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorname" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-partners-others', // TOP DONORS Vs OTHER DONORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_donors_sum": ['recipientcode', 'year', 'oda'], + "filter_top_all_donors_sum": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_donors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_donors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Resource Partners" + }, + "rid": { + "uid": "top_10_donors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all donors" + }, + "rid": { + "uid": "top_all_donors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_donors_sum" + }, + { + "uid": "top_10_donors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_donors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_donors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_donors_sum_value - top_10_donors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Resource Partners" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filter: { //FX-filter format + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_sectors_sum": ['recipientcode', 'year', 'oda'], + "filter_top_all_sectors_sum": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'regional-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true, + + zoomToCountry: [1] + + //highlight service NOT WORK FOR NOW + //highlightCountry : [1], // GAUL Afghanistan + } + }, + + filter: { //FX-filter format + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + un_region_code: ["034"], // Region = 'Southern Asia' + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ]// + } + ] + } + } + }); \ No newline at end of file diff --git a/config/browse/config-fao-country_donor.js b/config/browse/config-fao-country_donor.js new file mode 100644 index 00000000..75561b4a --- /dev/null +++ b/config/browse/config-fao-country_donor.js @@ -0,0 +1,2829 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'FAO_SECTOR', + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], // afghanistan + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + donorcode: { + selector: { + id: "dropdown", + default: ["1"], // Austria + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + config: { //Selectize configuration + default: ["9999"], + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['donorcode', 'recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/ODA'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_donor_recipient_oda": ['donorcode', 'recipientcode', 'year', 'oda'], + "filter_total_donor_recipient_sector_oda": ['donorcode', 'recipientcode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['year', 'oda'], + "filter_dac_members_by_donor_year": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_recipient_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR TO RECIPIENT + }, + { + "uid": "total_donor_recipient_sector_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL RECIPIENTS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR TO RECIPIENT / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR TO RECIPIENT: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "tt" + } + }, // (1ii): TOTAL ODA FROM DONOR TO RECIPIENT: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "tt" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner to Recipient Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_recipient_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR TO RECIPIENT: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_sector_oda" + } + }, // PART 2: TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + }, // (2ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA of Sector from Resource Partner in that Recipient Country" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_recipient_sector_oda" + } + }, // (2iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Add Column + + { + "name": "join", + "sid": [ + { + "uid": "total_donor_recipient_oda" + }, + { + "uid": "total_donor_recipient_sector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_recipient_sector_oda_value / total_donor_recipient_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/ODA" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + + + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sector in that Recipient Country" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + + "filter_total_donor_recipient_subsector_oda": ['donorcode', 'recipientcode', 'purposecode', 'year', 'oda'], + "filter_total_donor_recipient_sector_oda": ['donorcode', 'recipientcode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['year', 'oda'], + "filter_dac_members_by_donor_year": ['recipientcode', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "subsector_donor_oda" + }, + { + "uid": "sector_donor_oda" + }, + { + "uid": "percentage_ODA" + }, + { + "uid": "OECD_AVG" + + } + ], + "parameters": { + } + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "74010" + ] + } + ] + } + + } + }, + "rid": { + "uid": "filter_total_donor_recipient_subsector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA of Sub Sector from Resource Partner in that Country" + }, + "rid": { + "uid": "subsector_donor_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_sector_oda" + } + }, // PART 2: TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"sector_ODA"} + }, // (2ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA of Sector from Resource Partner in that Country" + }, + "rid": { + "uid": "sector_donor_oda" + } + }, // (2iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Add Column + + { + "name": "join", + "sid": [ + { + "uid": "subsector_donor_oda" + }, + { + "uid": "sector_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( subsector_donor_oda_value / sector_donor_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + + + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "74010" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sub Sector in that Country" + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name", "parentsector_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_sectors_sum": ['recipientcode', 'donorocode', 'year', 'oda'], + "filter_all_sectors_sum": ['recipientcode', 'donorocode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + // RESULT OF PART 1: TOTAL ODA for TOP 10 SECTORS + }, + { + "uid": "others" + // RESULT OF PART 3: TOTAL ODA OTHERS CALCULATION (TOTAL ODA ALL SECTORS (PART 2) - TOTAL ODA FOR TOP 10 Sectors) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 4: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + // PART 1: TOTAL ODA for TOP 10 SECTORS: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA for TOP 10 SECTORS: Group by + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + // (1iii): TOTAL ODA for TOP 10 SECTORS: Order by + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + // (1iv): TOTAL ODA for TOP 10 SECTORS: Limit + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (1vi): TOTAL ODA for TOP 10 SECTORS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + // (1vii): TOTAL ODA for TOP 10 PARTNERS: Add Column + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // PART 2i: TOTAL ODA for ALL SECTORS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + // (2ii): TOTAL ODA for ALL SECTORS : Add Column + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + // PART 3: TOTAL ODA OTHERS CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + // (3ii): TOTAL ODA OTHERS CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + // (3iii): TOTAL ODA OTHERS CALCULATION: Filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "others" + } + } + // (3iv): TOTAL ODA OTHERS CALCULATION: Add Column + ] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + } + ] + } + } +}); \ No newline at end of file diff --git a/config/browse/config-fao-donor.js b/config/browse/config-fao-donor.js new file mode 100644 index 00000000..c0e9e571 --- /dev/null +++ b/config/browse/config-fao-donor.js @@ -0,0 +1,5033 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'FAO_SECTOR', + filter: { + donorcode: { + selector: { + id: "dropdown", + default: ["1"], // Austria + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + default: ["9999"], + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['donorcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_donor_sector_oda": ['donorcode', 'year', 'oda'], + "filter_total_donor_oda": ['donorcode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['year', 'oda'], + "filter_dac_members_by_donor_year": ['year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "donor_sector_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR IN SECTOR + }, + { + "uid": "total_donor_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR IN SECTOR / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_sector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR IN SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "tt" + } + }, // (1ii): TOTAL ODA FROM DONOR IN SECTOR: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "tt" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA from Resource Partner in Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_sector_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR IN SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_oda" + } + }, // PART 2: TOTAL ODA FOR DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (2ii): TOTAL ODA FOR DONOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_oda" + } + }, // (2iii): TOTAL ODA FOR DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "donor_sector_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( donor_sector_oda_value / total_donor_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in Sector" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + /* config: { + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + + series: [{ + name: '% Sub Sector/Total', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }//, + + // { + // name: 'ODA from Resource Partner in Sector'//, + // type: 'column' + // }, + // { + // name: 'Total ODA from Resource Partner'//, + // // type: 'column' + //}, + // { + //name: 'OECD Average of ODA in that Sector'//, + // type: 'column' + //} + ], + exporting: { + chartOptions: { + legend: { + enabled: true + } + } + } + + }*/ + }, + + filterFor: { + "filter_donor_sector_oda": ['donorcode', 'year', 'oda'], + "filter_donor_subsector_oda": ['donorcode', 'purposecode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['purposecode', 'year', 'oda'], + "filter_dac_members_by_donor_year": ['year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "donor_sector_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR IN SECTOR + }, + { + "uid": "donor_subsector_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR IN SECTOR / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_sector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR IN SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FROM DONOR IN SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA from Resource Partner in Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_sector_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR IN SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60020" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_subsector_oda" + } + }, // PART 2: TOTAL ODA FOR DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (2ii): TOTAL ODA FOR DONOR: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "total_ODA" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner in Sub Sector" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_subsector_oda" + } + }, // (2iii): TOTAL ODA FOR DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "donor_sector_oda" + }, + { + "uid": "donor_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( donor_subsector_oda_value / donor_sector_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60020" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sub Sector" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-gni", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% ODA/GNI'){ + serie.update({ + yAxis: 'percent-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + + var isVisible2 = $.each(_that.series, function (i, serie) { + if(serie.name == '% OECD Average of ODA/GNI'){ + serie.update({ + yAxis: 'percent-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + + if(!isVisible && !isVisible2){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } + else { + if(isVisible || isVisible2) { + this.options.yAxis[1].title.text = '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'percent-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + }/*, + config: { + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + series: [{ + name: '% ODA/GNI', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }, + { + name: '% OECD Average of ODA/GNI', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + } + ], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + }*/ + }, + + + filterFor: { + "filter_total_ODA": ['donorcode', 'year', 'oda'], + "filter_gni_donor_oda": ['donorcode', 'year'], + + "filter_total_oda_dac_members_by_year": ['year', 'oda'], + "filter_dac_members_by_donor_year": ['year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_oda" + }, + { + "uid": "gni_donor_oda" + }, + { + "uid":"ODA_on_GNI" + }, + { + "uid": "oecd_oda_gni" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, // PART 1: TOTAL ODA FOR DONOR (ALL SECTORS): (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_gni_donor_oda" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Resource Partner GNI" + }, + "rid": { + "uid": "gni_donor_oda" + } + }, + + + { + "name": "join", + "sid": [ + { + "uid": "gni_donor_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oda_gni"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oda_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_oda_value / gni_donor_oda_value)*100"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% ODA/GNI" + }, + "rid": { + "uid": "ODA_on_GNI" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"all_subsectors_sum"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_GNI_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "GNI_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "GNI_sum" + }, + { + "uid": "all_subsectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [ + ] + }, + "rid": { + "uid": "join_oecd_avg" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_oecd_avg" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + " ( all_subsectors_sum_value / GNI_sum_value)*100" + ] + } + } + }, + + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% OECD Average of ODA/GNI" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code" + }, + "value": "percentage" + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "unitcode", + "indicator" + ] + }, + "rid":{ + "uid":"oecd_oda_gni" + } + } + + + ] + /*postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_oda" // RESULT OF PART 1: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid": "gni_donor_oda" // RESULT OF PART 2: GNI OF DONOR + }, + { + "uid":"percentage_ODA_GNI" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR DONOR / GNI FOR DONOR x 100) + }, + { + "uid":"percentage_OECD_AVG_GNI" // RESULT OF PART 5 (PART 4 used to calculated OECD_AVG): PERCENTAGE CALCULATION (OECD DONORS AVERAGE ODA / GNI FOR DONOR x 100) + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 6: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, // PART 1: TOTAL ODA FOR DONOR (ALL SECTORS): (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): TOTAL ODA FOR DONOR (ALL SECTORS): Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + }, // (1iii): TOTAL ODA FOR DONOR (ALL SECTORS): Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_gni_donor_oda" + } + }, // PART 2: GNI OF DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (2ii): GNI OF DONOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Resource Partner GNI" + }, + "rid": { + "uid": "gni_donor_oda" + } + }, // (2iii): GNI OF DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "gni_donor_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oda_gni"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oda_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_oda_value / gni_donor_oda_value)*100"] + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% ODA/GNI" + }, + "rid": { + "uid": "percentage_ODA_GNI" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + /!*"parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + },*!/ + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + }, // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "OECD_AVG" + }, + { + "uid": "gni_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oecd_avg_gni"} + }, // PART 5 PERCENTAGE CALCULATION [OECD AVG/GNI]: (5i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oecd_avg_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( OECD_AVG_value / gni_donor_oda_value)*100"] + } + } + }, // (5ii) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, // (5iii) PERCENTAGE CALCULATION [OECD AVG/GNI]: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (5iv) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% OECD Average of ODA/GNI" + }, + "rid": { + "uid": "percentage_OECD_AVG_GNI" + } + } // (5vi) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column + ]*/ + }, + { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'purposecode', 'year', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-recipients-others', // TOP RECIPIENTS Vs OTHER RECIPIENTS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_recipients_sum": ['donorcode', 'purposecode', 'year', 'oda'], + "filter_all_recipients_sum": ['donorcode', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_recipients_sum" + }, + { + "uid":"others" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_recipients_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Recipient Countries" + }, + "rid": { + "uid": "top_10_recipients_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + + ] + } + }, + // NEED TO VERIFY HOW TO DO THIS + // { + // "name": "select", + // "parameters": { + // "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + // "queryParameters": [ + // {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + // {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + // {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + // {"value": '689'}, {"value": '619'}, {"value": '679'} + // ] + // } + // }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all recipients" + }, + "rid": { + "uid": "top_all_recipients_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_recipients_sum" + }, + { + "uid": "top_10_recipients_sum" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_total_recipients"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_total_recipients"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":["top_all_recipients_sum_value - top_10_recipients_sum_value"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Recipients" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'year', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_sectors_sum": ['donorcode', 'year', 'oda'], + "filter_top_all_sectors_sum": ['donorcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'year', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + + filterFor: ['donorcode', 'year', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["donorcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + + filterFor: ['donorcode', 'year', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filterFor: ['donorcode', 'year', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + purposecode: [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + } + ] + } + } +}); \ No newline at end of file diff --git a/config/browse/config-fao-sector.js b/config/browse/config-fao-sector.js new file mode 100644 index 00000000..27688ad5 --- /dev/null +++ b/config/browse/config-fao-sector.js @@ -0,0 +1,3014 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'FAO_SECTOR', + filter: { + parentsector_code: { + selector: { + id: "dropdown", + default: ["9999"], + config: { //Selectize configuration + maxItems: 1, + placeholder: "Please select", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-md-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + dependencies: { + "year-from": {id: "min", event: "select"} + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + frankie: true, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total ODA'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_sector_oda": ['year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_sector_oda" // RESULT OF PART 1: TOTAL ODA for the selected Sector + }, + { + "uid": "total_oda" // RESULT OF PART 2: TOTAL ODA for ALL Sectors + }, + { + "uid": "percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA SECTOR / TOTAL ODA for ALL Sectors x 100) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: {uid: "filter_total_sector_oda"} + }, // PART 1: TOTAL ODA FOR SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FOR SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_sector_oda" + } + }, // (1iii): TOTAL ODA FOR SECTOR: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda" + } + + }, //PART 2: TOTAL ODA for ALL Sectors: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, //(2ii): TOTAL ODA for ALL Sectors: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_oda" + } + }, //(2iii): TOTAL ODA for ALL Sectors: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_sector_oda" + }, + { + "uid": "total_oda" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process" + } + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1=1"], + "values": ["(total_sector_oda_value/total_oda_value)*100"] + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [ + { + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + } + ] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total ODA" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + $.each(this.series, function (i, serie) { + if(serie.name == 'Total ODA'){ + serie.update({ + visible: false + }) + } + }); + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + } + }, + + filterFor: { + "filter_total_sector_oda": ['year', 'oda'], + "filter_total_subsector_oda": ['purposecode', 'year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess:[ + { + "name": "union", + "sid": [ + { + "uid": "total_sector_oda" + // RESULT OF PART 1: TOTAL ODA for the selected Sector + }, + { + "uid": "total_subsector_oda" + // RESULT OF PART 2: TOTAL ODA for the selected Sub Sector + }, + { + "uid": "total_oda" + // RESULT OF PART 3: TOTAL ODA for ALL Sectors + }, + { + "uid": "percentage_ODA" + // RESULT OF PART 4: PERCENTAGE CALCULATION (TOTAL ODA SUB SECTOR / TOTAL ODA for SECTOR x 100) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: { + uid: "filter_total_sector_oda" + } + }, + // PART 1: TOTAL ODA FOR SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA FOR SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sector" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_sector_oda" + } + }, + // (1iii): TOTAL ODA FOR SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: { + uid: "filter_total_subsector_oda" + } + }, + // PART 2: TOTAL ODA FOR SUB SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA FOR SUB SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sub Sector" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_subsector_oda" + } + }, + // (2iii): TOTAL ODA FOR SUB SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda" + } + }, + //PART 3: TOTAL ODA for ALL Sectors: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + //(3ii): TOTAL ODA for ALL Sectors: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_oda" + } + }, + //(3iii): TOTAL ODA for ALL Sectors: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_sector_oda" + }, + { + "uid": "total_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process" + } + }, + // PART 4 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1=1" + ], + "values": [ + "(total_subsector_oda_value/total_sector_oda_value)*100" + ] + } + }, + "rid": { + "uid": "percentage_Value" + } + }, + // (4ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, + // (4iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [ + { + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + } + ] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, + // (4iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" + // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } + // (4vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: 'top-partners', // TOP DONORS + type: 'chart', + config: { + type: "column", + x: ["donorname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + //FAO-related sectors + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorname" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-partners-others', // TOP RESOURCE PARTNERS Vs OTHER RESOURCE PARTNERS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_donors_sum": ['purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_donors_sum" + // RESULT OF PART 1: TOTAL ODA for TOP 10 PARTNERS + }, + { + "uid": "others" + // RESULT OF PART 3: TOTAL ODA OTHERS CALCULATION (TOTAL ODA ALL PARTNERS (PART 2) - TOTAL ODA FOR TOP 10 Partners) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 4: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_donors_sum" + } + }, + // PART 1: TOTAL ODA for TOP 10 PARTNERS: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA for TOP 10 PARTNERS: Group by + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + // (1iii): TOTAL ODA for TOP 10 PARTNERS: Order by + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + // (1iv): TOTAL ODA for TOP 10 PARTNERS: Limit + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (1vi): TOTAL ODA for TOP 10 PARTNERS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Resource Partners" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_10_donors_sum" + } + }, + // (1vii): TOTAL ODA for TOP 10 PARTNERS: Add Column + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (2ii): TOTAL ODA for ALL PARTNERS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all donors" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_all_donors_sum" + } + }, + // (2iii): TOTAL ODA for ALL PARTNERS : Add Column + { + "name": "join", + "sid": [ + { + "uid": "top_all_donors_sum" + }, + { + "uid": "top_10_donors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_donors" + } + }, + // PART 3: TOTAL ODA OTHERS CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_donors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_donors_sum_value - top_10_donors_sum_value" + ] + } + } + }, + // (3ii): TOTAL ODA OTHERS CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + // (3iii): TOTAL ODA OTHERS CALCULATION: Filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Resource Partners" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "others" + } + } + // (3iv): TOTAL ODA OTHERS CALCULATION: Add Column + ] + }, + { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-recipients-others', // TOP RECIPIENTS Vs OTHER RECIPIENTS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_recipients_sum": ['purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_recipients_sum" + }, + { + "uid":"others" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "purposecode": { // FAO Related purposecodes + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_recipients_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Recipient Countries" + }, + "rid": { + "uid": "top_10_recipients_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + + ] + } + }, + // NEED TO VERIFY HOW TO DO THIS + // { + // "name": "select", + // "parameters": { + // "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + // "queryParameters": [ + // {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + // {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + // {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + // {"value": '689'}, {"value": '619'}, {"value": '679'} + // ] + // } + // }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all recipients" + }, + "rid": { + "uid": "top_all_recipients_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_recipients_sum" + }, + { + "uid": "top_10_recipients_sum" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_total_recipients"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_total_recipients"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":["top_all_recipients_sum_value - top_10_recipients_sum_value"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Recipients" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["unitcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "unitcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filter: { //FX-filter format + purposecode: ["12240", + "14030", + "14031", + "15170", + "16062", + "23070", + "31110", + "31120", + "31130", + "31140", + "31150", + "31161", + "31162", + "31163", + "31164", + "31165", + "31166", + "31181", + "31182", + "31191", + "31192", + "31193", + "31194", + "31195", + "31210", + "31220", + "31261", + "31281", + "31282", + "31291", + "31310", + "31320", + "31381", + "31382", + "31391", + "32161", + "32162", + "32163", + "32165", + "32267", + "41010", + "41020", + "41030", + "41040", + "41050", + "41081", + "41082", + "43040", + "43050", + "52010", + "72040", + "74010" + ], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + } + ] + } + } +}); \ No newline at end of file diff --git a/config/browse/config-other-country.js b/config/browse/config-other-country.js new file mode 100644 index 00000000..b15a290d --- /dev/null +++ b/config/browse/config-other-country.js @@ -0,0 +1,2276 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'OTHER_SECTORS', + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + // default: ["600"], + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + // codes: ["60010", "60020", "60030", "60040", "60061", "60062", "60063"], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} //obj or array of obj + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_country_ODA": ['recipientcode', 'year', 'oda'], + "filter_total_sector_country_oda": ['recipientcode', 'parentsector_code', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_country_oda" // RESULT OF PART 1: TOTAL ODA FOR THE COUNTRY + }, + { + "uid": "total_sector_country_oda" // RESULT OF PART 2: TOTAL ODA FOR SECTOR IN COUNTRY + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR SECTOR IN COUNTRY / TOTAL ODA FOR COUNTRY x 100) + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_country_ODA"} + }, // PART 1: TOTAL ODA FOR THE COUNTRY: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): TOTAL ODA FOR THE COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA in the Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_country_oda" + } + }, // (1iii): TOTAL ODA FOR THE COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_sector_country_oda"} + + }, // PART 2: TOTAL ODA for SECTOR in COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + + }, // (2ii): TOTAL ODA for SECTOR in COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sector for the Country" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"total_sector_country_oda"} + }, // (2iii): TOTAL ODA for SECTOR in COUNTRY: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_country_oda" + }, + { + "uid": "total_sector_country_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_sector_country_oda_value / total_country_oda_value )*100"] + + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "% SECTOR/TOTAL" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + //filterFor: ['un_region_code', 'parentsector_code', 'purposecode', 'year', 'oda'], + + filterFor: { + "filter_total_country_sector_oda": ['recipientcode', 'parentsector_code', 'year', 'oda'], + "filter_total_country_subsector_oda": ['recipientcode', 'parentsector_code', 'purposecode', 'year', 'oda'], + }, + postProcess:[ + { + "name": "union", + "sid": [ + { + "uid": "total_country_sector_oda" // RESULT OF PART 1: TOTAL ODA FOR SECTOR IN COUNTRY + }, + { + "uid": "total_country_subsector_oda" // RESULT OF PART 2: TOTAL ODA FOR SUB SECTOR IN COUNTRY + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR SECTOR IN COUNTRY / TOTAL ODA FOR COUNTRY x 100) + } + + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": + {"uid":"filter_total_country_sector_oda"} + }, // PART 1: TOTAL ODA FOR THE SECTOR IN COUNTRY: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FOR THE SECTOR IN COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sector for the Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_country_sector_oda" + } + }, // (1iii): TOTAL ODA FOR THE SECTOR IN COUNTRY: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60020" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_country_subsector_oda"} + + }, // PART 2: TOTAL ODA for SUBSECTOR in COUNTRY: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + + }, // (2ii): TOTAL ODA for SUBSECTOR in COUNTRY: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA in the Sub Sector for the Country" // PART 2 FINAL INDICATOR NAME + }, + "rid":{"uid":"total_country_subsector_oda"} + }, // (2iii): TOTAL ODA for SUB SECTOR in COUNTRY: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_country_sector_oda" + }, + { + "uid": "total_country_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_country_subsector_oda_value / total_country_sector_oda_value )*100"] + + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: 'top-partners', // TOP DONORS + type: 'chart', + config: { + type: "column", + x: ["donorname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorname" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-partners-others', // TOP DONORS Vs OTHER DONORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_donors_sum": ['parentsector_code', 'recipientcode', 'year', 'oda'], + "filter_top_all_donors_sum": ['parentsector_code', 'recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_donors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_donors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Resource Partners" + }, + "rid": { + "uid": "top_10_donors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all donors" + }, + "rid": { + "uid": "top_all_donors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_donors_sum" + }, + { + "uid": "top_10_donors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_donors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_donors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_donors_sum_value - top_10_donors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Resource Partners" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filter: { //FX-filter format + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_sectors_sum": ['recipientcode', 'year', 'oda'], + "filter_top_all_sectors_sum": ['recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + recipientcode: ["625"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'regional-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true, + + zoomToCountry: [1], + + //highlight service NOT WORK FOR NOW + //highlightCountry : [1], // GAUL Afghanistan + } + }, + + + filterFor: ['un_region_code', 'parentsector_code', 'purposecode', 'year', 'oda'], + + filter: { //FX-filter format + un_region_code: ["034"], // Region = 'Southern Asia' + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ]// + } + ] + } + } + }); \ No newline at end of file diff --git a/config/browse/config-other-country_donor.js b/config/browse/config-other-country_donor.js new file mode 100644 index 00000000..59e592e2 --- /dev/null +++ b/config/browse/config-other-country_donor.js @@ -0,0 +1,2436 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'OTHER_SECTORS', + filter: { + recipientcode: { + selector: { + id: "dropdown", + default: ["625"], // afghanistan + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_recipients", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + donorcode: { + selector: { + id: "dropdown", + default: ["1"], // Austria + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + // codes: ["60010", "60020", "60030", "60040", "60061", "60062", "60063"], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} //obj or array of obj + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['donorcode', 'recipientcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/ODA'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_donor_recipient_oda": ['donorcode', 'recipientcode', 'year', 'oda'], + "filter_total_donor_recipient_sector_oda": ['donorcode', 'recipientcode', 'parentsector_code', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['parentsector_code', 'year', 'oda'], + "filter_dac_members_by_donor_year": ['recipientcode', 'parentsector_code', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_recipient_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR TO RECIPIENT + }, + { + "uid": "total_donor_recipient_sector_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL RECIPIENTS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR TO RECIPIENT / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR TO RECIPIENT: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "tt" + } + }, // (1ii): TOTAL ODA FROM DONOR TO RECIPIENT: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "tt" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner to Recipient Country" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_recipient_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR TO RECIPIENT: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_sector_oda" + } + }, // PART 2: TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + }, // (2ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA of Sector from Resource Partner in that Recipient Country" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_recipient_sector_oda" + } + }, // (2iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Add Column + + { + "name": "join", + "sid": [ + { + "uid": "total_donor_recipient_oda" + }, + { + "uid": "total_donor_recipient_sector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_recipient_sector_oda_value / total_donor_recipient_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/ODA" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + + + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sector in that Recipient Country" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + + "filter_total_donor_recipient_subsector_oda": ['donorcode', 'recipientcode', 'parentsector_code', 'purposecode', 'year', 'oda'], + "filter_total_donor_recipient_sector_oda": ['donorcode', 'recipientcode', 'parentsector_code', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['parentsector_code', 'year', 'oda'], + "filter_dac_members_by_donor_year": ['recipientcode', 'parentsector_code', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "subsector_donor_oda" + }, + { + "uid": "sector_donor_oda" + }, + { + "uid": "percentage_ODA" + }, + { + "uid": "OECD_AVG" + + } + ], + "parameters": { + } + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "72010" + ] + } + ] + } + + } + }, + "rid": { + "uid": "filter_total_donor_recipient_subsector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA of Sub Sector from Resource Partner in that Country" + }, + "rid": { + "uid": "subsector_donor_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SUB SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_recipient_sector_oda" + } + }, // PART 2: TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"sector_ODA"} + }, // (2ii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA of Sector from Resource Partner in that Country" + }, + "rid": { + "uid": "sector_donor_oda" + } + }, // (2iii): TOTAL ODA FROM DONOR TO RECIPIENT FOR SECTOR : Add Column + + { + "name": "join", + "sid": [ + { + "uid": "subsector_donor_oda" + }, + { + "uid": "sector_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( subsector_donor_oda_value / sector_donor_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + + + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "700" // Humanitarian aid + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "72010" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sub Sector in that Country" + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name", "parentsector_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_sectors_sum": ['recipientcode', 'donorocode', 'year', 'oda'], + "filter_all_sectors_sum": ['recipientcode', 'donorocode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + // RESULT OF PART 1: TOTAL ODA for TOP 10 SECTORS + }, + { + "uid": "others" + // RESULT OF PART 3: TOTAL ODA OTHERS CALCULATION (TOTAL ODA ALL SECTORS (PART 2) - TOTAL ODA FOR TOP 10 Sectors) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 4: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "625" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + // PART 1: TOTAL ODA for TOP 10 SECTORS: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA for TOP 10 SECTORS: Group by + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + // (1iii): TOTAL ODA for TOP 10 SECTORS: Order by + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + // (1iv): TOTAL ODA for TOP 10 SECTORS: Limit + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (1vi): TOTAL ODA for TOP 10 SECTORS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + // (1vii): TOTAL ODA for TOP 10 PARTNERS: Add Column + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // PART 2i: TOTAL ODA for ALL SECTORS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + // (2ii): TOTAL ODA for ALL SECTORS : Add Column + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + // PART 3: TOTAL ODA OTHERS CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + // (3ii): TOTAL ODA OTHERS CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + // (3iii): TOTAL ODA OTHERS CALCULATION: Filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "others" + } + } + // (3iv): TOTAL ODA OTHERS CALCULATION: Add Column + ] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + recipientcode: ["625"], + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + } + ] + } + } + }); \ No newline at end of file diff --git a/config/browse/config-other-donor.js b/config/browse/config-other-donor.js new file mode 100644 index 00000000..f12a9c97 --- /dev/null +++ b/config/browse/config-other-donor.js @@ -0,0 +1,4414 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'OTHER_SECTORS', + filter: { + donorcode: { + selector: { + id: "dropdown", + default: ["1"], // Austria + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-3", + cl: { + uid: "crs_donors", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + parentsector_code: { + selector: { + id: "dropdown", + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} //obj or array of obj + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + + dependencies: { + "year-from": {id: "min", event: "select"} + }, + + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + xAxis: { + type: 'datetime' + } + } + }, + + filterFor: { + "filter_total_ODA": ['donorcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "total_oda" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA" + } + } + ] + }, + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_donor_sector_oda": ['donorcode', 'parentsector_code', 'year', 'oda'], + "filter_total_donor_oda": ['donorcode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['parentsector_code', 'year', 'oda'], + "filter_dac_members_by_donor_year": ['parentsector_code', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "donor_sector_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR IN SECTOR + }, + { + "uid": "total_donor_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR IN SECTOR / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_sector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR IN SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "tt" + } + }, // (1ii): TOTAL ODA FROM DONOR IN SECTOR: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "tt" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA from Resource Partner in Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_sector_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR IN SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_donor_oda" + } + }, // PART 2: TOTAL ODA FOR DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (2ii): TOTAL ODA FOR DONOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_donor_oda" + } + }, // (2iii): TOTAL ODA FOR DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "donor_sector_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( donor_sector_oda_value / total_donor_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in Sector" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + /* config: { + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + + series: [{ + name: '% Sub Sector/Total', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }//, + + // { + // name: 'ODA from Resource Partner in Sector'//, + // type: 'column' + // }, + // { + // name: 'Total ODA from Resource Partner'//, + // // type: 'column' + //}, + // { + //name: 'OECD Average of ODA in that Sector'//, + // type: 'column' + //} + ], + exporting: { + chartOptions: { + legend: { + enabled: true + } + } + } + + }*/ + }, + + filterFor: { + "filter_donor_sector_oda": ['donorcode', 'parentsector_code', 'year', 'oda'], + "filter_donor_subsector_oda": ['donorcode', 'parentsector_code', 'purposecode', 'year', 'oda'], + + "filter_total_oda_dac_members_by_year": ['parentsector_code', 'purposecode', 'year', 'oda'], + "filter_dac_members_by_donor_year": ['parentsector_code', 'year', 'oda'] + }, + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "donor_sector_oda" // RESULT OF PART 1: TOTAL ODA FROM DONOR IN SECTOR + }, + { + "uid": "donor_subsector_oda" // RESULT OF PART 2: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid":"percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (ODA FROM DONOR IN SECTOR / TOTAL ODA FROM DONOR x 100) + }, + { + "uid":"OECD_AVG" // RESULT OF PART 4: OECD DONORS (DAC MEMBERS) AVERAGE ODA IN SELECTED SECTOR + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_sector_oda" + } + }, // PART 1: TOTAL ODA FROM DONOR IN SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FROM DONOR IN SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA from Resource Partner in Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_sector_oda" + } + }, // (1iii): TOTAL ODA FROM DONOR IN SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60020" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_donor_subsector_oda" + } + }, // PART 2: TOTAL ODA FOR DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (2ii): TOTAL ODA FOR DONOR: Group by + { + "name": "addcolumn", + "sid": [ + { + "uid": "total_ODA" + } + ], + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner in Sub Sector" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "donor_subsector_oda" + } + }, // (2iii): TOTAL ODA FOR DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "donor_sector_oda" + }, + { + "uid": "donor_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( donor_subsector_oda_value / donor_sector_oda_value )*100"] + + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60020" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA in that Sub Sector" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + } // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + ] + }, + { + id: "tot-oda-gni", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% ODA/GNI'){ + serie.update({ + yAxis: 'percent-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + + var isVisible2 = $.each(_that.series, function (i, serie) { + if(serie.name == '% OECD Average of ODA/GNI'){ + serie.update({ + yAxis: 'percent-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + + if(!isVisible && !isVisible2){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } + else { + if(isVisible || isVisible2) { + this.options.yAxis[1].title.text = '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'percent-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + }/*, + config: { + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + series: [{ + name: '% ODA/GNI', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }, + { + name: '% OECD Average of ODA/GNI', + yAxis: 1, + dashStyle: 'shortdot', + marker: { + radius: 3 + } + } + ], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + }*/ + }, + + + filterFor: { + "filter_total_ODA": ['donorcode', 'year', 'oda'], + "filter_gni_donor_oda": ['donorcode', 'year'], + + "all_subsectors_sum": ['year', 'oda'], + "filter_GNI_sum": ['year'] + }, + + + postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_oda" + }, + { + "uid": "gni_donor_oda" + }, + { + "uid":"ODA_on_GNI" + }, + { + "uid": "oecd_oda_gni" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, // PART 1: TOTAL ODA FOR DONOR (ALL SECTORS): (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + }, + + + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_gni_donor_oda" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Resource Partner GNI" + }, + "rid": { + "uid": "gni_donor_oda" + } + }, + + + { + "name": "join", + "sid": [ + { + "uid": "gni_donor_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oda_gni"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oda_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_oda_value / gni_donor_oda_value)*100"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% ODA/GNI" + }, + "rid": { + "uid": "ODA_on_GNI" + } + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"all_subsectors_sum"} + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_GNI_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid": { + "uid": "GNI_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "GNI_sum" + }, + { + "uid": "all_subsectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [ + ] + }, + "rid": { + "uid": "join_oecd_avg" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_oecd_avg" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + " ( all_subsectors_sum_value / GNI_sum_value)*100" + ] + } + } + }, + + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% OECD Average of ODA/GNI" + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code" + }, + "value": "percentage" + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "unitcode", + "indicator" + ] + }, + "rid":{ + "uid":"oecd_oda_gni" + } + } + + + ] + /*postProcess: [ + + { + "name": "union", + "sid": [ + { + "uid": "total_donor_oda" // RESULT OF PART 1: TOTAL ODA FOR DONOR (ALL SECTORS) + }, + { + "uid": "gni_donor_oda" // RESULT OF PART 2: GNI OF DONOR + }, + { + "uid":"percentage_ODA_GNI" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA FOR DONOR / GNI FOR DONOR x 100) + }, + { + "uid":"percentage_OECD_AVG_GNI" // RESULT OF PART 5 (PART 4 used to calculated OECD_AVG): PERCENTAGE CALCULATION (OECD DONORS AVERAGE ODA / GNI FOR DONOR x 100) + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + + }, // PART 6: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_total_ODA"} + }, // PART 1: TOTAL ODA FOR DONOR (ALL SECTORS): (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"total_ODA"} + + }, // (1ii): TOTAL ODA FOR DONOR (ALL SECTORS): Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA from Resource Partner" + }, + "rid": { + "uid": "total_donor_oda" + } + }, // (1iii): TOTAL ODA FOR DONOR (ALL SECTORS): Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_donors_gni" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_gni_donor_oda" + } + }, // PART 2: GNI OF DONOR: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (2ii): GNI OF DONOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Resource Partner GNI" + }, + "rid": { + "uid": "gni_donor_oda" + } + }, // (2iii): GNI OF DONOR: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "gni_donor_oda" + }, + { + "uid": "total_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oda_gni"} + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oda_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( total_donor_oda_value / gni_donor_oda_value)*100"] + } + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% ODA/GNI" + }, + "rid": { + "uid": "percentage_ODA_GNI" + } + }, // (3vi) PERCENTAGE CALCULATION: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda_dac_members_by_year" + } + }, // PART 4 OECD DONORS (DAC MEMBERS) AVERAGE ODA: (4i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + }, + "rid":{"uid":"aggregated_oecd"} + }, // (4ii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "donorcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "dac_member": { + "enumeration": [ + "t" + ] + }, + /!*"parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + },*!/ + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_dac_members_by_donor_year"} + + }, // (4iii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode", + "year" + ], + "aggregations": [ + ] + }, + "rid": { + "uid": "sd" + } + }, // (4iv): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value_count", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": 1 + }, + "rid": { + "uid": "percentage_Value" + } + }, // (4v): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value_count" + ], + "rule": "SUM" + } + ] + }, + "rid": { + "uid": "count_dac_members" + } + }, // (4vi): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Group by + + { + "name": "join", + "sid": [ + { + "uid": "count_dac_members" + }, + { + "uid": "aggregated_oecd" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + } + }, // (4vii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Join + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( aggregated_oecd_value / count_dac_members_value_count )"] + } + }, + "rid": { + "uid": "avg_value" + } + }, // (4viii): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value", + "aggregated_oecd_unitcode" + ], + "rows": { + } + } + }, // (4ix): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Filter + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "OECD Average of ODA" // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "OECD_AVG" + } + }, // (4x): OECD DONORS (DAC MEMBERS) AVERAGE ODA: Add Column + + { + "name": "join", + "sid": [ + { + "uid": "OECD_AVG" + }, + { + "uid": "gni_donor_oda" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_oecd_avg_gni"} + }, // PART 5 PERCENTAGE CALCULATION [OECD AVG/GNI]: (5i) Join + { + "name": "addcolumn", + "sid":[{"uid":"join_process_oecd_avg_gni"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":[" ( OECD_AVG_value / gni_donor_oda_value)*100"] + } + } + }, // (5ii) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + } + }, // (5iii) PERCENTAGE CALCULATION [OECD AVG/GNI]: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [{ + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + }] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (5iv) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% OECD Average of ODA/GNI" + }, + "rid": { + "uid": "percentage_OECD_AVG_GNI" + } + } // (5vi) PERCENTAGE CALCULATION [OECD AVG/GNI]: Add Column + ]*/ + }, + { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'parentsector_code', 'purposecode', 'year', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-recipients-others', // TOP RECIPIENTS Vs OTHER RECIPIENTS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_recipients_sum": ['donorcode', 'parentsector_code', 'purposecode', 'year', 'oda'], + "filter_all_recipients_sum": ['donorcode', 'parentsector_code', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_recipients_sum" + }, + { + "uid":"others" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_recipients_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Recipient Countries" + }, + "rid": { + "uid": "top_10_recipients_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + + ] + } + }, + // NEED TO VERIFY HOW TO DO THIS + // { + // "name": "select", + // "parameters": { + // "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + // "queryParameters": [ + // {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + // {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + // {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + // {"value": '689'}, {"value": '619'}, {"value": '679'} + // ] + // } + // }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all recipients" + }, + "rid": { + "uid": "top_all_recipients_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_recipients_sum" + }, + { + "uid": "top_10_recipients_sum" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_total_recipients"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_total_recipients"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":["top_all_recipients_sum_value - top_10_recipients_sum_value"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Recipients" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-sectors', // TOP SECTORS + type: 'chart', + config: { + type: "column", + x: ["parentsector_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'year', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "parentsector_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-sectors-others', // TOP SECTORS Vs OTHER SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + filterFor: { + "filter_top_10_sectors_sum": ['donorcode', 'year', 'oda'], + "filter_top_all_sectors_sum": ['donorcode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_sectors_sum" + }, + { + "uid": "others" + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "parentsector_code", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "1" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_sectors_sum" + } + }, + { + "name": "group", + "parameters": { + "by": [ + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Sectors" + }, + "rid": { + "uid": "top_10_sectors_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all sectors" + }, + "rid": { + "uid": "top_all_sectors_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_sectors_sum" + }, + { + "uid": "top_10_sectors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_sectors" + } + }, + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_sectors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_sectors_sum_value - top_10_sectors_sum_value" + ] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Sectors" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + + filterFor: ['donorcode', 'year', 'parentsector_code', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + + filterFor: ['donorcode', 'year', 'parentsector_code', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["donorcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + + filterFor: ['donorcode', 'year', 'parentsector_code', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filterFor: ['donorcode', 'year', 'parentsector_code', 'purposecode', 'oda'], + + filter: { //FX-filter format + donorcode: ["1"], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + } + ] + } + } + }); \ No newline at end of file diff --git a/config/browse/config-other-sector.js b/config/browse/config-other-sector.js new file mode 100644 index 00000000..4d77eac7 --- /dev/null +++ b/config/browse/config-other-sector.js @@ -0,0 +1,2455 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + id: 'OTHER_SECTORS', + filter: { + parentsector_code: { + selector: { + id: "dropdown", + default: ["600"], + config: { //Selectize configuration + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-md-3", + cl: { + uid: "crs_dac", + version: "2016", + level: 1, + levels: 1 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + purposecode: { + selector: { + id: "dropdown", + config: { + maxItems: 1, + placeholder: "All", + plugins: ['remove_button'], + mode: 'multi' + } + }, + className: "col-sm-4", + cl: { + codes: ["60010", "60020", "60030", "60040", "60061", "60062", "60063"], + "uid": "crs_dac", + "version": "2016", + "level": 2, + "levels": 2 + }, + template: { + hideSwitch: true, + hideRemoveButton: true + }, + dependencies: { + "parentsector_code": {id: "parent", event: "select"} + } + }, + "year-from": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2000], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + "year-to": { + selector: { + id: "dropdown", + from: 2000, + to: 2014, + default: [2014], + config: { + maxItems: 1 + } + }, + className: "col-sm-2", + format: { + type: "static", + output: "time" + }, + dependencies: { + "year-from": {id: "min", event: "select"} + }, + template: { + hideSwitch: true, + hideRemoveButton: true + } + }, + oda: { + selector: { + id: "dropdown", + default: ['adam_usd_commitment'], + config: { //Selectize configuration + maxItems: 1 + } + }, + className: "col-sm-4", + cl: { + uid: "crs_flow_amounts", + version: "2016" + }, + template: { + hideHeaderIcon: false, + frankie: true, + headerIconClassName: 'glyphicon glyphicon-info-sign', + hideSwitch: true, + hideRemoveButton: true + } + } + + }, + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: "tot-oda-sector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sector/Total ODA'){ + serie.update({ + yAxis: 'subsector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'subsector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + + } + }, + + filterFor: { + "filter_total_sector_oda": ['parentsector_code', 'year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "total_sector_oda" // RESULT OF PART 1: TOTAL ODA for the selected Sector + }, + { + "uid": "total_oda" // RESULT OF PART 2: TOTAL ODA for ALL Sectors + }, + { + "uid": "percentage_ODA" // RESULT OF PART 3: PERCENTAGE CALCULATION (TOTAL ODA SECTOR / TOTAL ODA for ALL Sectors x 100) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, // PART 4: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: {uid: "filter_total_sector_oda"} + }, // PART 1: TOTAL ODA FOR SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, // (1ii): TOTAL ODA FOR SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sector" // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_sector_oda" + } + }, // (1iii): TOTAL ODA FOR SECTOR: Add Column + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda" + } + + }, //PART 2: TOTAL ODA for ALL Sectors: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, //(2ii): TOTAL ODA for ALL Sectors: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_oda" + } + }, //(2iii): TOTAL ODA for ALL Sectors: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_sector_oda" + }, + { + "uid": "total_oda" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process" + } + }, // PART 3 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1=1"], + "values": ["(total_sector_oda_value/total_oda_value)*100"] + } + }, + "rid": { + "uid": "percentage_Value" + } + }, // (3ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, // (3iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [ + { + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + } + ] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, // (3iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sector/Total ODA" // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } // (3vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: "tot-oda-subsector", //ref [data-item=':id'] + type: "chart", //chart || map || olap, + config: { + type: "line", + x: ["year"], //x axis + series: ["indicator"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function(event) { + var _that = this; + var hasSubSector = false; + + $.each(this.series, function (i, serie) { + if(serie.name == 'Total ODA'){ + serie.update({ + visible: false + }) + } + }); + + var isVisible = $.each(_that.series, function (i, serie) { + if(serie.name == '% Sub Sector/Sector'){ + serie.update({ + yAxis: 'sector-axis', + dashStyle: 'shortdot', + marker: { + radius: 3 + } + }); + + return true; + } + }); + + if(!isVisible){ + this.options.yAxis[1].title.text = ''; + this.yAxis[1].visible = false; + this.yAxis[1].isDirty = true; + this.redraw(); + } else { + this.options.yAxis[1].title.text= '%'; + this.yAxis[1].visible = true; + this.yAxis[1].isDirty = true; + this.redraw(); + } + + } + } + }, + xAxis: { + type: 'datetime' + }, + yAxis: [{ //Primary Axis in default template + }, { // Secondary Axis + id: 'sector-axis', + gridLineWidth: 0, + title: { + text: '%' + }, + opposite: true + }], + exporting: { + chartOptions: { + legend: { + enabled: true + } + + } + } + } + }, + + filterFor: { + "filter_total_sector_oda": ['parentsector_code', 'year', 'oda'], + "filter_total_subsector_oda": ['parentsector_code', 'purposecode', 'year', 'oda'], + "filter_total_oda": ['year', 'oda'] + }, + + postProcess:[ + { + "name": "union", + "sid": [ + { + "uid": "total_sector_oda" + // RESULT OF PART 1: TOTAL ODA for the selected Sector + }, + { + "uid": "total_subsector_oda" + // RESULT OF PART 2: TOTAL ODA for the selected Sub Sector + }, + { + "uid": "total_oda" + // RESULT OF PART 3: TOTAL ODA for ALL Sectors + }, + { + "uid": "percentage_ODA" + // RESULT OF PART 4: PERCENTAGE CALCULATION (TOTAL ODA SUB SECTOR / TOTAL ODA for SECTOR x 100) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 5: UNION is the FINAL PART IN THE PROCESS + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: { + uid: "filter_total_sector_oda" + } + }, + // PART 1: TOTAL ODA FOR SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA FOR SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sector" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_sector_oda" + } + }, + // (1iii): TOTAL ODA FOR SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "60010" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + rid: { + uid: "filter_total_subsector_oda" + } + }, + // PART 2: TOTAL ODA FOR SUB SECTOR: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA FOR SUB SECTOR: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "ODA Sub Sector" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_subsector_oda" + } + }, + // (2iii): TOTAL ODA FOR SUB SECTOR: Add Column + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "year", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "purposecode": { + "codes": [ + { + "uid": "crs_purposes", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "donorcode": { + "codes": [ + { + "uid": "crs_donors", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "recipientcode": { + "codes": [ + { + "uid": "crs_recipients", + "version": "2016", + "codes": [ + "NA" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_total_oda" + } + }, + //PART 3: TOTAL ODA for ALL Sectors: (2i) Filter + { + "name": "group", + "parameters": { + "by": [ + "year" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + //(3ii): TOTAL ODA for ALL Sectors: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Total ODA" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "total_oda" + } + }, + //(3iii): TOTAL ODA for ALL Sectors: Add Column + { + "name": "join", + "sid": [ + { + "uid": "total_sector_oda" + }, + { + "uid": "total_subsector_oda" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "year" + } + ], + [ + { + "type": "id", + "value": "year" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process" + } + }, + // PART 4 PERCENTAGE CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1=1" + ], + "values": [ + "(total_subsector_oda_value/total_sector_oda_value)*100" + ] + } + }, + "rid": { + "uid": "percentage_Value" + } + }, + // (4ii) PERCENTAGE CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "year", + "value" + ], + "rows": {} + }, + "rid": { + "uid": "percentage_with_two_values" + } + }, + // (4iii) PERCENTAGE CALCULATION: filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "id": "unitcode", + "title": { + "EN": "Measurement Unit" + }, + "domain": { + "codes": [ + { + "idCodeList": "crs_units", + "version": "2016", + "level": 1 + } + ] + }, + "dataType": "code", + "subject": "um" + }, + "value": "percentage" + } + }, + // (4iv) PERCENTAGE CALCULATION: Add Column (Measurement Unit Code) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "% Sub Sector/Sector" + // PART 4 FINAL INDICATOR NAME + }, + "rid": { + "uid": "percentage_ODA" + } + } + // (4vi) PERCENTAGE CALCULATION: Add Column + ] + }, + { + id: 'top-partners', // TOP DONORS + type: 'chart', + config: { + type: "column", + x: ["donorname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "donorname" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-partners-others', // TOP RESOURCE PARTNERS Vs OTHER RESOURCE PARTNERS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#008080'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_donors_sum": ['parentsector_code', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_donors_sum" + // RESULT OF PART 1: TOTAL ODA for TOP 10 PARTNERS + }, + { + "uid": "others" + // RESULT OF PART 3: TOTAL ODA OTHERS CALCULATION (TOTAL ODA ALL PARTNERS (PART 2) - TOTAL ODA FOR TOP 10 Partners) + } + ], + "parameters": {}, + "rid": { + "uid": "union_process" + } + }, + // PART 4: UNION is the FINAL PART IN THE PROCESS + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "donorcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid": { + "uid": "filter_top_10_donors_sum" + } + }, + // PART 1: TOTAL ODA for TOP 10 PARTNERS: (1i) Filter + { + "name": "group", + "parameters": { + "by": [ + "donorcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + // (1ii): TOTAL ODA for TOP 10 PARTNERS: Group by + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + // (1iii): TOTAL ODA for TOP 10 PARTNERS: Order by + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + // (1iv): TOTAL ODA for TOP 10 PARTNERS: Limit + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (1vi): TOTAL ODA for TOP 10 PARTNERS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Resource Partners" + // PART 1 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_10_donors_sum" + } + }, + // (1vii): TOTAL ODA for TOP 10 PARTNERS: Add Column + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + // (2ii): TOTAL ODA for ALL PARTNERS: Group by + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all donors" + // PART 2 FINAL INDICATOR NAME + }, + "rid": { + "uid": "top_all_donors_sum" + } + }, + // (2iii): TOTAL ODA for ALL PARTNERS : Add Column + { + "name": "join", + "sid": [ + { + "uid": "top_all_donors_sum" + }, + { + "uid": "top_10_donors_sum" + } + ], + "parameters": { + "joins": [ + [ + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + ] + ], + "values": [] + }, + "rid": { + "uid": "join_process_total_donors" + } + }, + // PART 3: TOTAL ODA OTHERS CALCULATION: (3i) Join + { + "name": "addcolumn", + "sid": [ + { + "uid": "join_process_total_donors" + } + ], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": [ + "1 = 1" + ], + "values": [ + "top_all_donors_sum_value - top_10_donors_sum_value" + ] + } + } + }, + // (3ii): TOTAL ODA OTHERS CALCULATION: Add Column + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + // (3iii): TOTAL ODA OTHERS CALCULATION: Filter (filter out what is not needed) + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Resource Partners" + // PART 3 FINAL INDICATOR NAME + }, + "rid": { + "uid": "others" + } + } + // (3iv): TOTAL ODA OTHERS CALCULATION: Add Column + ] + }, + { + id: 'top-recipients', // TOP RECIPIENTS + type: 'chart', + config: { + type: "column", + x: ["recipientname"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "recipientname", "recipientcode" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-recipients-others', // TOP RECIPIENTS Vs OTHER RECIPIENTS + type: 'chart', + config: { + type: "pieold", + x: ["indicator"], //x axis and series + series: ["unitname"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#5DA58D'], + legend: { + title: { + text: null + } + }, + plotOptions: { + pie: { + showInLegend: true + }, + series: { + point: { + events: { + legendItemClick: function () { + return false; // <== returning false will cancel the default action + } + } + } + } + }, + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + }, + + filterFor: { + "filter_top_10_recipients_sum": ['parentsector_code', 'purposecode', 'year', 'oda'] + }, + + postProcess: [ + { + "name": "union", + "sid": [ + { + "uid": "top_10_recipients_sum" + }, + { + "uid":"others" + } + ], + "parameters": { + }, + "rid":{"uid":"union_process"} + }, + + { + "name": "filter", + "sid": [ + { + "uid": "adam_usd_aggregation_table" + } + ], + "parameters": { + "columns": [ + "recipientcode", + "value", + "unitcode" + ], + "rows": { + "oda": { + "enumeration": [ + "usd_commitment" + ] + }, + "parentsector_code": { + "codes": [ + { + "uid": "crs_dac", + "version": "2016", + "codes": [ + "600" + ] + } + ] + }, + "year": { + "time": [ + { + "from": 2000, + "to": 2014 + } + ] + } + } + }, + "rid":{"uid":"filter_top_10_recipients_sum"} + }, + { + "name": "group", + "parameters": { + "by": [ + "recipientcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + "queryParameters": [ + {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + {"value": '689'}, {"value": '619'}, {"value": '679'} + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + }, + "rid":{"uid":"filtered_dataset"} + }, + { + "name": "page", + "parameters": { + "perPage": 10, + "page": 1 + } + }, + { + "name": "group", + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Top Recipient Countries" + }, + "rid": { + "uid": "top_10_recipients_sum" + } + }, + { + "name": "group", + "sid":[{"uid":"filtered_dataset"}], + "parameters": { + "by": [ + "unitcode" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + } + + ] + } + }, + // NEED TO VERIFY HOW TO DO THIS + // { + // "name": "select", + // "parameters": { + // "query": "WHERE recipientcode NOT IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", // skipping regional recipient countries (e.g. "Africa, regional"; "North of Sahara, regional") + // "queryParameters": [ + // {"value": '298'}, {"value": '498'}, {"value": '798'}, {"value": '89'}, + // {"value": '589'}, {"value": '889'}, {"value": '189'}, {"value": '289'}, + // {"value": '389'}, {"value": '380'}, {"value": '489'}, {"value": '789'}, + // {"value": '689'}, {"value": '619'}, {"value": '679'} + // ] + // } + // }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "sum of all recipients" + }, + "rid": { + "uid": "top_all_recipients_sum" + } + }, + { + "name": "join", + "sid": [ + { + "uid": "top_all_recipients_sum" + }, + { + "uid": "top_10_recipients_sum" + } + ], + "parameters": { + "joins": [ + [ + + { + "type": "id", + "value": "unitcode" + } + ], + [ + { + "type": "id", + "value": "unitcode" + } + + ] + ], + "values": [ + ] + }, + "rid":{"uid":"join_process_total_recipients"} + }, + { + "name": "addcolumn", + "sid":[{"uid":"join_process_total_recipients"}], + "parameters": { + "column": { + "dataType": "number", + "id": "value", + "title": { + "EN": "Value" + }, + "subject": null + }, + "value": { + "keys": ["1 = 1"], + "values":["top_all_recipients_sum_value - top_10_recipients_sum_value"] + } + } + }, + { + "name": "filter", + "parameters": { + "columns": [ + "value", + "unitcode" + ] + } + }, + { + "name": "addcolumn", + "parameters": { + "column": { + "dataType": "text", + "id": "indicator", + "title": { + "EN": "Indicator" + }, + "domain": { + "codes": [ + { + "extendedName": { + "EN": "Adam Processes" + }, + "idCodeList": "adam_processes" + } + ] + }, + "subject": null + }, + "value": "Other Recipients" + }, + "rid": { + "uid": "others" + } + } + ] + }, + { + id: 'top-channel-categories', // TOP CHANNEL OF DELIVERY CATEGORIES + type: 'chart', + config: { + type: "column", + x: ["channelsubcategory_name"], //x axis + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + colors: ['#56adc3'], + legend: { + title: { + text: null + } + }, + plotOptions: { + column: { + events: { + legendItemClick: function () { + return false; + } + } + }, + allowPointSelect: false + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "channelsubcategory_code", "channelsubcategory_name" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'top-subsectors', // TOP SUB SECTORS + type: 'chart', + config: { + type: "pieold", + x: ["purposename"], //x axis and series + series: ["flowcategory_name"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: false,// || default raw else fenixtool + + config: { + chart: { + events: { + load: function (event) { + if (this.options.chart.forExport) { + Highcharts.each(this.series, function (series) { + series.update({ + dataLabels: { + enabled: false + } + }, false); + }); + this.redraw(); + } + } + } + + }, + tooltip: { + style: {width: '200px', whiteSpace: 'normal'}, + formatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '' + this.percentage.toFixed(2) + '% (' + val + ')'; + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + } + } + + }, + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: "2000", parent: 'from'}, {value: "2014", parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "purposename" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["flowcategory_name"], + "rule": "first" + } + ] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + }, + { + "name": "page", + "parameters": { + "perPage": 10, //top 10 + "page": 1 + } + }] + }, + { + id: 'oda-regional', // REGIONAL DISTRIBUTION + type: 'chart', + config: { + type: "column", + x: ["unitcode"], //x axis + series: ["un_continent_code"], // series + y: ["value"],//Y dimension + aggregationFn: {"value": "sum"}, + useDimensionLabelsIfExist: true,// || default raw else fenixtool + + config: { + chart: { + inverted: true + }, + plotOptions: { + series: { + stacking: 'percent', + dataLabels: { + enabled: true, + color: 'white', + style: { + fontWeight: 'normal', + textShadow: '0' + }, + formatter: function () { + var percent = Math.round(this.point.percentage); + if (percent > 0) + return Math.round(this.point.percentage) + '%'; + else + return this.point.percentage.toFixed(2) + '%'; + } + } + }, + column: { + minPointLength: 5 + } + }, + exporting: { + buttons: { + toggleDataLabelsButton: { + enabled: false + } + }, + chartOptions: { + legend: { + title: '', + enabled: true, + useHTML: true, + labelFormatter: function () { + return '
' + this.name + ' (' + this.yData + ' USD Mil)
'; + } + } + } + }, + yAxis: { + min: 0, + title: { + text: '%', + align: 'high' + } + }, + xAxis: { + labels: { + enabled: false + } + }, + tooltip: { + formatter: function () { + var percent = Math.round(this.point.percentage); + + if (percent < 1) + percent = this.point.percentage.toFixed(2); + + return '' + this.series.name + ':' + '
' + ' ' + percent + '% ' + + ' (' + Highcharts.numberFormat(this.y, 2, '.', ',') + ' USD Mil)' + } + } + } + }, + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "unitcode", "un_continent_code" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE un_continent_code<>?", + "queryParameters": [{"value": ''}] + } + }, + { + "name": "order", + "parameters": { + "value": "DESC" + } + } + ] + }, + { + id: 'country-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filter: { //FX-filter format + parentsector_code: ["600"], + year: [{value: 2000, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ] + } + ] + } + } +}); \ No newline at end of file diff --git a/config/browse/config.js b/config/browse/config.js deleted file mode 100644 index 75fab516..00000000 --- a/config/browse/config.js +++ /dev/null @@ -1,3887 +0,0 @@ -/*global define*/ - -define(function () { - - 'use strict'; - - return { - - SECONDARY_MENU: { - url: 'config/browse/secondary_menu.json' - }, - - "sector": { - - download: { - "target": "6.PROTECTIVE FUNCTIONS AND SELECTIVE ECOSYSTEM SERVICES.zip" - }, - - filter: [ - { - "type": "distinct", - "uid": "FLUDE_TOPIC_6", - "column": "indicator", - "containerType": "baseContainer", - "title": "Indicator", - "defaultCodes": ["SoilWatProt"], - "components": [ - { - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "uid" : "FLUDE_INDICATORS", - "title": {"EN": "Distinct"}, - // name is the ID output in tehe filter getValues() - "name": "indicator", - "config": { - "defaultsource": [] - } - } - ] - }, - { - "type": "static", - "containerType": "baseContainer", - "title": "Year", - "components": [ - { - "type": "time", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Year"}, - "name": "year", - config: { - "defaultsource": [ - {"value": "2015", "label": "2015", "selected": true}, - {"value": "2010", "label": "2010", "selected": false}, - {"value": "2005", "label": "2005", "selected": false}, - {"value": "2000", "label": "2000", "selected": false}, - {"value": "1990", "label": "1990", "selected": false} - ] - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Domains", - "components": [ - { - "uid": "FLUDE_DOMAINS", - "type": "codelist", - "name": "domain", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - //{"value": null, "label": "All", "selected": true, "removeFilter": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Incomes", - "components": [ - { - "uid": "FLUDE_INCOMES", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "incomes", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Subregions", - "components": [ - { - "uid": "FLUDE_SUBREGIONS", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "subregion", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - } - ], - - dashboard: { - //data cube's uid - uid: "FLUDE_TOPIC_6", - - //data base filter - filter: [], - - //bridge configuration - bridge: { - - type: "d3p" - - }, - - /* - * in case bridge is WDS this is the cube metadata. - * if bridge is D3P this is ignored - * */ - metadata: {}, - - items: [ - { - id: 'item-1', - type: 'map', - class: "fx-map-chart", - //needed if layout = injected - container: "#item-1", - config: { - container: "#item-1" , - leaflet: { - zoomControl: false, - attributionControl: true, - scrollWheelZoom: false, - minZoom: 2 - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - } - ] - }, - { - id: 'item-2', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-2", - config: { - container: "#item-2", - adapter: { - type: "standard", - xDimensions: 'time', - yDimensions: 'element', - valueDimensions: 'value', - seriesDimensions: ['country'] - }, - template: { - //"title": "Top 25..." - }, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "order", - "parameters": { - "value": "DESC" - } - }, - { - "name": "page", - "parameters": { - "perPage": 25, - "page": 1 - } - } - ] - }, - { - id: 'item-3', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-3", - config: { - container: "#item-3", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-4', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-4", - config: { - container: "#item-4", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC" - } - } - ] - }, - { - id: 'item-5', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-5", - config: { - container: "#item-5", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-6', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-6", - config: { - container: "#item-6", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC" - } - } - ] - }, - - { - id: 'item-7', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-7", - config: { - container: "#item-7", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-8', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-8", - config: { - container: "#item-8", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC" - } - } - ] - }, - - { - id: 'item-9', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-9", - config: { - container: "#item-9", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC", - "year": "ASC" - } - } - ] - }, - - { - id: 'item-10', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-10", - config: { - container: "#item-10", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "SoilWatProt" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC" - } - } - ] - } - - - ] - } - }, - - "country_sector": { - download: { - "target": "1.FOREST AREA AND CHARACTERISTICS.zip" - }, - - filter: [ - { - "type": "distinct", - "uid": "FLUDE_TOPIC_1", - "column": "indicator", - "containerType": "baseContainer", - "title": "Indicator", - "defaultCodes": ["Forest"], - "components": [ - { - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "uid" : "FLUDE_INDICATORS", - "title": {"EN": "Distinct"}, - // name is the ID output in tehe filter getValues() - "name": "indicator", - "config": { - "defaultsource": [] - } - - } - ] - }, - { - "type": "static", - "containerType": "baseContainer", - "title": "Year", - "components": [ - { - "type": "time", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Year"}, - "name": "year", - config: { - "defaultsource": [ - {"value": "2015", "label": "2015", "selected": true}, - {"value": "2010", "label": "2010", "selected": false}, - {"value": "2005", "label": "2005", "selected": false}, - {"value": "2000", "label": "2000", "selected": false}, - {"value": "1990", "label": "1990", "selected": false} - ] - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Domains", - "components": [ - { - "uid": "FLUDE_DOMAINS", - "type": "codelist", - "name": "domain", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - //{"value": null, "label": "All", "selected": true, "removeFilter": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Incomes", - "components": [ - { - "uid": "FLUDE_INCOMES", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "incomes", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Subregions", - "components": [ - { - "uid": "FLUDE_SUBREGIONS", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "subregion", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - } - ], - - dashboard: { - //data cube's uid - uid: "FLUDE_TOPIC_1", - - //data base filter - filter: [], - - //bridge configuration - bridge: { - - type: "d3p" - - }, - - /* - * in case bridge is WDS this is the cube metadata. - * if bridge is D3P this is ignored - * */ - metadata: {}, - - items: [ - { - id: 'item-1', - type: 'map', - class: "fx-map-chart", - //needed if layout = injected - container: "#item-1", - config: { - container: "#item-1", - leaflet: { - zoomControl: false, - attributionControl: true, - scrollWheelZoom: false, - minZoom: 2 - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - forbiddenValues: { - year: {time: [{from: 2015, to: 2015}]}, - domain: {removeFilter: true} - }, - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - } - ] - }, - { - id: 'item-2', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-2", - config: { - container: "#item-2", - adapter: { - type: "standard", - xDimensions: 'time', - yDimensions: 'element', - valueDimensions: 'value', - seriesDimensions: ['country'] - }, - template: { - //"title": "Top 25..." - }, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "order", - "parameters": { - "value": "DESC" - } - }, - { - "name": "page", - "parameters": { - "perPage": 25, - "page": 1 - } - } - ] - }, - { - id: 'item-3', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-3", - config: { - container: "#item-3", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-4', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-4", - config: { - container: "#item-4", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //enable : false - text: '' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC" - } - } - ] - }, - { - id: 'item-5', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-5", - config: { - container: "#item-5", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - crosshairs: "mixed", - shared: true - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-6', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-5", - config: { - container: "#item-6", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-7', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-7", - config: { - container: "#item-7", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-8', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-8", - config: { - container: "#item-8", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC" - } - } - ] - }, - { - id: 'item-9', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-9", - config: { - container: "#item-9", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC" - } - } - ] - }, - { - id: 'item-10', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-10", - config: { - container: "#item-10", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "Forest" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC" - } - } - ] - } - ] - } - }, - - "donor_sector": { - - download: { - "target": "2.PRODUCTION.zip" - }, - - filter: [ - { - "type": "distinct", - "uid": "FLUDE_TOPIC_2", - "column": "indicator", - "containerType": "baseContainer", - "title": "Indicator", - "defaultCodes": ["ProdFor"], - "components": [ - { - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "uid" : "FLUDE_INDICATORS", - "title": {"EN": "Distinct"}, - // name is the ID output in tehe filter getValues() - "name": "indicator", - "config": { - "defaultsource": [] - } - } - ] - }, - { - "type": "static", - "containerType": "baseContainer", - "title": "Year", - "components": [ - { - "type": "time", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Year"}, - "name": "year", - config: { - "defaultsource": [ - {"value": "2015", "label": "2015", "selected": true}, - {"value": "2010", "label": "2010", "selected": false}, - {"value": "2005", "label": "2005", "selected": false}, - {"value": "2000", "label": "2000", "selected": false}, - {"value": "1990", "label": "1990", "selected": false} - ] - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Domains", - "components": [ - { - "uid": "FLUDE_DOMAINS", - "type": "codelist", - "name": "domain", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - //{"value": null, "label": "All", "selected": true, "removeFilter": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Incomes", - "components": [ - { - "uid": "FLUDE_INCOMES", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "incomes", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Subregions", - "components": [ - { - "uid": "FLUDE_SUBREGIONS", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "subregion", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - } - ], - - dashboard: { - //data cube's uid - uid: "FLUDE_TOPIC_2", - - //data base filter - filter: [], - - //bridge configuration - bridge: { - - type: "d3p" - - }, - - /* - * in case bridge is WDS this is the cube metadata. - * if bridge is D3P this is ignored - * */ - metadata: {}, - - items: [ - { - id: 'item-1', - type: 'map', - class: "fx-map-chart", - //needed if layout = injected - container: "#item-1", - config: { - container: "#item-1", - leaflet: { - zoomControl: false, - attributionControl: true, - scrollWheelZoom: false, - minZoom: 2 - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - } - ] - }, - { - id: 'item-2', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-2", - config: { - container: "#item-2", - adapter: { - type: "standard", - xDimensions: 'time', - yDimensions: 'element', - valueDimensions: 'value', - seriesDimensions: ['country'] - }, - template: { - //"title": "Top 25..." - }, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "order", - "parameters": { - "value": "DESC" - } - }, - { - "name": "page", - "parameters": { - "perPage": 25, - "page": 1 - } - } - ] - }, - { - id: 'item-3', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-3", - config: { - container: "#item-3", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-7', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-7", - config: { - container: "#item-7", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC" - } - } - ] - }, - { - id: 'item-4', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-4", - config: { - container: "#item-4", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-5', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-5", - config: { - container: "#item-5", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-6', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-6", - config: { - container: "#item-6", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-8', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-8", - config: { - container: "#item-8", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC" - } - } - ] - }, - { - id: 'item-9', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-9", - config: { - container: "#item-9", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": [ - "um" - ], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC" - } - } - ] - }, - { - id: 'item-10', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-10", - config: { - container: "#item-10", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2015, - "to": 2015 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "ProdFor" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC" - } - } - ] - } - ] - } - }, - - "country_donor_sector": { - - download: { - "target": "3.DISTURBANCE AND FOREST DEGRADATION.zip" - }, - - filter: [ - { - "type": "distinct", - "uid": "FLUDE_TOPIC_3", - "column": "indicator", - "containerType": "baseContainer", - "title": "Indicator", - "defaultCodes": ["InvSppAreaToT"], - "components": [ - { - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "uid" : "FLUDE_INDICATORS", - "title": {"EN": "Distinct"}, - // name is the ID output in tehe filter getValues() - "name": "indicator", - "config": { - "defaultsource": [] - } - } - ] - }, - { - "type": "static", - "containerType": "baseContainer", - "title": "Year", - "components": [ - { - "type": "time", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Year"}, - "name": "year", - config: { - "defaultsource": [ - {"value": "2010", "label": "2010", "selected": true}, - {"value": "2005", "label": "2005", "selected": false}, - {"value": "2000", "label": "2000", "selected": false}, - {"value": "1990", "label": "1990", "selected": false} - ] - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Domains", - "components": [ - { - "uid": "FLUDE_DOMAINS", - "type": "codelist", - "name": "domain", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - //{"value": null, "label": "All", "selected": true, "removeFilter": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Incomes", - "components": [ - { - "uid": "FLUDE_INCOMES", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "incomes", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true}, - ], - "enableMultiselection": true - } - } - ] - }, - { - "type": "codelist", - "containerType": "baseContainer", - "title": "Subregions", - "components": [ - { - "uid": "FLUDE_SUBREGIONS", - "type": "codelist", - "componentType": "dropDownList-FENIX", - "lang": "EN", - "title": {"EN": "Codelist"}, - "name": "subregion", - config: { - "defaultsource": [ - //{"value": null, "label": "All", "selected": true} - ], - "enableMultiselection": true - } - } - ] - } - ], - - dashboard: { - //data cube's uid - uid: "FLUDE_TOPIC_3", - - //data base filter - filter: [], - - //bridge configuration - bridge: { - - type: "d3p" - - }, - - /* - * in case bridge is WDS this is the cube metadata. - * if bridge is D3P this is ignored - * */ - metadata: {}, - - items: [ - { - id: 'item-1', - type: 'map', - class: "fx-map-chart", - //needed if layout = injected - container: "#item-1", - config: { - container: "#item-1", - leaflet: { - zoomControl: false, - attributionControl: true, - scrollWheelZoom: false , - minZoom: 2 - } - - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - } - ] - }, - - - { - id: 'item-2', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-2", - config: { - container: "#item-2", - adapter: { - type: "standard", - xDimensions: 'time', - yDimensions: 'element', - valueDimensions: 'value', - seriesDimensions: ['country'] - }, - template: { - //"title": "Top 25..." - }, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year', 'domain', 'incomes', 'subregion'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "order", - "parameters": { - "value": "DESC" - } - }, - { - "name": "page", - "parameters": { - "perPage": 25, - "page": 1 - } - } - ] - }, - { - id: 'item-3', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-3", - config: { - container: "#item-3", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-7', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-7", - config: { - container: "#item-7", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['region'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "region", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "region": "ASC" - } - } - ] - }, - { - id: 'item-4', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-4", - config: { - container: "#item-4", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-5', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-5", - config: { - container: "#item-5", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-6', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-6", - config: { - container: "#item-6", - adapter: { - type: "standard", - xDimensions: 'year', - yDimensions: 'indicator', - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 1990, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "year", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC", - "year": "ASC" - } - } - ] - }, - { - id: 'item-8', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-8", - config: { - container: "#item-8", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['subregion'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "subregion", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "subregion": "ASC" - } - } - ] - }, - { - id: 'item-9', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-9", - config: { - container: "#item-9", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['domain'] - }, - template: {}, - creator: { - chartObj: { - chart: { - type: "column" - }, - tooltip: { - valueSuffix: ' 1000 HA' - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "domain", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "domain": "ASC" - } - } - ] - }, - { - id: 'item-10', - type: 'chart', - class: "fx-timeseries-ecample", - //needed if layout = injected - container: "#item-10", - config: { - container: "#item-10", - adapter: { - type: "pie", - valueDimensions: 'value', - seriesDimensions: ['incomes'] - }, - template: {}, - creator: { - chartObj: { - chart: { - plotBackgroundColor: null, - plotBorderWidth: null, - plotShadow: false, - type: 'pie' - }, - title: { - //text: 'Browser market shares January, 2015 to May, 2015' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - dataLabels: { - enabled: true - }, - showInLegend: true - } - } - } - } - }, - // for now it takes the id, TODO: add uid as well - allowedFilter: ['indicator', 'year'], - filter: [ - { - "name": "filter", - "parameters": { - "rows": { - "year": { - "time": [ - { - "from": 2010, - "to": 2010 - } - ] - }, - "indicator": { - "codes": [ - { - "uid": "FLUDE_INDICATORS", - "codes": [ - "InvSppAreaToT" - ] - } - ] - } - } - } - }, - { - "name": "group", - "parameters": { - "by": [ - "incomes", "indicator" - ], - "aggregations": [ - { - "columns": ["value"], - "rule": "AVG" - }, - { - "columns": ["um"], - "rule": "FIRST" - } - ] - } - }, - { - "name": "order", - "parameters": { - "incomes": "ASC" - } - } - ] - } - - - ] - } - } - - } - - - -}); \ No newline at end of file diff --git a/config/browse/flude-topics.json b/config/browse/flude-topics.json deleted file mode 100644 index fe7974bf..00000000 --- a/config/browse/flude-topics.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "multiple" : false, - "width" : "99%", - "data": [ - { - "id": "FLUDE_TOPIC_1", - "text": "Forest Area and Characteristics " - }, - { - "id": "FLUDE_TOPIC_2", - "text": "Production" - }, - { - "id": "FLUDE_TOPIC_3", - "text": "Disturbance and Forest Degradation" - }, - { - "id": "FLUDE_TOPIC_4", - "text": "Measuring Progress towards SFM" - }, - { - "id": "FLUDE_TOPIC_5", - "text": "Biodiversity and Conservation" - }, - { - "id": "FLUDE_TOPIC_6", - "text": "Protective Functions and Selective Ecosystem Services" - }, - { - "id": "FLUDE_TOPIC_7", - "text": "Economics/Livelihood" - }, - { - "id": "FLUDE_TOPIC_8", - "text": "Ownership" - }, - { - "id": "ANNUAL_DATA", - "text": "Annual Data" - } - ] -} \ No newline at end of file diff --git a/config/browse/lateral_menu.json b/config/browse/lateral_menu.json deleted file mode 100644 index 8bef67b9..00000000 --- a/config/browse/lateral_menu.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "core": { - "multiple": false, - "data": [ - { - "id": "demographic", - "text": "Demographic and social stats", - "state" : { - "opened" : true - }, - "children": [ - { - "id": "population", - "text": "Population" - }, - { - "id": "education", - "text": "Education" - }, - { - "id": "health", - "text": "Health" - }, - { - "id": "labour", - "text": "Labour" - } - ] - }, - { - "id": "economics", - "text": "Economic statistics", - "state" : { - "opened" : true - }, - "children": [ - { - "id": "balance_of_payments", - "text": "Balance of Payments" - }, - - - { - "id": "gdp", - "text": "GDP" - }, - - { - "id": "monetary_statistics", - "text": "Monetary Statistics" - }, - { - "id": "financial_flows", - "text": "Financial Flows" - }, - { - "id": "public_finance", - "text": "Public Finance" - }, - { - "id": "debt", - "text": "Debt" - }, - { - "id": "inflation", - "text": "Inflation" - }, - { - "id": "energy", - "text": "Energy" - }, - { - "id": "tourism", - "text": "Tourism" - }, - { - "id": "infrastructure", - "text": "Infrastructure" - } - - ] - } - ] - }, - "plugins": [ - "checkbox", - "wholerow" - ] -} \ No newline at end of file diff --git a/config/browse/resume_countries.json b/config/browse/resume_countries.json deleted file mode 100644 index b651918c..00000000 --- a/config/browse/resume_countries.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "DZA": { - "title": "Algeria", - "flag": "", - "gaul_code": "4", - "area": "2381741", - "capital_city": "Algiers", - "currency": "Algerian Dinar" - }, - "AGO": { - "title": "Angola", - "flag": "", - "gaul_code": "8", - "area": "1246700", - "capital_city": "Luanda", - "currency": "Angola Kwanza" - }, - "BEN": { - "title": "Benin", - "flag": "", - "gaul_code": "29", - "area": "114763", - "capital_city": "Porto Novo", - "currency": "CFA Franc" - }, - "BWA": { - "title": "Botswana", - "flag": "", - "gaul_code": "35", - "area": "581730", - "capital_city": "Gaborone", - "currency": "Botswana Pula" - }, - "BFA": { - "title": "Burkina Faso", - "flag": "", - "gaul_code": "42", - "area": "274000", - "capital_city": "Ouagadougou", - "currency": "CFA Franc" - }, - "COD": { - "title": "Congo, Dem. Republic", - "flag": "", - "gaul_code": "68", - "area": "2345409", - "capital_city": "Kinshasa", - "currency": "Congolese Franc" - }, - "EGY": { - "title": "Egypt", - "flag": "", - "gaul_code": "40765", - "area": "1001449", - "capital_city": "Cairo ", - "currency": "Egyptian Pound" - }, - "KEN": { - "title": "Kenya", - "flag": "", - "gaul_code": "133", - "area": "610000", - "capital_city": "Nairobi", - "currency": "Kenyan Shilling" - }, - "SEN": { - "title": "Senegal", - "flag": "", - "gaul_code": "217", - "area": "196722", - "capital_city": "Dakar", - "currency": "CFA Franc" - }, - "ETH": { - "title": "Ethiopia", - "flag": "", - "gaul_code": "79", - "area": "1104300", - "capital_city": "Addis Ababa", - "currency": "Ethiopian Birr" - }, - "TZA": { - "title": "Tanzania", - "flag": "", - "gaul_code": "257", - "area": "945090", - "capital_city": "Dar es Salaam", - "currency": "Tanzanian Shilling" - }, - "UGA": { - "title": "Uganda", - "flag": "", - "gaul_code": "253", - "area": "241550.7", - "capital_city": "Kampala", - "currency": "Uganda Shilling" - }, - "NGA": { - "title": "Nigeria", - "flag": "", - "gaul_code": "182", - "area": "923768", - "capital_city": "Abuja", - "currency": "Naira" - }, - "COG": { - "title": "Congo", - "flag": "", - "gaul_code": "59", - "area": "342000", - "capital_city": "Brazzaville", - "currency": "CFA Franc" - }, - "BDI": { - "title": "Burundi", - "flag": "", - "gaul_code": "43", - "area": "27834", - "capital_city": "Bujumbura", - "currency": "Burundi Franc" - }, - "CMR": { - "title": "Cameroon", - "flag": "", - "gaul_code": "45", - "area": "475650", - "capital_city": "Yaounde", - "currency": "CFA Franc" - }, - "CPV": { - "title": "Cabo Verde", - "flag": "", - "gaul_code": "47", - "area": "4033", - "capital_city": "Praia", - "currency": "Escudo" - }, - "CAF": { - "title": "Central African Republic", - "flag": "", - "gaul_code": "49", - "area": "622984", - "capital_city": "Bangui", - "currency": "CFA Franc" - } - - -} diff --git a/config/event_category.js b/config/event_category.js deleted file mode 100644 index c2140c7a..00000000 --- a/config/event_category.js +++ /dev/null @@ -1,6 +0,0 @@ -define({ - "1":"AFO technical workshops", - "2":"AFO conferences & events", - "3":"AFO partners' events", - "4":"AFO partners' corner" -}); \ No newline at end of file diff --git a/config/home/home-config.js b/config/home/home-config.js new file mode 100644 index 00000000..71457e98 --- /dev/null +++ b/config/home/home-config.js @@ -0,0 +1,94 @@ +/*global define*/ + +define(function () { + + 'use strict'; + + return { + + dashboard: { + //default dataset id + uid: "adam_usd_commitment", + + items: [ + { + id: 'home-map', + type: 'map', + config: { + geoSubject: 'gaul0', + colorRamp: 'Blues',//'GnBu', //Blues, Greens, + //colorRamp values: http://fenixrepo.fao.org/cdn/fenix/fenix-ui-map-datasets/colorramp.png + + legendtitle: 'ODA 2014', + + fenix_ui_map: { + + plugins: { + fullscreen: false, + disclaimerfao: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + + baselayers: { + "cartodb": { + title_en: "Baselayer", + url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', + subdomains: 'abcd', + maxZoom: 19 + } + }, + labels: true, + boundaries: true + } + }, + + filter: { //FX-filter format + //parentsector_code: ["600"], + year: [{value: 2014, parent: 'from'}, {value: 2014, parent: 'to'}] + }, + //["10019", 94.14012907569995, "160", 5 more...] + //[ "10019", "160", "million_usd", "Million USD", "Upper Middle Income Countries and Territories + // (UMICs)", "Mauritius", "Million USD" ] + postProcess: [ + { + "name": "group", + "parameters": { + "by": [ + "gaul0" + ], + "aggregations": [ + { + "columns": ["value"], + "rule": "SUM" + }, + { + "columns": ["unitcode"], + "rule": "first" + }, + { + "columns": ["unitname"], + "rule": "first" + } + ] + } + }, + { + "name": "select", + "parameters": { + "query": "WHERE gaul0<>?", + "queryParameters": [{"value": "NA"}] + } + } + ]// + } + ] + } + } + + + +}); \ No newline at end of file diff --git a/config/home/test-data.js b/config/home/test-data.js new file mode 100644 index 00000000..ec0dec58 --- /dev/null +++ b/config/home/test-data.js @@ -0,0 +1,34 @@ +define(function() { + return [ + ["152","Malawi",10016,"LDCs"], + ["152","Malawi",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["205","Rwanda",10016,"LDCs"], + ["217","Senegal",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["270","Zambia",10016,"LDCs"], + ["270","Zambia",10016,"LDCs"], + ["270","Zambia",10016,"LDCs"], + ["42","Burkina Faso",10016,"LDCs"], + ["90","Gambia",10016,"LDCs"], + ["105","Guinea-Bissau",10016,"LDCs"], + ["155","Mali",10016,"LDCs"], + ["155","Mali",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["181","Niger",10016,"LDCs"], + ["205","Rwanda",10016,"LDCs"], + ["205","Rwanda",10016,"LDCs"], + ["221","Sierra Leone",10016,"LDCs"], + ["257","United Republic of Tanzania",10016,"LDCs"], + ["270","Zambia",10016,"LDCs"], + ["180","Nicaragua",10018,"LMICs"], + ["180","Nicaragua",10018,"LMICs"] + ]; +}); \ No newline at end of file diff --git a/config/submodules/fx-chart/highcharts_template.js b/config/submodules/fx-chart/highcharts_template.js index 4ad4417a..af74132d 100644 --- a/config/submodules/fx-chart/highcharts_template.js +++ b/config/submodules/fx-chart/highcharts_template.js @@ -5,262 +5,397 @@ define(function () { return { - //Line chart chart: { - events: {}, - - type: 'line', //Tipo di grafico: area, areaspline, boxplot, bubble, column, line, pie, scatter, spline - - alignTicks: false, - backgroundColor: '#FFFFFF', //Colore di background - //borderColor: '#3fa8da', //Colore bordo intorno - //borderWidth: 1, //Spessore bordo intorno - //borderRadius: 0, //Smusso bordo intorno - //margin: [5,5,5,5], //Margine intorno (vince sullo spacing) - spacing: [20, 1, 1, 1],//Spacing intorno (molto simile al margin - Di default il bottom è 15, qui l'ho messo a 10 per essere uguale agli altri) - //plotBackgroundColor: 'red', //Colore di background solo area chart - plotBorderColor: '#ffffff', //Colore bordo intorno solo area chart - plotBorderWidth: 0, //Spessore bordo intorno solo area chart - //showAxes: false, //Mostra gli assi quando le serie sono aggiunte dinamicamente - style: { - fontFamily: 'FrutigerLTW02-45Light', // Font di tutto - fontSize: '12px', // La dimensione qui vale solo per i titoli - fontWeight: 300 // Con Roboto è molto bello giocare con i pesi - }, - zoomType: 'xy', //Attiva lo zoom e stabilisce in quale dimensione - //selectionMarkerFill: 'rgba(0,0,0,0.25)',//Colore di fonfo della selezione per lo zoom (trasparente per far vedere sotto) + //spacing: [10, 10, 27, 10], // better spacing when chart exports + spacing: [10, 10, 27, 10], // was [10, 10, 15, 10] + events: { + load: function (event) { + + Highcharts.setOptions({ + lang: { + toggleDataLabels: 'Display/hide values on the chart', + printDownload: 'Print and Download chart options' + } + }); + + // if(this.series.length < 2){ + // $.each(this.series, function (i, serie) { + // serie.update({ + // showInLegend: false + // }) + // }); + //this.redraw(); + // } + + if (this.options.chart.forExport) { + this.xAxis[0].update({ + categories: this.xAxis[0].categories, + labels: { + style: { + width: '50px', + fontSize: '6px' + }, + step: 1 + } + }, false); + + Highcharts.each(this.yAxis, function (y) { + y.update({ + title: { + style: { + fontSize: '6px' + } + }, + labels: { + style: { + fontSize: '6px' + } + } + }, false); + }); + $.each(this.series, function (i, serie) { + if(!serie.visible){ + serie.update({ + showInLegend: false + }) + } else { + if(serie.options.dataLabels.enabled){ + serie.update({ + marker : { + radius: 2 + }, + dataLabels: { + enabled: true, + style: { + fontSize: '6px' + } + } + }) + } else { + serie.update({ + marker: { + radius: 2 + } + }) + } + } + }); - resetZoomButton: { - position: { - align: 'right', //Allineamento zoom orizzontale - //verticalAlign:'middle' //Allineamento zoom verticale - x: -10 //Posizione del pulsante rispetto all'allineamento (valori positivi > destra) e al PLOT + /** Highcharts.each(this.series, function (series) { + series.update({ + marker : { + radius: 2 + }, + dataLabels: { + enabled: true, + style: { + fontSize: '6px', + color: series.color, + textShadow: 0 + } + } + }, false); + + });**/ + this.redraw(); + } }, - theme: { - fill: '#FFFFFF', //Colore di background pulsante reset zoom - stroke: '#666666', //Colore di stroke pulsante reset zoom - width: 60, //Larghezza del pulsante reset - //r:0, //Smusso pulsante reset zoom - style: { - textAlign: 'center', //CSS style aggiunto da me per centrare il testo - fontSize: 10 - }, - states: { - hover: { - fill: '#e6e6e6', //Colore di background hover pulsante reset zoom - stroke: '#666666', //Colore di stroke hover pulsante reset zoom - style: { - //color: 'white' //Colore testo hover pulsante reset zoom - } + beforePrint: function (event) { + var $chart = $(this.renderTo); + + var parent = $(this.renderTo).parent().prev(); + var title = parent.find("p").text(); + + //Set chart title and set subtitle to empty string + this.setTitle( + {text: title, style: { + fontSize: '12px' + }}, {text: ""}); + + //Only show in the legend the series that are visible + $.each(this.series, function (i, serie) { + if(!serie.visible){ + serie.update({ + showInLegend: false + }) } + }); + + + if(this.options.chart.type === 'pie') { + // Configure printing of pie charts + /** this.options.exporting = { + chartOptions: { + legend: { + title: '', + enabled: true, + align: 'center', + layout: 'vertical', + useHTML: true, + labelFormatter: function () { + var val = this.y; + if (val.toFixed(0) < 1) { + val = (val * 1000).toFixed(2) + ' K' + } else { + val = val.toFixed(2) + ' USD Mil' + } + + return '
' + this.name.trim() + ': ' + this.percentage.toFixed(2) + '% (' + val + ')
'; + } + } + } + }**/ } + + //Hide buttons and legend title + $chart.find('.highcharts-button').hide(); + $chart.find('.highcharts-legend-title').hide(); + }, + afterPrint: function (event) { + var $chart = $(this.renderTo); + + //Reset series availability in legend, if it was hidden + $.each(this.series, function (i, serie) { + if(!serie.visible){ + serie.update({ + showInLegend: true + }) + } + }); + + //Reset title and subtitle + this.setTitle( + {text: ""}, {text: "Hover for values and click and drag to zoom"}); + + //Re-show buttons and legend title + $chart.find('.highcharts-button').show(); + $chart.find('.highcharts-legend-title').show(); } } + }, - colors: [ //Colori delle charts - - '#0D6CAC', - '#D5E4EB', - '#356B76', - '#5895BE', - '#e19a0e', - '#bf4343' - ], + credits: { - enabled: false //Attiva o disattiva il link di HighCharts dalla chart + enabled: true, + position: { + align: 'left', + x: 5 + }, + text: 'Source: OECD-CRS', + href: '' }, + exporting: { + sourceWidth: 700, buttons: { contextButton: { - menuItems: [{ - textKey: 'downloadPNG', - onclick: function () { - this.exportChart(); + + text: "Print/Download", + _titleKey: "printDownload", + symbol: null + + //, menuItems: [{ + // textKey: 'downloadPNG', + // onclick: function () { + // this.exportChart(); + // } + // }, { + // textKey: 'downloadJPEG', + // onclick: function () { + // this.exportChart({ + // type: 'image/jpeg' + // }); + // } + // }] + }, + toggleDataLabelsButton: { + text: "Display Values", + _titleKey: "toggleDataLabels", + onclick: function (){ + + var button = this.exportSVGElements[2], + $button = $(button.element.lastChild), + text = $button.text() == "Display Values" ? "Hide Values" : "Display Values"; + + button.attr({ + text: text + }); + + for(var idx = 0; idx < this.series.length; idx++){ + var opt = this.series[idx].options; + var isShown = !opt.dataLabels.enabled; + this.series[idx].update({dataLabels: {enabled: isShown, style: { + // fontSize: '7px', + color: this.series[idx].color, + textShadow: 0 + }}}); } - }, { - textKey: 'downloadJPEG', - onclick: function () { - this.exportChart({ - type: 'image/jpeg' - }); + + } + }//, + // customPrintButton: { + // text: "Print", + // symbol: "url(/demo/gfx/sun.png)", + // _titleKey: "toggleDataLabels", + // onclick: function (){ + // var $chart = $(this.renderTo); + // var highchartObj = $chart.highcharts(); + + // highchartObj.print(); + + // } + // } + }, + + + chartOptions: { + + xAxis: { + labels: { + y: 15, + style: { + fontSize: '6px' } - }] - } - } - }, - navigation: { //Modifica lo stile dei bottoni e spesso del solo bottone dell'esportazione (lo sfondo) - buttonOptions: { - theme: { - 'stroke-width': 1, // Peso stroke del bottone - stroke: '#666666', // Colore stroke del bottone - r: 0, // Smusso stroke del bottone, - states: { - hover: { - stroke: '#666666', // Press stroke del bottone - fill: '#e6e6e6' // Rollover del bottone - }, - select: { - stroke: '#666666', // Press stroke del bottone - fill: '#e6e6e6' // Press Fill del bottone + } + }, + yAxis: { + title: { + style: { + fontSize: '7px' + } + }, + labels: { + style: { + fontSize: '6px' } } - } - } - }, - legend: { //Modifica style della legenda - enabled: true, //Attiva la legenda - floating: false, // IMPORTANTE - Permette alla plot area di stare sotto alla legenda - si guadagna molto spazio - - //margin: 100, //Margine dell'intero blocco legenda dall'area di PLOT (Solo quando non è floating) - //padding: 20, //Padding del box legenda (Ingrandisce il box) - backgroundColor: '#FFFFFF', //Colore di sfondo della legenda - //layout: 'horizontal', //Tipologia di legenda - align: 'center', //Allineamento orizzontale del box della legenda (left, center, right) - verticalAlign: 'bottom', //allineamento verticale della legenda (top, middle, bottom) - //width: 200, //Larghezza della legenda (Aggiunge Margini e padding) - //x: -8,//Offset della posizione della legenda rispetto all'allineamento (valori positivi > destra) - //y: -8,//Offset della posizione della legenda rispetto all'allineamento (valori positivi > verso il basso) - //maxHeight: 90, //IMPORTANTE - Indica l'altezza massima della legenda, se superata, mostra la paginazione (vedi sotto) - //borderColor: '#666666', //Colore del bordo della legenda - borderWidth: 0, //Spessore bordo della legenda - //borderRadius: 3, //Smusso della legenda - //itemDistance: 10, //Distanza X degli elementi quando la legenda è in verticale - //symbolWidth: 20, //Larghezza del simbolo rettangolo quando la legenda ne ha uno (accanto al nome - default 16) - //symbolHeight: 20, //Altezza del simbolo rettangolo quando la legenda ne ha uno (accanto al nome - default 12) - //symbolRadius: 3, //Smusso del simbolo rettangolo quando la legenda ne ha uno (default 2) - symbolPadding: 10, //Distanza tra simbolo e legenda (default 5) - //itemMarginBottom: 5, //Margine inferiore di ogni elemento della legenda - //itemMarginTop: 5, //Margine superiore di ogni elemento della legenda - //lineHeight: 20, //Altezza di ogni elemento della legenda (il valore di default è 16) - itemStyle: { - cursor: 'pointer', - color: '#666666', - fontSize: '14px', - fontWeight: 300 - }, - itemHiddenStyle: { //Colore dell'elemento legenda quando è disattivato - color: '#eeeeee' - }, - itemHoverStyle: { //Colore dell'elemento legenda in rollover - color: '#3ca7da' - }, - navigation: { //Paginazione Legenda - stilizzazione - activeColor: '#3ca7da', //Colore freccia attiva legenda - inactiveColor: '#666666', //Colore freccia disattiva legenda - arrowSize: 8, //Dimensioni freccia - animation: true, //Attiva/Disattiva animazione - style: { //Stile CSS applicato solo alla navigazione della legenda - color: '#666666', - fontSize: '10px' - } - } - }, -/* plotOptions: { - series: { - allowPointSelect: true, //Permette di selezionare i punti della chart - //pointPlacement: "on", Per partire dall'origine - animation: { // Configura l'animazione di entrata - duration: 1000, - easing: 'swing' }, - connectNulls: true, - cropThreshold: 3, - lineWidth: 1, // IMPORTANTE - Cambia lo spessore delle linee della chart - states: { - hover: { - lineWidth: 1 + title: { + style: { + fontSize: '8px', + fontWeight: 'bold' } }, - fillColor: { + subtitle: { + style: { + fontSize: '8px' + }, + align: 'center' }, - marker: { - enabled: false, //Attiva o disattiva i marker - //symbol: 'url(http://www.mentaltoy.com/resources/logoChart.png)', //Questo paramentro carica un simbolo personalizzato. Si può anche avere una chart con marker diverse sulle linee - symbol: 'circle', // Tipologia di marker - radius: 4, - lineWidth: 1, - states: { - hover: { - enabled: true, // Attiva o disattiva il marker quando si passa sopra la chart - symbol: 'circle', - radius: 5, - lineWidth: 2 - } + credits: { + style: { + fontSize: '6px', + margin: '30px' + } + + }, + legend: { + title: { + text: null + }, + + itemDistance: 50, + itemMarginBottom: 5, + + labelFormatter: function(){ + return ''+this.name+''; + }, + itemStyle: { + fontSize: '6px', + fontWeight: 'normal' + }, + enabled: false//, only one series and all info in title and subtitle + }, + plotOptions: { + series: { + lineWidth: 1 + } + }, + series: { + // marker : { + // radius: 2 + //}, + dataLabels: { + enabled: false + // style: { + // fontSize: '6px', + // color: this.series.color, + // textShadow: 0 + // } } } + } - },*/ - title: { - //enabled: false, - text: '', - x: -20 //center - }, - subtitle: { - text: 'FRA Data', - x: -20 }, - xAxis: { - gridLineWidth: 1, // IMPORTANTE - Attiva le linee verticali - lineColor: '#e0e0e0', - tickColor: '#e0e0e0', - gridLineColor: '#eeeeee', - tickLength: 7, - //tickmarkPlacement: 'on', Per partire dall'origine - labels: { - y: 25, - style: { - color: '#666666', - fontWeight: '300', - fontSize: 12 - } + + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: false + }, + showInLegend: true // shows legend for pie }, - //type: 'datetime', -/* dateTimeLabelFormats: { // don't display the dummy year - //month: '%e. %b', - year: '%Y' - },*/ - title: { - enabled: false, - text: 'null' + series: { + stickyTracking: false // ensures tooltip displays only when point is hovered on } }, - yAxis: { - gridLineWidth: 1, // IMPORTANTE - Attiva le linee verticali - lineWidth: 1, - //tickWidth: 1, - lineColor: '#e0e0e0', - gridLineColor: '#eeeeee', - labels: { - style: { - color: '#666666', - fontWeight: '300', - fontSize: 12 - } - }, + legend: { title: { - enabled: false, - text: 'null' + text: 'Click to hide/show' }, - plotLines: [ - { - value: 0, - width: 1 - } - ] + align: 'center', + padding: 0, + itemDistance: 40, + itemStyle: { + fontSize: '12px' + }, + itemHiddenStyle: { + color: '#CCC', //Default + fontWeight: 'bold' //Makes it a little darker, more visible + } }, + + subtitle: { + text: 'Hover for values and click and drag to zoom', + align: 'left', + x: 10 + }, + + yAxis: [{ //Primary Axis + title: { + enabled: true, + text: 'USD Millions' + } + }], + + xAxis: {crosshair: false}, // removes 'blue' highlight when hovering over points + + tooltip: { - //valueSuffix: '', - // backgroundColor: 'rgba(255, 255, 255, 0.95)', - borderWidth: 1, - shadow: true, - crosshairs: "mixed", - // shared: true + formatter: function () { + if(!this.series.options.dataLabels.enabled) { // hide tooltip if data labels enabled + var unit = 'USD Mil'; + + if (this.series.name.indexOf('%') >= 0) + unit = '%' + + return '' + this.x + ': ' + + this.series.name + '
' + + Highcharts.numberFormat(this.y, 2, '.', ',') + ' ' + unit; + } else { + return false; + } + + } + } }; diff --git a/config/submodules/fx-chart/jvenn_template.js b/config/submodules/fx-chart/jvenn_template.js new file mode 100644 index 00000000..b980b06b --- /dev/null +++ b/config/submodules/fx-chart/jvenn_template.js @@ -0,0 +1,23 @@ +/*global define*/ +define(function () { + + 'use strict'; + + return { + displayMode: 'classic', //default = 'classic' or 'edwards' + displayStat: 'true', // default = true + xAxis: { + categories: [] + }, + series: [], + exporting: false, + width: '600', + colors: ["rgb(86,145,195)","rgb(118,190,166)","rgb(86,99,195)"]//, + + //template: { + // id: "label2", + // css: [{left: '400px'}] + // } + //searchInput: false + }; +}); \ No newline at end of file diff --git a/config/submodules/fx-filter/Config-bak.js b/config/submodules/fx-filter/Config-bak.js new file mode 100644 index 00000000..3d70ce8c --- /dev/null +++ b/config/submodules/fx-filter/Config-bak.js @@ -0,0 +1,25 @@ +/*global define*/ +define([ + 'config/Config' +], function (C) { + 'use strict'; + + 'use strict'; + + var SERVER = C.SERVER; + var SERVER_POSTFIX = C.CODELIST_POSTFIX; + var SERVICE = C.CODELIST_SERVICE; + + return { + + SERVER :SERVER, + //SERVICE_BASE_ADDRESS: SERVER + "d3s_dev/msd", + SERVICE_POSTFIX: SERVER_POSTFIX, + SERVICE_BASE_ADDRESS: SERVER + SERVICE, + D3S_METADATA_URL: SERVER + SERVICE + "/resources/", + D3S_CODELIST_URL: SERVER + SERVICE+SERVER_POSTFIX, + D3S_FILTER_CODES : SERVER + SERVICE + "/codes/filter", + OVERWRITE_DEFAULT_CONFIG : true , + lang: "EN" + }; +}); diff --git a/config/submodules/fx-filter/Config.js b/config/submodules/fx-filter/Config.js deleted file mode 100644 index 7651f41f..00000000 --- a/config/submodules/fx-filter/Config.js +++ /dev/null @@ -1,17 +0,0 @@ -/*global define*/ -define([ - 'config/Config' -], function (C) { - 'use strict'; - - 'use strict'; - - var SERVER = C.SERVER; - - return { - - SERVER :SERVER, - SERVICE_BASE_ADDRESS: SERVER + "d3s_dev/msd" - - }; -}); diff --git a/config/submodules/fx-menu/top_menu.json b/config/submodules/fx-menu/top_menu.json index 5e366111..09a5fbe3 100644 --- a/config/submodules/fx-menu/top_menu.json +++ b/config/submodules/fx-menu/top_menu.json @@ -7,7 +7,7 @@ }, "target": "#home", "label": { - "EN": "Home" + "EN": "" } }, { @@ -21,41 +21,20 @@ }, { "attrs": { - "id": "datamgmt" + "id": "analyse" }, - "a_attrs": { - "rel": "external" - }, - "target": "datamgmt.html", - "label": { - "EN": "Data Management" - } - }, - { - "attrs": { - "id": "analysis" - }, - "target": "#analysis", - "label": { - "EN": "Download" - } - }, - { - "attrs": { - "id": "domains" - }, - "target": "#domains", + "target": "#analyse", "label": { - "EN": "Compare" + "EN": "Analyse Data" } }, { "attrs": { - "id": "methods" + "id": "profiles" }, - "target": "#methods", + "target": "#profiles", "label": { - "EN": "Methods and Standards" + "EN": "Resource Partner Profiles" } } ], diff --git a/config/submodules/fx-menu/top_menu_data_mng.json b/config/submodules/fx-menu/top_menu_data_mng.json index 9ac9971d..0a739ae6 100644 --- a/config/submodules/fx-menu/top_menu_data_mng.json +++ b/config/submodules/fx-menu/top_menu_data_mng.json @@ -10,7 +10,7 @@ }, "target": "./index.html#home", "label": { - "EN": "Home" + "EN": "" } }, { diff --git a/config/submodules/fx-olap/dataConfig.js b/config/submodules/fx-olap/dataConfig.js new file mode 100644 index 00000000..6f70bcfa --- /dev/null +++ b/config/submodules/fx-olap/dataConfig.js @@ -0,0 +1,94 @@ +/*global define*/ +define({ + "rows":["recipientcode","recipientcode_EN"], + "cols":["year"], + "vals":["Value","Flag"], + "hiddenAttributes":["Value","Flag","Unit"], + /*"rows": [ + "Element", + "Area", + "Item" + ], + "cols": ["Year"], + "vals": [ + "Value", + "Flag" + ], + "hiddenAttributes":[ + "AreaCode", + "ElementCode", + "ItemCode", + "Unit", + "Value", + "Flag", + "VarOrder1", + "VarOrder2", + "VarOrder3", + "VarOrder4" + ] + ,*/ + "derivedAttributes": {"Unit":function(ret){return " "},"Flag":function(ret){return ""}}, + "InstanceRenderers":[{label:"Table",func:"Table"},{label:"line chart",func:"line chart"}], + "InstanceAggregators":[{label:"Sum2",func:"Sum2"},{label:"Sum",func:"Sum"}], + "showAgg": false, + "showRender": false, + "showUnit": false, + "showCode": true, + "showFlags": false, + "csvText": "ADAM", + "cellRenderFunction": function (value, unit, flag, showUnit, showFlag) { + var ret = ""; + ret += "
"+ Math.floor(value.replace(" ","")*100)/100 + "
"; + if (showUnit) {ret += " [" + unit + "]";} + if (showFlag && flag!="") {ret += "
(" + flag + ")
";} + return ret + ""; + } +} +); +/*define({ + "rows": [ + ["Indicator", "Indicator_Code"], ["Source_Type", "Source_Code"], ["Country", "Country_Code"], + ["Qualifier", "Qualifier_Code"] + ], + "cols": ["Year"], + "vals": [ + "Value", "Flag", "Unit" + ], + "hiddenAttributes": [ + "Value", "Flag", "Year_Code", "Unit" + ], + "InstanceRenderers": [ + {label: "Grid", func: "Table"}, + {label: "OLAP", func: "OLAP"}, + {label: "Area", func: "Area"} + ], + "InstanceAggregators": [ + {label: "SumUnit", func: "Sum2"} + ], + derivedAttributes: {}, + linkedAttributes: [["Qualifier", "Qualifier_Code"], + ["Indicator_Code", "Indicator"], + ["Source_Code", "Source"], ["Country", "Country_Code"]], + "showAgg": false, + "showRender": false, + "showUnit": false, + "showCode": false, + "showFlags": true, + "csvText": "RLM", + "cellRenderFunction": function (value, unit, flag, showUnit, showFlag) { + var ret = ""; + + ret += "
" + value + "
"; + + if (showUnit) { + ret += " [" + unit + "]"; + } + + if (showFlag && flag!="") { + ret += "
(" + flag + ")
"; + } + + return ret + ""; + } +}); +*/ diff --git a/config/submodules/fx-olap/gridoption.js b/config/submodules/fx-olap/gridoption.js new file mode 100644 index 00000000..0d700dd5 --- /dev/null +++ b/config/submodules/fx-olap/gridoption.js @@ -0,0 +1,19 @@ +define({ + // id: grid_demo_id, + //width: "100%", //"100%", // 700, + //height: "400", //"100%", // 330, + // container: "grid_demo_id" + "_div", + //replaceContainer: true, + //dataset: dsOption, + //resizable: false, + //columns: colsOption, + pageSize: 150 + //pageSizeList: [15, 25, 50, 150], + //SigmaGridPath: 'grid/', + //toolbarContent: 'nav | goto | pagesize ', /*| mybutton |*/ + /*onMouseOver: function(value, record, cell, row, colNo, rowNo, columnObj, grid) { + if (columnObj && columnObj.toolTip) {grid.showCellToolTip(cell, columnObj.toolTipWidth);} + else {grid.hideCellToolTip();} + }, + onMouseOut: function(value, record, cell, row, colNo, rowNo, columnObj, grid) {grid.hideCellToolTip();}*/ +}); \ No newline at end of file diff --git a/css/.gitignore b/css/.gitignore new file mode 100644 index 00000000..5509140f --- /dev/null +++ b/css/.gitignore @@ -0,0 +1 @@ +*.DS_Store diff --git a/dist/css/index.css b/dist/css/index.css index d4d6c805..cdb95bf6 100644 --- a/dist/css/index.css +++ b/dist/css/index.css @@ -2,7547 +2,15269 @@ /* Dist - Index */ /* RLM - Variables */ /* Variables */ -/* Fenix Utils*/ -/* Fenix Style No Variables */ -/* Utils */ -/* Base */ -/* Fenix Fonts Import */ -/* Eldorado */ -/* ELDORADO FONT STANDARD CONFIGURATION*/ -/* Eldorado */ -@font-face { - font-family: 'eldorado_stroke'; - src: url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.eot"); - src: url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.eot?#iefix") format("embedded-opentype"), url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.woff") format("woff"), url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.ttf") format("truetype"), url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.svg#RobotoRegular") format("svg"); - font-weight: normal; - font-style: normal; } -[class^="icojam_"], [class*=" icojam_"] { - font-family: 'eldorado_stroke'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } +.fx-sandbox { + padding: 0 5px; } -/* Active Icons */ -.icojam_button_new_1:before { - content: "\eb2a"; } +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; } -.icojam_button_foward_1:before { - content: "\eb26"; } +body { + margin: 0; } -.icojam_document_text:before { - content: "\eb26"; } +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } -.icojam_grid_thumbnails:before { - content: "\e9a8"; } +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; } -.icojam_elevation_4:before { - content: "\e80d"; } +audio:not([controls]) { + display: none; + height: 0; } -.icojam_swap_horizontal_1:before { - content: "\eb45"; } +[hidden], +template { + display: none; } -.icojam_wedding_jewel:before { - content: "\e96c"; } +a { + background-color: transparent; } -.icojam_inbox_receive:before { - content: "\ea49"; } +a:active, +a:hover { + outline: 0; } -.icojam_button_delete_1:before { - content: "\eb24"; } +abbr[title] { + border-bottom: 1px dotted; } -.icojam_copybook_2:before { - content: "\e7b5"; } +b, +strong { + font-weight: bold; } -.icojam_user:before { - content: "\ebbb"; } +dfn { + font-style: italic; } -.icojam_exit_1:before { - content: "\eaeb"; } +h1 { + font-size: 2em; + margin: 0.67em 0; } -/* Icons */ -.icojam_fla:before { - content: "\e777"; } +mark { + background: #ff0; + color: #000; } -.icojam_flac:before { - content: "\e778"; } +small { + font-size: 80%; } -.icojam_gif:before { - content: "\e779"; } +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } -.icojam_html:before { - content: "\e77a"; } +sup { + top: -0.5em; } -.icojam_icl:before { - content: "\e77b"; } +sub { + bottom: -0.25em; } -.icojam_icns:before { - content: "\e77c"; } +img { + border: 0; } -.icojam_ico:before { - content: "\e77d"; } +svg:not(:root) { + overflow: hidden; } -.icojam_ini:before { - content: "\e77e"; } +figure { + margin: 1em 40px; } + +hr { + box-sizing: content-box; + height: 0; } + +pre { + overflow: auto; } + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; } -.icojam_iso:before { - content: "\e77f"; } +button { + overflow: visible; } -.icojam_jpg:before { - content: "\e780"; } +button, +select { + text-transform: none; } -.icojam_log:before { - content: "\e781"; } +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; } -.icojam_midi:before { - content: "\e782"; } +button[disabled], +html input[disabled] { + cursor: default; } -.icojam_mkv:before { - content: "\e783"; } +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } -.icojam_mov:before { - content: "\e784"; } +input { + line-height: normal; } -.icojam_mp3:before { - content: "\e785"; } +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; } -.icojam_mp4:before { - content: "\e786"; } +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } -.icojam_mpg:before { - content: "\e787"; } +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box; } -.icojam_ogg:before { - content: "\e788"; } +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } -.icojam_ogm:before { - content: "\e789"; } +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } -.icojam_otf:before { - content: "\e78a"; } +legend { + border: 0; + padding: 0; } -.icojam_pdf:before { - content: "\e78b"; } +textarea { + overflow: auto; } -.icojam_png:before { - content: "\e78c"; } +optgroup { + font-weight: bold; } -.icojam_ppt:before { - content: "\e78d"; } +table { + border-collapse: collapse; + border-spacing: 0; } -.icojam_pptx:before { - content: "\e78e"; } +td, +th { + padding: 0; } -.icojam_psd:before { - content: "\e78f"; } +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; } -.icojam_ra:before { - content: "\e790"; } + a, + a:visited { + text-decoration: underline; } -.icojam_rar:before { - content: "\e791"; } + a[href]:after { + content: " (" attr(href) ")"; } -.icojam_raw:before { - content: "\e792"; } + abbr[title]:after { + content: " (" attr(title) ")"; } -.icojam_rm:before { - content: "\e793"; } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; } -.icojam_rtf:before { - content: "\e794"; } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } -.icojam_svg:before { - content: "\e795"; } + thead { + display: table-header-group; } -.icojam_svgz:before { - content: "\e796"; } + tr, + img { + page-break-inside: avoid; } -.icojam_swf:before { - content: "\e797"; } + img { + max-width: 100% !important; } -.icojam_sys:before { - content: "\e798"; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } -.icojam_tga:before { - content: "\e799"; } + h2, + h3 { + page-break-after: avoid; } -.icojam_tif:before { - content: "\e79a"; } + .navbar { + display: none; } -.icojam_ttf:before { - content: "\e79b"; } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; } -.icojam_txt:before { - content: "\e79c"; } + .label { + border: 1px solid #000; } -.icojam_wav:before { - content: "\e79d"; } + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } -.icojam_wma:before { - content: "\e79e"; } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; } } +@font-face { + font-family: 'Glyphicons Halflings'; + src: url("../fonts/bootstrap/glyphicons-halflings-regular.eot"); + src: url("../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); } +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.icojam_wmv:before { - content: "\e79f"; } +.glyphicon-asterisk:before { + content: "\2a"; } -.icojam_xls:before { - content: "\e7a0"; } +.glyphicon-plus:before { + content: "\2b"; } -.icojam_xlsx:before { - content: "\e7a1"; } +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; } -.icojam_xml:before { - content: "\e7a2"; } +.glyphicon-minus:before { + content: "\2212"; } -.icojam_zip:before { - content: "\e7a3"; } +.glyphicon-cloud:before { + content: "\2601"; } -.icojam_presentation:before { - content: "\e9b1"; } +.glyphicon-envelope:before { + content: "\2709"; } -.icojam_document:before { - content: "\ea3c"; } +.glyphicon-pencil:before { + content: "\270f"; } -.icojam_link_1:before { - content: "\ea50"; } +.glyphicon-glass:before { + content: "\e001"; } -.icojam_base_search_in:before { - content: "\e65e"; } +.glyphicon-music:before { + content: "\e002"; } -.icojam_add:before { - content: "\e656"; } +.glyphicon-search:before { + content: "\e003"; } -.icojam_delete:before { - content: "\e66a"; } +.glyphicon-heart:before { + content: "\e005"; } -.icojam_cancel_1:before { - content: "\eb55"; } +.glyphicon-star:before { + content: "\e006"; } -.icojam_home2:before { - content: "\e7c1"; } +.glyphicon-star-empty:before { + content: "\e007"; } -.icojam_geography_globe:before { - content: "\e7be"; } +.glyphicon-user:before { + content: "\e008"; } -.icojam_notebook:before { - content: "\e7eb"; } +.glyphicon-film:before { + content: "\e009"; } -.icojam_air_conditioning_external:before { - content: "\e600"; } +.glyphicon-th-large:before { + content: "\e010"; } -.icojam_air_conditioning_internal:before { - content: "\e601"; } +.glyphicon-th:before { + content: "\e011"; } -.icojam_blender:before { - content: "\e602"; } +.glyphicon-th-list:before { + content: "\e012"; } -.icojam_blender_2:before { - content: "\e603"; } +.glyphicon-ok:before { + content: "\e013"; } -.icojam_blender_3:before { - content: "\e604"; } +.glyphicon-remove:before { + content: "\e014"; } -.icojam_bread_maker_multicookings:before { - content: "\e605"; } +.glyphicon-zoom-in:before { + content: "\e015"; } -.icojam_citrus_squeezer:before { - content: "\e606"; } +.glyphicon-zoom-out:before { + content: "\e016"; } -.icojam_coffee_machine:before { - content: "\e607"; } +.glyphicon-off:before { + content: "\e017"; } -.icojam_coiled_heater:before { - content: "\e608"; } +.glyphicon-signal:before { + content: "\e018"; } -.icojam_dishwasher:before { - content: "\e609"; } +.glyphicon-cog:before { + content: "\e019"; } -.icojam_drill_perforator:before { - content: "\e60a"; } +.glyphicon-trash:before { + content: "\e020"; } -.icojam_electric_kettle_teapot:before { - content: "\e60b"; } +.glyphicon-home:before { + content: "\e021"; } -.icojam_electric_shaver:before { - content: "\e60c"; } +.glyphicon-file:before { + content: "\e022"; } -.icojam_fan:before { - content: "\e60d"; } +.glyphicon-time:before { + content: "\e023"; } -.icojam_fan_1:before { - content: "\e60e"; } +.glyphicon-road:before { + content: "\e024"; } -.icojam_fan_dyson:before { - content: "\e60f"; } +.glyphicon-download-alt:before { + content: "\e025"; } -.icojam_food_processor_1:before { - content: "\e610"; } +.glyphicon-download:before { + content: "\e026"; } -.icojam_food_processor_2:before { - content: "\e611"; } +.glyphicon-upload:before { + content: "\e027"; } -.icojam_freezer:before { - content: "\e612"; } +.glyphicon-inbox:before { + content: "\e028"; } -.icojam_fridge_side_by_side:before { - content: "\e613"; } +.glyphicon-play-circle:before { + content: "\e029"; } -.icojam_hairdryer:before { - content: "\e614"; } +.glyphicon-repeat:before { + content: "\e030"; } -.icojam_heat_fan:before { - content: "\e615"; } +.glyphicon-refresh:before { + content: "\e031"; } -.icojam_heater:before { - content: "\e616"; } +.glyphicon-list-alt:before { + content: "\e032"; } -.icojam_iron:before { - content: "\e617"; } +.glyphicon-lock:before { + content: "\e033"; } -.icojam_juicer:before { - content: "\e618"; } +.glyphicon-flag:before { + content: "\e034"; } -.icojam_kitchen_hood:before { - content: "\e619"; } +.glyphicon-headphones:before { + content: "\e035"; } -.icojam_kitchen_hood_1:before { - content: "\e61a"; } +.glyphicon-volume-off:before { + content: "\e036"; } -.icojam_kitchen_timer:before { - content: "\e61b"; } +.glyphicon-volume-down:before { + content: "\e037"; } -.icojam_metal_detector_multimeter_voltmeter:before { - content: "\e61c"; } +.glyphicon-volume-up:before { + content: "\e038"; } -.icojam_microwave:before { - content: "\e61d"; } +.glyphicon-qrcode:before { + content: "\e039"; } -.icojam_mixer:before { - content: "\e61e"; } +.glyphicon-barcode:before { + content: "\e040"; } -.icojam_paper_shredder:before { - content: "\e61f"; } +.glyphicon-tag:before { + content: "\e041"; } -.icojam_radiator:before { - content: "\e620"; } +.glyphicon-tags:before { + content: "\e042"; } -.icojam_refrigerator:before { - content: "\e621"; } +.glyphicon-book:before { + content: "\e043"; } -.icojam_samovar:before { - content: "\e622"; } +.glyphicon-bookmark:before { + content: "\e044"; } -.icojam_scale_kitchen_weigher:before { - content: "\e623"; } +.glyphicon-print:before { + content: "\e045"; } -.icojam_scales:before { - content: "\e624"; } +.glyphicon-camera:before { + content: "\e046"; } -.icojam_sewing_machine:before { - content: "\e625"; } +.glyphicon-font:before { + content: "\e047"; } -.icojam_stove:before { - content: "\e626"; } +.glyphicon-bold:before { + content: "\e048"; } -.icojam_toaster:before { - content: "\e627"; } +.glyphicon-italic:before { + content: "\e049"; } -.icojam_vacuum_cleaner:before { - content: "\e628"; } +.glyphicon-text-height:before { + content: "\e050"; } -.icojam_waffle-iron:before { - content: "\e629"; } +.glyphicon-text-width:before { + content: "\e051"; } -.icojam_washing_machine:before { - content: "\e62a"; } +.glyphicon-align-left:before { + content: "\e052"; } -.icojam_yogurter:before { - content: "\e62b"; } +.glyphicon-align-center:before { + content: "\e053"; } -.icojam_baby_monitor:before { - content: "\e62c"; } +.glyphicon-align-right:before { + content: "\e054"; } -.icojam_baby_monitors:before { - content: "\e62d"; } +.glyphicon-align-justify:before { + content: "\e055"; } -.icojam_ball:before { - content: "\e62e"; } +.glyphicon-list:before { + content: "\e056"; } -.icojam_beanbag_maraca:before { - content: "\e62f"; } +.glyphicon-indent-left:before { + content: "\e057"; } -.icojam_bib:before { - content: "\e630"; } +.glyphicon-indent-right:before { + content: "\e058"; } -.icojam_bicycle_baby_infant:before { - content: "\e631"; } +.glyphicon-facetime-video:before { + content: "\e059"; } -.icojam_birthday_newborn:before { - content: "\e632"; } +.glyphicon-picture:before { + content: "\e060"; } -.icojam_blocks:before { - content: "\e633"; } +.glyphicon-map-marker:before { + content: "\e062"; } -.icojam_body_suit:before { - content: "\e634"; } +.glyphicon-adjust:before { + content: "\e063"; } -.icojam_bottle_infant:before { - content: "\e635"; } +.glyphicon-tint:before { + content: "\e064"; } -.icojam_boy:before { - content: "\e636"; } +.glyphicon-edit:before { + content: "\e065"; } -.icojam_breast_milk:before { - content: "\e637"; } +.glyphicon-share:before { + content: "\e066"; } -.icojam_breast-feeding_mother:before { - content: "\e638"; } +.glyphicon-check:before { + content: "\e067"; } -.icojam_buildingkit:before { - content: "\e639"; } +.glyphicon-move:before { + content: "\e068"; } -.icojam_car:before { - content: "\e63a"; } +.glyphicon-step-backward:before { + content: "\e069"; } -.icojam_chair_baby:before { - content: "\e63b"; } +.glyphicon-fast-backward:before { + content: "\e070"; } -.icojam_chamber_pot:before { - content: "\e63c"; } +.glyphicon-backward:before { + content: "\e071"; } -.icojam_duck_rubberduck:before { - content: "\e63d"; } +.glyphicon-play:before { + content: "\e072"; } -.icojam_dummy_nipple:before { - content: "\e63e"; } +.glyphicon-pause:before { + content: "\e073"; } -.icojam_embryo:before { - content: "\e63f"; } +.glyphicon-stop:before { + content: "\e074"; } -.icojam_fertilization_sperm_ovum:before { - content: "\e640"; } +.glyphicon-forward:before { + content: "\e075"; } -.icojam_fork_spoon_baby:before { - content: "\e641"; } +.glyphicon-fast-forward:before { + content: "\e076"; } -.icojam_girl:before { - content: "\e642"; } +.glyphicon-step-forward:before { + content: "\e077"; } -.icojam_horse_hobby_hobbyhorse:before { - content: "\e643"; } +.glyphicon-eject:before { + content: "\e078"; } -.icojam_mobile_infant:before { - content: "\e644"; } +.glyphicon-chevron-left:before { + content: "\e079"; } -.icojam_napkin:before { - content: "\e645"; } +.glyphicon-chevron-right:before { + content: "\e080"; } -.icojam_pampers_briefs_diapers:before { - content: "\e646"; } +.glyphicon-plus-sign:before { + content: "\e081"; } -.icojam_parental_control_off:before { - content: "\e647"; } +.glyphicon-minus-sign:before { + content: "\e082"; } -.icojam_parental_control_on:before { - content: "\e648"; } +.glyphicon-remove-sign:before { + content: "\e083"; } -.icojam_playpen:before { - content: "\e649"; } +.glyphicon-ok-sign:before { + content: "\e084"; } -.icojam_preserves:before { - content: "\e64a"; } +.glyphicon-question-sign:before { + content: "\e085"; } -.icojam_pyramid:before { - content: "\e64b"; } +.glyphicon-info-sign:before { + content: "\e086"; } -.icojam_RC_car_radiocontrolled:before { - content: "\e64c"; } +.glyphicon-screenshot:before { + content: "\e087"; } -.icojam_scales_baby:before { - content: "\e64d"; } +.glyphicon-remove-circle:before { + content: "\e088"; } -.icojam_shirt:before { - content: "\e64e"; } +.glyphicon-ok-circle:before { + content: "\e089"; } -.icojam_shoes:before { - content: "\e64f"; } +.glyphicon-ban-circle:before { + content: "\e090"; } -.icojam_stadiometer:before { - content: "\e650"; } +.glyphicon-arrow-left:before { + content: "\e091"; } -.icojam_stroller_cane:before { - content: "\e651"; } +.glyphicon-arrow-right:before { + content: "\e092"; } -.icojam_teether:before { - content: "\e652"; } +.glyphicon-arrow-up:before { + content: "\e093"; } -.icojam_tights:before { - content: "\e653"; } +.glyphicon-arrow-down:before { + content: "\e094"; } -.icojam_ultrasound_diagnostics:before { - content: "\e654"; } +.glyphicon-share-alt:before { + content: "\e095"; } -.icojam_videogame_baby:before { - content: "\e655"; } +.glyphicon-resize-full:before { + content: "\e096"; } -.icojam_add:before { - content: "\e656"; } +.glyphicon-resize-small:before { + content: "\e097"; } -.icojam_base:before { - content: "\e657"; } +.glyphicon-exclamation-sign:before { + content: "\e101"; } -.icojam_base_check:before { - content: "\e658"; } +.glyphicon-gift:before { + content: "\e102"; } -.icojam_base_connect:before { - content: "\e659"; } +.glyphicon-leaf:before { + content: "\e103"; } -.icojam_base_delete:before { - content: "\e65a"; } +.glyphicon-fire:before { + content: "\e104"; } -.icojam_base_favorite:before { - content: "\e65b"; } +.glyphicon-eye-open:before { + content: "\e105"; } -.icojam_base_new:before { - content: "\e65c"; } +.glyphicon-eye-close:before { + content: "\e106"; } -.icojam_base_remove:before { - content: "\e65d"; } +.glyphicon-warning-sign:before { + content: "\e107"; } -.icojam_base_search_in:before { - content: "\e65e"; } +.glyphicon-plane:before { + content: "\e108"; } -.icojam_check:before { - content: "\e65f"; } +.glyphicon-calendar:before { + content: "\e109"; } -.icojam_comment_1:before { - content: "\e660"; } +.glyphicon-random:before { + content: "\e110"; } -.icojam_comment_2:before { - content: "\e661"; } +.glyphicon-comment:before { + content: "\e111"; } -.icojam_comment_3:before { - content: "\e662"; } +.glyphicon-magnet:before { + content: "\e112"; } -.icojam_comment_baloon:before { - content: "\e663"; } +.glyphicon-chevron-up:before { + content: "\e113"; } -.icojam_comment_chat:before { - content: "\e664"; } +.glyphicon-chevron-down:before { + content: "\e114"; } -.icojam_comment_dream:before { - content: "\e665"; } +.glyphicon-retweet:before { + content: "\e115"; } -.icojam_connect_close:before { - content: "\e666"; } +.glyphicon-shopping-cart:before { + content: "\e116"; } -.icojam_credit_card:before { - content: "\e667"; } +.glyphicon-folder-close:before { + content: "\e117"; } -.icojam_credit_card_back:before { - content: "\e668"; } +.glyphicon-folder-open:before { + content: "\e118"; } -.icojam_credit_card_multi:before { - content: "\e669"; } +.glyphicon-resize-vertical:before { + content: "\e119"; } -.icojam_delete:before { - content: "\e66a"; } +.glyphicon-resize-horizontal:before { + content: "\e120"; } -.icojam_favorite:before { - content: "\e66b"; } +.glyphicon-hdd:before { + content: "\e121"; } -.icojam_favorite_add:before { - content: "\e66c"; } +.glyphicon-bullhorn:before { + content: "\e122"; } -.icojam_favorite_add_2:before { - content: "\e66d"; } +.glyphicon-bell:before { + content: "\e123"; } -.icojam_favorite_add_3:before { - content: "\e66e"; } +.glyphicon-certificate:before { + content: "\e124"; } -.icojam_favorite_add_4:before { - content: "\e66f"; } +.glyphicon-thumbs-up:before { + content: "\e125"; } -.icojam_favorite_check_1:before { - content: "\e670"; } +.glyphicon-thumbs-down:before { + content: "\e126"; } -.icojam_favorite_check_2:before { - content: "\e671"; } +.glyphicon-hand-right:before { + content: "\e127"; } -.icojam_favorite_delete_1:before { - content: "\e672"; } +.glyphicon-hand-left:before { + content: "\e128"; } -.icojam_favorite_delete_2:before { - content: "\e673"; } +.glyphicon-hand-up:before { + content: "\e129"; } -.icojam_favorite_remove_1:before { - content: "\e674"; } +.glyphicon-hand-down:before { + content: "\e130"; } -.icojam_favorite_remove_2:before { - content: "\e675"; } +.glyphicon-circle-arrow-right:before { + content: "\e131"; } -.icojam_flag:before { - content: "\e676"; } +.glyphicon-circle-arrow-left:before { + content: "\e132"; } -.icojam_gear:before { - content: "\e677"; } +.glyphicon-circle-arrow-up:before { + content: "\e133"; } -.icojam_glass:before { - content: "\e678"; } +.glyphicon-circle-arrow-down:before { + content: "\e134"; } -.icojam_home:before { - content: "\e679"; } +.glyphicon-globe:before { + content: "\e135"; } -.icojam_key_1:before { - content: "\e67a"; } +.glyphicon-wrench:before { + content: "\e136"; } -.icojam_key_2:before { - content: "\e67b"; } +.glyphicon-tasks:before { + content: "\e137"; } -.icojam_lamp:before { - content: "\e67c"; } +.glyphicon-filter:before { + content: "\e138"; } -.icojam_lamp_off:before { - content: "\e67d"; } +.glyphicon-briefcase:before { + content: "\e139"; } -.icojam_lamp_on:before { - content: "\e67e"; } +.glyphicon-fullscreen:before { + content: "\e140"; } -.icojam_lock:before { - content: "\e67f"; } +.glyphicon-dashboard:before { + content: "\e141"; } -.icojam_minus:before { - content: "\e680"; } +.glyphicon-paperclip:before { + content: "\e142"; } -.icojam_options_1:before { - content: "\e681"; } +.glyphicon-heart-empty:before { + content: "\e143"; } -.icojam_options_2:before { - content: "\e682"; } +.glyphicon-link:before { + content: "\e144"; } -.icojam_protect_1:before { - content: "\e683"; } +.glyphicon-phone:before { + content: "\e145"; } -.icojam_protect_2:before { - content: "\e684"; } +.glyphicon-pushpin:before { + content: "\e146"; } -.icojam_protect_3:before { - content: "\e685"; } +.glyphicon-usd:before { + content: "\e148"; } -.icojam_recycle_bin_1:before { - content: "\e686"; } +.glyphicon-gbp:before { + content: "\e149"; } -.icojam_recycle_bin_2:before { - content: "\e687"; } +.glyphicon-sort:before { + content: "\e150"; } -.icojam_recycle_bin_3:before { - content: "\e688"; } +.glyphicon-sort-by-alphabet:before { + content: "\e151"; } -.icojam_recycle_bin_4:before { - content: "\e689"; } +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; } -.icojam_recycle_bin_empty:before { - content: "\e68a"; } +.glyphicon-sort-by-order:before { + content: "\e153"; } -.icojam_rss:before { - content: "\e68b"; } +.glyphicon-sort-by-order-alt:before { + content: "\e154"; } -.icojam_search:before { - content: "\e68c"; } +.glyphicon-sort-by-attributes:before { + content: "\e155"; } -.icojam_shopping_cart_1:before { - content: "\e68d"; } +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; } -.icojam_shopping_cart_2:before { - content: "\e68e"; } +.glyphicon-unchecked:before { + content: "\e157"; } -.icojam_shopping_cart_3:before { - content: "\e68f"; } +.glyphicon-expand:before { + content: "\e158"; } -.icojam_shopping_cart_4:before { - content: "\e690"; } +.glyphicon-collapse-down:before { + content: "\e159"; } -.icojam_star:before { - content: "\e691"; } +.glyphicon-collapse-up:before { + content: "\e160"; } -.icojam_umbrella:before { - content: "\e692"; } +.glyphicon-log-in:before { + content: "\e161"; } -.icojam_unlock:before { - content: "\e693"; } +.glyphicon-flash:before { + content: "\e162"; } -.icojam_up:before { - content: "\e694"; } +.glyphicon-log-out:before { + content: "\e163"; } -.icojam_wizard_1:before { - content: "\e695"; } +.glyphicon-new-window:before { + content: "\e164"; } -.icojam_wizard_2:before { - content: "\e696"; } +.glyphicon-record:before { + content: "\e165"; } -.icojam_airport:before { - content: "\e697"; } +.glyphicon-save:before { + content: "\e166"; } -.icojam_ancient_building:before { - content: "\e698"; } +.glyphicon-open:before { + content: "\e167"; } -.icojam_apartment:before { - content: "\e699"; } +.glyphicon-saved:before { + content: "\e168"; } -.icojam_arch:before { - content: "\e69a"; } +.glyphicon-import:before { + content: "\e169"; } -.icojam_bank:before { - content: "\e69b"; } +.glyphicon-export:before { + content: "\e170"; } -.icojam_belfry:before { - content: "\e69c"; } +.glyphicon-send:before { + content: "\e171"; } -.icojam_bridge_1:before { - content: "\e69d"; } +.glyphicon-floppy-disk:before { + content: "\e172"; } -.icojam_bridge_2:before { - content: "\e69e"; } +.glyphicon-floppy-saved:before { + content: "\e173"; } -.icojam_bridge_column:before { - content: "\e69f"; } +.glyphicon-floppy-remove:before { + content: "\e174"; } -.icojam_building:before { - content: "\e6a0"; } +.glyphicon-floppy-save:before { + content: "\e175"; } -.icojam_car_wash:before { - content: "\e6a1"; } +.glyphicon-floppy-open:before { + content: "\e176"; } -.icojam_castle:before { - content: "\e6a2"; } +.glyphicon-credit-card:before { + content: "\e177"; } -.icojam_catholic_church:before { - content: "\e6a3"; } +.glyphicon-transfer:before { + content: "\e178"; } -.icojam_church:before { - content: "\e6a4"; } +.glyphicon-cutlery:before { + content: "\e179"; } -.icojam_city:before { - content: "\e6a5"; } +.glyphicon-header:before { + content: "\e180"; } -.icojam_downtown:before { - content: "\e6a6"; } +.glyphicon-compressed:before { + content: "\e181"; } -.icojam_dwelling_house:before { - content: "\e6a7"; } +.glyphicon-earphone:before { + content: "\e182"; } -.icojam_exhibition:before { - content: "\e6a8"; } +.glyphicon-phone-alt:before { + content: "\e183"; } -.icojam_factory_1:before { - content: "\e6a9"; } +.glyphicon-tower:before { + content: "\e184"; } -.icojam_factory_2:before { - content: "\e6aa"; } +.glyphicon-stats:before { + content: "\e185"; } -.icojam_factory_3:before { - content: "\e6ab"; } +.glyphicon-sd-video:before { + content: "\e186"; } -.icojam_fire:before { - content: "\e6ac"; } +.glyphicon-hd-video:before { + content: "\e187"; } -.icojam_firefighters:before { - content: "\e6ad"; } +.glyphicon-subtitles:before { + content: "\e188"; } -.icojam_for_rent:before { - content: "\e6ae"; } +.glyphicon-sound-stereo:before { + content: "\e189"; } -.icojam_for_sale:before { - content: "\e6af"; } +.glyphicon-sound-dolby:before { + content: "\e190"; } -.icojam_front_gate:before { - content: "\e6b0"; } +.glyphicon-sound-5-1:before { + content: "\e191"; } -.icojam_garage_1:before { - content: "\e6b1"; } +.glyphicon-sound-6-1:before { + content: "\e192"; } -.icojam_garage_2:before { - content: "\e6b2"; } +.glyphicon-sound-7-1:before { + content: "\e193"; } -.icojam_garage_hangar:before { - content: "\e6b3"; } +.glyphicon-copyright-mark:before { + content: "\e194"; } -.icojam_garage_multilevel:before { - content: "\e6b4"; } +.glyphicon-registration-mark:before { + content: "\e195"; } -.icojam_government:before { - content: "\e6b5"; } +.glyphicon-cloud-download:before { + content: "\e197"; } -.icojam_home_1:before { - content: "\e6b6"; } +.glyphicon-cloud-upload:before { + content: "\e198"; } -.icojam_home_2:before { - content: "\e6b7"; } +.glyphicon-tree-conifer:before { + content: "\e199"; } -.icojam_home_3:before { - content: "\e6b8"; } +.glyphicon-tree-deciduous:before { + content: "\e200"; } -.icojam_home_4:before { - content: "\e6b9"; } +.glyphicon-cd:before { + content: "\e201"; } -.icojam_home_farm:before { - content: "\e6ba"; } +.glyphicon-save-file:before { + content: "\e202"; } -.icojam_hospital_clinic:before { - content: "\e6bb"; } +.glyphicon-open-file:before { + content: "\e203"; } -.icojam_housemulti_storey:before { - content: "\e6bc"; } +.glyphicon-level-up:before { + content: "\e204"; } -.icojam_house_1:before { - content: "\e6bd"; } +.glyphicon-copy:before { + content: "\e205"; } -.icojam_house_2:before { - content: "\e6be"; } +.glyphicon-paste:before { + content: "\e206"; } -.icojam_house_3:before { - content: "\e6bf"; } +.glyphicon-alert:before { + content: "\e209"; } -.icojam_house_4:before { - content: "\e6c0"; } +.glyphicon-equalizer:before { + content: "\e210"; } -.icojam_house_five_story:before { - content: "\e6c1"; } +.glyphicon-king:before { + content: "\e211"; } -.icojam_house_four_stories:before { - content: "\e6c2"; } +.glyphicon-queen:before { + content: "\e212"; } -.icojam_house_three_story:before { - content: "\e6c3"; } +.glyphicon-pawn:before { + content: "\e213"; } -.icojam_house_two_storey_1:before { - content: "\e6c4"; } +.glyphicon-bishop:before { + content: "\e214"; } -.icojam_house_two_storey_2:before { - content: "\e6c5"; } +.glyphicon-knight:before { + content: "\e215"; } -.icojam_house_with_garage_1:before { - content: "\e6c6"; } +.glyphicon-baby-formula:before { + content: "\e216"; } -.icojam_house_with_garage_2:before { - content: "\e6c7"; } +.glyphicon-tent:before { + content: "\26fa"; } -.icojam_hovel_1:before { - content: "\e6c8"; } +.glyphicon-blackboard:before { + content: "\e218"; } -.icojam_hovel_2:before { - content: "\e6c9"; } +.glyphicon-bed:before { + content: "\e219"; } -.icojam_library_1:before { - content: "\e6ca"; } +.glyphicon-apple:before { + content: "\f8ff"; } -.icojam_library_2:before { - content: "\e6cb"; } +.glyphicon-erase:before { + content: "\e221"; } -.icojam_log_house:before { - content: "\e6cc"; } +.glyphicon-hourglass:before { + content: "\231b"; } -.icojam_mosque:before { - content: "\e6cd"; } +.glyphicon-lamp:before { + content: "\e223"; } -.icojam_obelisk:before { - content: "\e6ce"; } +.glyphicon-duplicate:before { + content: "\e224"; } -.icojam_orthodox_church:before { - content: "\e6cf"; } +.glyphicon-piggy-bank:before { + content: "\e225"; } -.icojam_palace_of_congresses:before { - content: "\e6d0"; } +.glyphicon-scissors:before { + content: "\e226"; } -.icojam_park_1:before { - content: "\e6d1"; } +.glyphicon-bitcoin:before { + content: "\e227"; } -.icojam_park_2:before { - content: "\e6d2"; } +.glyphicon-btc:before { + content: "\e227"; } -.icojam_planetarium_observatory:before { - content: "\e6d3"; } +.glyphicon-xbt:before { + content: "\e227"; } -.icojam_plant:before { - content: "\e6d4"; } +.glyphicon-yen:before { + content: "\00a5"; } -.icojam_police:before { - content: "\e6d5"; } +.glyphicon-jpy:before { + content: "\00a5"; } -.icojam_ranch:before { - content: "\e6d6"; } +.glyphicon-ruble:before { + content: "\20bd"; } -.icojam_school_1:before { - content: "\e6d7"; } +.glyphicon-rub:before { + content: "\20bd"; } -.icojam_school_2:before { - content: "\e6d8"; } +.glyphicon-scale:before { + content: "\e230"; } -.icojam_sheriff:before { - content: "\e6d9"; } +.glyphicon-ice-lolly:before { + content: "\e231"; } -.icojam_shop_1:before { - content: "\e6da"; } +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; } -.icojam_shop_2:before { - content: "\e6db"; } +.glyphicon-education:before { + content: "\e233"; } -.icojam_shop_3:before { - content: "\e6dc"; } +.glyphicon-option-horizontal:before { + content: "\e234"; } -.icojam_shop_4:before { - content: "\e6dd"; } +.glyphicon-option-vertical:before { + content: "\e235"; } -.icojam_shopping_center:before { - content: "\e6de"; } +.glyphicon-menu-hamburger:before { + content: "\e236"; } -.icojam_skyscraper_1:before { - content: "\e6df"; } +.glyphicon-modal-window:before { + content: "\e237"; } -.icojam_skyscraper_2:before { - content: "\e6e0"; } +.glyphicon-oil:before { + content: "\e238"; } -.icojam_skyscrapers_1:before { - content: "\e6e1"; } +.glyphicon-grain:before { + content: "\e239"; } -.icojam_skyscrapers_2:before { - content: "\e6e2"; } +.glyphicon-sunglasses:before { + content: "\e240"; } -.icojam_skyscrapers_3:before { - content: "\e6e3"; } +.glyphicon-text-size:before { + content: "\e241"; } -.icojam_skyway:before { - content: "\e6e4"; } +.glyphicon-text-color:before { + content: "\e242"; } -.icojam_station_gas:before { - content: "\e6e5"; } +.glyphicon-text-background:before { + content: "\e243"; } -.icojam_station_petrol:before { - content: "\e6e6"; } +.glyphicon-object-align-top:before { + content: "\e244"; } -.icojam_tent_camp:before { - content: "\e6e7"; } +.glyphicon-object-align-bottom:before { + content: "\e245"; } -.icojam_terminal:before { - content: "\e6e8"; } +.glyphicon-object-align-horizontal:before { + content: "\e246"; } -.icojam_theater_1:before { - content: "\e6e9"; } +.glyphicon-object-align-left:before { + content: "\e247"; } -.icojam_theater_2:before { - content: "\e6ea"; } +.glyphicon-object-align-vertical:before { + content: "\e248"; } -.icojam_train_station:before { - content: "\e6eb"; } +.glyphicon-object-align-right:before { + content: "\e249"; } -.icojam_TV_tower_repeater:before { - content: "\e6ec"; } +.glyphicon-triangle-right:before { + content: "\e250"; } -.icojam_university:before { - content: "\e6ed"; } +.glyphicon-triangle-left:before { + content: "\e251"; } -.icojam_warehouse:before { - content: "\e6ee"; } +.glyphicon-triangle-bottom:before { + content: "\e252"; } -.icojam_amphora:before { - content: "\e6ef"; } +.glyphicon-triangle-top:before { + content: "\e253"; } -.icojam_awards:before { - content: "\e6f0"; } +.glyphicon-console:before { + content: "\e254"; } -.icojam_books_1:before { - content: "\e6f1"; } +.glyphicon-superscript:before { + content: "\e255"; } -.icojam_books_2:before { - content: "\e6f2"; } +.glyphicon-subscript:before { + content: "\e256"; } -.icojam_crown_1:before { - content: "\e6f3"; } +.glyphicon-menu-left:before { + content: "\e257"; } -.icojam_crown_2:before { - content: "\e6f4"; } +.glyphicon-menu-right:before { + content: "\e258"; } -.icojam_death:before { - content: "\e6f5"; } +.glyphicon-menu-down:before { + content: "\e259"; } -.icojam_eater:before { - content: "\e6f6"; } +.glyphicon-menu-up:before { + content: "\e260"; } -.icojam_family:before { - content: "\e6f7"; } +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } -.icojam_ghost:before { - content: "\e6f8"; } +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } -.icojam_kill:before { - content: "\e6f9"; } +html { + font-size: 10px; + -webkit-tap-highlight-color: transparent; } -.icojam_leader:before { - content: "\e6fa"; } +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857; + color: #333333; + background-color: #fff; } + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; } -.icojam_mask:before { - content: "\e6fb"; } +a { + color: #337ab7; + text-decoration: none; } + a:hover, a:focus { + color: #23527c; + text-decoration: underline; } + a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } -.icojam_matreshka_1:before { - content: "\e6fc"; } +figure { + margin: 0; } -.icojam_matreshka_2:before { - content: "\e6fd"; } +img { + vertical-align: middle; } -.icojam_nature:before { - content: "\e6fe"; } +.img-responsive { + display: block; + max-width: 100%; + height: auto; } -.icojam_picture:before { - content: "\e6ff"; } +.img-rounded { + border-radius: 6px; } + +.img-thumbnail { + padding: 4px; + line-height: 1.42857; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; } -.icojam_pillar:before { - content: "\e700"; } +.img-circle { + border-radius: 50%; } -.icojam_smile_1:before { - content: "\e701"; } +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; } -.icojam_smile_2:before { - content: "\e702"; } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; } -.icojam_smile_3:before { - content: "\e703"; } +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; } -.icojam_smile_4:before { - content: "\e704"; } +[role="button"] { + cursor: pointer; } -.icojam_smile_disappointment:before { - content: "\e705"; } +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; } + h1 small, + h1 .small, h2 small, + h2 .small, h3 small, + h3 .small, h4 small, + h4 .small, h5 small, + h5 .small, h6 small, + h6 .small, + .h1 small, + .h1 .small, .h2 small, + .h2 .small, .h3 small, + .h3 .small, .h4 small, + .h4 .small, .h5 small, + .h5 .small, .h6 small, + .h6 .small { + font-weight: normal; + line-height: 1; + color: #777777; } + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: 20px; + margin-bottom: 10px; } + h1 small, + h1 .small, .h1 small, + .h1 .small, + h2 small, + h2 .small, .h2 small, + .h2 .small, + h3 small, + h3 .small, .h3 small, + .h3 .small { + font-size: 65%; } + +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: 10px; + margin-bottom: 10px; } + h4 small, + h4 .small, .h4 small, + .h4 .small, + h5 small, + h5 .small, .h5 small, + .h5 .small, + h6 small, + h6 .small, .h6 small, + .h6 .small { + font-size: 75%; } + +h1, .h1 { + font-size: 36px; } + +h2, .h2 { + font-size: 30px; } + +h3, .h3 { + font-size: 24px; } -.icojam_smile_fright:before { - content: "\e706"; } +h4, .h4 { + font-size: 18px; } -.icojam_smile_surprise:before { - content: "\e707"; } +h5, .h5 { + font-size: 14px; } -.icojam_smile_wink:before { - content: "\e708"; } +h6, .h6 { + font-size: 12px; } -.icojam_sun:before { - content: "\e709"; } +p { + margin: 0 0 10px; } -.icojam_wreath:before { - content: "\e70a"; } +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; } + @media (min-width: 768px) { + .lead { + font-size: 21px; } } -.icojam_yin_yang:before { - content: "\e70b"; } +small, +.small { + font-size: 85%; } -.icojam_calculator:before { - content: "\e70c"; } +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; } -.icojam_camera_betacam:before { - content: "\e70d"; } +.text-left { + text-align: left; } -.icojam_camera_video_1:before { - content: "\e70e"; } +.text-right { + text-align: right; } -.icojam_camera_video_2:before { - content: "\e70f"; } +.text-center { + text-align: center; } -.icojam_channel_close:before { - content: "\e710"; } +.text-justify { + text-align: justify; } -.icojam_channel_delete:before { - content: "\e711"; } +.text-nowrap { + white-space: nowrap; } -.icojam_channel_favorite:before { - content: "\e712"; } +.text-lowercase { + text-transform: lowercase; } -.icojam_channel_new:before { - content: "\e713"; } +.text-uppercase, .initialism { + text-transform: uppercase; } -.icojam_channel_pause:before { - content: "\e714"; } +.text-capitalize { + text-transform: capitalize; } -.icojam_channel_ready:before { - content: "\e715"; } +.text-muted { + color: #777777; } -.icojam_channel_stop:before { - content: "\e716"; } +.text-primary { + color: #337ab7; } -.icojam_channel_watch:before { - content: "\e717"; } +a.text-primary:hover, +a.text-primary:focus { + color: #286090; } -.icojam_computer:before { - content: "\e718"; } +.text-success { + color: #3c763d; } -.icojam_connection:before { - content: "\e719"; } +a.text-success:hover, +a.text-success:focus { + color: #2b542c; } -.icojam_connection_close:before { - content: "\e71a"; } +.text-info { + color: #31708f; } -.icojam_connection_delete:before { - content: "\e71b"; } +a.text-info:hover, +a.text-info:focus { + color: #245269; } -.icojam_connection_favorite:before { - content: "\e71c"; } +.text-warning { + color: #8a6d3b; } -.icojam_connection_new:before { - content: "\e71d"; } +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; } -.icojam_connection_ping:before { - content: "\e71e"; } +.text-danger { + color: #a94442; } -.icojam_connection_ready:before { - content: "\e71f"; } +a.text-danger:hover, +a.text-danger:focus { + color: #843534; } -.icojam_dec_phone:before { - content: "\e720"; } +.bg-primary { + color: #fff; } -.icojam_disc:before { - content: "\e721"; } +.bg-primary { + background-color: #337ab7; } -.icojam_external_drive:before { - content: "\e722"; } +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; } -.icojam_fax_1:before { - content: "\e723"; } +.bg-success { + background-color: #dff0d8; } -.icojam_fax_2:before { - content: "\e724"; } +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; } -.icojam_flashlight:before { - content: "\e725"; } +.bg-info { + background-color: #d9edf7; } -.icojam_hard_disk:before { - content: "\e726"; } +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; } -.icojam_hometheatre:before { - content: "\e727"; } +.bg-warning { + background-color: #fcf8e3; } -.icojam_iphone_horizontal_1:before { - content: "\e728"; } +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; } -.icojam_iphone_horizontal_2:before { - content: "\e729"; } +.bg-danger { + background-color: #f2dede; } -.icojam_iphone_vertical_1:before { - content: "\e72a"; } +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; } -.icojam_iphone_vertical_2:before { - content: "\e72b"; } +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; } -.icojam_joypad_games:before { - content: "\e72c"; } +ul, +ol { + margin-top: 0; + margin-bottom: 10px; } + ul ul, + ul ol, + ol ul, + ol ol { + margin-bottom: 0; } + +.list-unstyled { + padding-left: 0; + list-style: none; } -.icojam_keyboard:before { - content: "\e72d"; } +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; } + .list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; } -.icojam_loudspeakers:before { - content: "\e72e"; } +dl { + margin-top: 0; + margin-bottom: 20px; } -.icojam_mfu_xerox:before { - content: "\e72f"; } +dt, +dd { + line-height: 1.42857; } -.icojam_microphone:before { - content: "\e730"; } +dt { + font-weight: bold; } -.icojam_mobile_phone:before { - content: "\e731"; } +dd { + margin-left: 0; } -.icojam_monitor:before { - content: "\e732"; } +.dl-horizontal dd:before, .dl-horizontal dd:after { + content: " "; + display: table; } +.dl-horizontal dd:after { + clear: both; } +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .dl-horizontal dd { + margin-left: 180px; } } + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777777; } + +.initialism { + font-size: 90%; } + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; } + blockquote p:last-child, + blockquote ul:last-child, + blockquote ol:last-child { + margin-bottom: 0; } + blockquote footer, + blockquote small, + blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857; + color: #777777; } + blockquote footer:before, + blockquote small:before, + blockquote .small:before { + content: '\2014 \00A0'; } + +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; } + .blockquote-reverse footer:before, + .blockquote-reverse small:before, + .blockquote-reverse .small:before, + blockquote.pull-right footer:before, + blockquote.pull-right small:before, + blockquote.pull-right .small:before { + content: ''; } + .blockquote-reverse footer:after, + .blockquote-reverse small:after, + .blockquote-reverse .small:after, + blockquote.pull-right footer:after, + blockquote.pull-right small:after, + blockquote.pull-right .small:after { + content: '\00A0 \2014'; } + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857; } + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; } + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; } -.icojam_music_center:before { - content: "\e733"; } +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; } -.icojam_network:before { - content: "\e734"; } +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } -.icojam_notebook_1:before { - content: "\e735"; } +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; } + .container:before, .container:after { + content: " "; + display: table; } + .container:after { + clear: both; } + @media (min-width: 768px) { + .container { + width: 750px; } } + @media (min-width: 992px) { + .container { + width: 970px; } } + @media (min-width: 1200px) { + .container { + width: 1170px; } } + +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; } + .container-fluid:before, .container-fluid:after { + content: " "; + display: table; } + .container-fluid:after { + clear: both; } + +.row { + margin-left: -15px; + margin-right: -15px; } + .row:before, .row:after { + content: " "; + display: table; } + .row:after { + clear: both; } + +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; } -.icojam_notebook_2:before { - content: "\e736"; } +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; } -.icojam_notebook_3:before { - content: "\e737"; } +.col-xs-1 { + width: 8.33333%; } -.icojam_notebook_computer:before { - content: "\e738"; } +.col-xs-2 { + width: 16.66667%; } -.icojam_photo_backside:before { - content: "\e739"; } +.col-xs-3 { + width: 25%; } -.icojam_photo_camera:before { - content: "\e73a"; } +.col-xs-4 { + width: 33.33333%; } -.icojam_photo_compact:before { - content: "\e73b"; } +.col-xs-5 { + width: 41.66667%; } -.icojam_photo_flash:before { - content: "\e73c"; } +.col-xs-6 { + width: 50%; } -.icojam_piano_music:before { - content: "\e73d"; } +.col-xs-7 { + width: 58.33333%; } -.icojam_print:before { - content: "\e73e"; } +.col-xs-8 { + width: 66.66667%; } -.icojam_projector:before { - content: "\e73f"; } +.col-xs-9 { + width: 75%; } -.icojam_psp:before { - content: "\e740"; } +.col-xs-10 { + width: 83.33333%; } -.icojam_radio:before { - content: "\e741"; } +.col-xs-11 { + width: 91.66667%; } -.icojam_recorder:before { - content: "\e742"; } +.col-xs-12 { + width: 100%; } -.icojam_remote_control_1:before { - content: "\e743"; } +.col-xs-pull-0 { + right: auto; } -.icojam_remote_control_2:before { - content: "\e744"; } +.col-xs-pull-1 { + right: 8.33333%; } -.icojam_save:before { - content: "\e745"; } +.col-xs-pull-2 { + right: 16.66667%; } -.icojam_save_as:before { - content: "\e746"; } +.col-xs-pull-3 { + right: 25%; } -.icojam_scanner:before { - content: "\e747"; } +.col-xs-pull-4 { + right: 33.33333%; } -.icojam_sd_card_memory:before { - content: "\e748"; } +.col-xs-pull-5 { + right: 41.66667%; } -.icojam_server:before { - content: "\e749"; } +.col-xs-pull-6 { + right: 50%; } -.icojam_sim_card:before { - content: "\e74a"; } +.col-xs-pull-7 { + right: 58.33333%; } -.icojam_smartphone_1:before { - content: "\e74b"; } +.col-xs-pull-8 { + right: 66.66667%; } -.icojam_smartphone_2:before { - content: "\e74c"; } +.col-xs-pull-9 { + right: 75%; } -.icojam_telephone_1:before { - content: "\e74d"; } +.col-xs-pull-10 { + right: 83.33333%; } -.icojam_telephone_2:before { - content: "\e74e"; } +.col-xs-pull-11 { + right: 91.66667%; } -.icojam_telephone_3:before { - content: "\e74f"; } +.col-xs-pull-12 { + right: 100%; } -.icojam_tv:before { - content: "\e750"; } +.col-xs-push-0 { + left: auto; } -.icojam_tv_wide:before { - content: "\e751"; } +.col-xs-push-1 { + left: 8.33333%; } -.icojam_usb_flash:before { - content: "\e752"; } +.col-xs-push-2 { + left: 16.66667%; } -.icojam_videocamera_1:before { - content: "\e753"; } +.col-xs-push-3 { + left: 25%; } -.icojam_videocamera_2:before { - content: "\e754"; } +.col-xs-push-4 { + left: 33.33333%; } -.icojam_videocamera_3:before { - content: "\e755"; } +.col-xs-push-5 { + left: 41.66667%; } -.icojam_webcam:before { - content: "\e756"; } +.col-xs-push-6 { + left: 50%; } -.icojam_aac:before { - content: "\e757"; } +.col-xs-push-7 { + left: 58.33333%; } -.icojam_ai:before { - content: "\e758"; } +.col-xs-push-8 { + left: 66.66667%; } -.icojam_ape:before { - content: "\e759"; } +.col-xs-push-9 { + left: 75%; } -.icojam_asf:before { - content: "\e75a"; } +.col-xs-push-10 { + left: 83.33333%; } -.icojam_avi:before { - content: "\e75b"; } +.col-xs-push-11 { + left: 91.66667%; } -.icojam_bat:before { - content: "\e75c"; } +.col-xs-push-12 { + left: 100%; } -.icojam_bmp:before { - content: "\e75d"; } +.col-xs-offset-0 { + margin-left: 0%; } -.icojam_cdr:before { - content: "\e75e"; } +.col-xs-offset-1 { + margin-left: 8.33333%; } -.icojam_cfg:before { - content: "\e75f"; } +.col-xs-offset-2 { + margin-left: 16.66667%; } -.icojam_chm:before { - content: "\e760"; } +.col-xs-offset-3 { + margin-left: 25%; } -.icojam_com:before { - content: "\e761"; } +.col-xs-offset-4 { + margin-left: 33.33333%; } -.icojam_css:before { - content: "\e762"; } +.col-xs-offset-5 { + margin-left: 41.66667%; } -.icojam_csv:before { - content: "\e763"; } +.col-xs-offset-6 { + margin-left: 50%; } -.icojam_djv:before { - content: "\e764"; } +.col-xs-offset-7 { + margin-left: 58.33333%; } -.icojam_dll:before { - content: "\e765"; } +.col-xs-offset-8 { + margin-left: 66.66667%; } -.icojam_doc:before { - content: "\e766"; } +.col-xs-offset-9 { + margin-left: 75%; } -.icojam_document_audio:before { - content: "\e767"; } +.col-xs-offset-10 { + margin-left: 83.33333%; } -.icojam_document_image:before { - content: "\e768"; } +.col-xs-offset-11 { + margin-left: 91.66667%; } -.icojam_document_photo:before { - content: "\e769"; } +.col-xs-offset-12 { + margin-left: 100%; } -.icojam_document_system:before { - content: "\e76a"; } +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; } -.icojam_document_text:before { - content: "\e76b"; } + .col-sm-1 { + width: 8.33333%; } -.icojam_document_unknown:before { - content: "\e76c"; } + .col-sm-2 { + width: 16.66667%; } -.icojam_document_video:before { - content: "\e76d"; } + .col-sm-3 { + width: 25%; } -.icojam_document_voice:before { - content: "\e76e"; } + .col-sm-4 { + width: 33.33333%; } -.icojam_docx:before { - content: "\e76f"; } + .col-sm-5 { + width: 41.66667%; } -.icojam_eps:before { - content: "\e770"; } + .col-sm-6 { + width: 50%; } -.icojam_exe:before { - content: "\e771"; } + .col-sm-7 { + width: 58.33333%; } -.icojam_file_audio:before { - content: "\e772"; } + .col-sm-8 { + width: 66.66667%; } -.icojam_file_image:before { - content: "\e773"; } + .col-sm-9 { + width: 75%; } -.icojam_file_photo:before { - content: "\e774"; } + .col-sm-10 { + width: 83.33333%; } -.icojam_file_video:before { - content: "\e775"; } + .col-sm-11 { + width: 91.66667%; } -.icojam_file_voice:before { - content: "\e776"; } + .col-sm-12 { + width: 100%; } -.icojam_fla:before { - content: "\e777"; } + .col-sm-pull-0 { + right: auto; } -.icojam_flac:before { - content: "\e778"; } + .col-sm-pull-1 { + right: 8.33333%; } -.icojam_gif:before { - content: "\e779"; } + .col-sm-pull-2 { + right: 16.66667%; } -.icojam_html:before { - content: "\e77a"; } + .col-sm-pull-3 { + right: 25%; } -.icojam_icl:before { - content: "\e77b"; } + .col-sm-pull-4 { + right: 33.33333%; } -.icojam_icns:before { - content: "\e77c"; } + .col-sm-pull-5 { + right: 41.66667%; } -.icojam_ico:before { - content: "\e77d"; } + .col-sm-pull-6 { + right: 50%; } -.icojam_ini:before { - content: "\e77e"; } + .col-sm-pull-7 { + right: 58.33333%; } -.icojam_iso:before { - content: "\e77f"; } + .col-sm-pull-8 { + right: 66.66667%; } -.icojam_jpg:before { - content: "\e780"; } + .col-sm-pull-9 { + right: 75%; } -.icojam_log:before { - content: "\e781"; } + .col-sm-pull-10 { + right: 83.33333%; } -.icojam_midi:before { - content: "\e782"; } + .col-sm-pull-11 { + right: 91.66667%; } -.icojam_mkv:before { - content: "\e783"; } + .col-sm-pull-12 { + right: 100%; } -.icojam_mov:before { - content: "\e784"; } + .col-sm-push-0 { + left: auto; } -.icojam_mp3:before { - content: "\e785"; } + .col-sm-push-1 { + left: 8.33333%; } -.icojam_mp4:before { - content: "\e786"; } + .col-sm-push-2 { + left: 16.66667%; } -.icojam_mpg:before { - content: "\e787"; } + .col-sm-push-3 { + left: 25%; } -.icojam_ogg:before { - content: "\e788"; } + .col-sm-push-4 { + left: 33.33333%; } -.icojam_ogm:before { - content: "\e789"; } + .col-sm-push-5 { + left: 41.66667%; } -.icojam_otf:before { - content: "\e78a"; } + .col-sm-push-6 { + left: 50%; } -.icojam_pdf:before { - content: "\e78b"; } + .col-sm-push-7 { + left: 58.33333%; } -.icojam_png:before { - content: "\e78c"; } + .col-sm-push-8 { + left: 66.66667%; } -.icojam_ppt:before { - content: "\e78d"; } + .col-sm-push-9 { + left: 75%; } -.icojam_pptx:before { - content: "\e78e"; } + .col-sm-push-10 { + left: 83.33333%; } -.icojam_psd:before { - content: "\e78f"; } + .col-sm-push-11 { + left: 91.66667%; } -.icojam_ra:before { - content: "\e790"; } + .col-sm-push-12 { + left: 100%; } -.icojam_rar:before { - content: "\e791"; } + .col-sm-offset-0 { + margin-left: 0%; } -.icojam_raw:before { - content: "\e792"; } + .col-sm-offset-1 { + margin-left: 8.33333%; } -.icojam_rm:before { - content: "\e793"; } + .col-sm-offset-2 { + margin-left: 16.66667%; } -.icojam_rtf:before { - content: "\e794"; } + .col-sm-offset-3 { + margin-left: 25%; } -.icojam_svg:before { - content: "\e795"; } + .col-sm-offset-4 { + margin-left: 33.33333%; } -.icojam_svgz:before { - content: "\e796"; } + .col-sm-offset-5 { + margin-left: 41.66667%; } -.icojam_swf:before { - content: "\e797"; } + .col-sm-offset-6 { + margin-left: 50%; } -.icojam_sys:before { - content: "\e798"; } + .col-sm-offset-7 { + margin-left: 58.33333%; } -.icojam_tga:before { - content: "\e799"; } + .col-sm-offset-8 { + margin-left: 66.66667%; } -.icojam_tif:before { - content: "\e79a"; } + .col-sm-offset-9 { + margin-left: 75%; } -.icojam_ttf:before { - content: "\e79b"; } + .col-sm-offset-10 { + margin-left: 83.33333%; } -.icojam_txt:before { - content: "\e79c"; } + .col-sm-offset-11 { + margin-left: 91.66667%; } -.icojam_wav:before { - content: "\e79d"; } + .col-sm-offset-12 { + margin-left: 100%; } } +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; } -.icojam_wma:before { - content: "\e79e"; } + .col-md-1 { + width: 8.33333%; } -.icojam_wmv:before { - content: "\e79f"; } + .col-md-2 { + width: 16.66667%; } -.icojam_xls:before { - content: "\e7a0"; } + .col-md-3 { + width: 25%; } -.icojam_xlsx:before { - content: "\e7a1"; } + .col-md-4 { + width: 33.33333%; } -.icojam_xml:before { - content: "\e7a2"; } + .col-md-5 { + width: 41.66667%; } -.icojam_zip:before { - content: "\e7a3"; } + .col-md-6 { + width: 50%; } -.icojam_alarm_clock:before { - content: "\e7a4"; } + .col-md-7 { + width: 58.33333%; } -.icojam_alphabet:before { - content: "\e7a5"; } + .col-md-8 { + width: 66.66667%; } -.icojam_army_training:before { - content: "\e7a6"; } + .col-md-9 { + width: 75%; } -.icojam_badge:before { - content: "\e7a7"; } + .col-md-10 { + width: 83.33333%; } -.icojam_book_1:before { - content: "\e7a8"; } + .col-md-11 { + width: 91.66667%; } -.icojam_book_2:before { - content: "\e7a9"; } + .col-md-12 { + width: 100%; } -.icojam_book_3:before { - content: "\e7aa"; } + .col-md-pull-0 { + right: auto; } -.icojam_books_12:before { - content: "\e7ab"; } + .col-md-pull-1 { + right: 8.33333%; } -.icojam_books_22:before { - content: "\e7ac"; } + .col-md-pull-2 { + right: 16.66667%; } -.icojam_brush:before { - content: "\e7ad"; } + .col-md-pull-3 { + right: 25%; } -.icojam_calculator2:before { - content: "\e7ae"; } + .col-md-pull-4 { + right: 33.33333%; } -.icojam_calendar:before { - content: "\e7af"; } + .col-md-pull-5 { + right: 41.66667%; } -.icojam_certificate:before { - content: "\e7b0"; } + .col-md-pull-6 { + right: 50%; } -.icojam_chemistry_1:before { - content: "\e7b1"; } + .col-md-pull-7 { + right: 58.33333%; } -.icojam_chemistry_2:before { - content: "\e7b2"; } + .col-md-pull-8 { + right: 66.66667%; } -.icojam_classboard:before { - content: "\e7b3"; } + .col-md-pull-9 { + right: 75%; } -.icojam_copybook_1:before { - content: "\e7b4"; } + .col-md-pull-10 { + right: 83.33333%; } -.icojam_copybook_2:before { - content: "\e7b5"; } + .col-md-pull-11 { + right: 91.66667%; } -.icojam_copybook_3:before { - content: "\e7b6"; } + .col-md-pull-12 { + right: 100%; } -.icojam_copybook_4:before { - content: "\e7b7"; } + .col-md-push-0 { + left: auto; } -.icojam_desk:before { - content: "\e7b8"; } + .col-md-push-1 { + left: 8.33333%; } -.icojam_dna_1:before { - content: "\e7b9"; } + .col-md-push-2 { + left: 16.66667%; } -.icojam_dna_2:before { - content: "\e7ba"; } + .col-md-push-3 { + left: 25%; } -.icojam_drawing:before { - content: "\e7bb"; } + .col-md-push-4 { + left: 33.33333%; } -.icojam_geography:before { - content: "\e7bc"; } + .col-md-push-5 { + left: 41.66667%; } -.icojam_geography_earth:before { - content: "\e7bd"; } + .col-md-push-6 { + left: 50%; } -.icojam_geography_globe:before { - content: "\e7be"; } + .col-md-push-7 { + left: 58.33333%; } -.icojam_geometry:before { - content: "\e7bf"; } + .col-md-push-8 { + left: 66.66667%; } -.icojam_holliday:before { - content: "\e7c0"; } + .col-md-push-9 { + left: 75%; } -.icojam_home2:before { - content: "\e7c1"; } + .col-md-push-10 { + left: 83.33333%; } -.icojam_language:before { - content: "\e7c2"; } + .col-md-push-11 { + left: 91.66667%; } -.icojam_list_1:before { - content: "\e7c3"; } + .col-md-push-12 { + left: 100%; } -.icojam_list_2:before { - content: "\e7c4"; } + .col-md-offset-0 { + margin-left: 0%; } -.icojam_list_3:before { - content: "\e7c5"; } + .col-md-offset-1 { + margin-left: 8.33333%; } -.icojam_list_4:before { - content: "\e7c6"; } + .col-md-offset-2 { + margin-left: 16.66667%; } -.icojam_list_5:before { - content: "\e7c7"; } + .col-md-offset-3 { + margin-left: 25%; } -.icojam_list_6:before { - content: "\e7c8"; } + .col-md-offset-4 { + margin-left: 33.33333%; } -.icojam_list_7:before { - content: "\e7c9"; } + .col-md-offset-5 { + margin-left: 41.66667%; } -.icojam_list_8:before { - content: "\e7ca"; } + .col-md-offset-6 { + margin-left: 50%; } -.icojam_mark_1:before { - content: "\e7cb"; } + .col-md-offset-7 { + margin-left: 58.33333%; } -.icojam_mark_1-:before { - content: "\e7cc"; } + .col-md-offset-8 { + margin-left: 66.66667%; } -.icojam_mark_12:before { - content: "\e7cd"; } + .col-md-offset-9 { + margin-left: 75%; } -.icojam_mark_2:before { - content: "\e7ce"; } + .col-md-offset-10 { + margin-left: 83.33333%; } -.icojam_mark_2-:before { - content: "\e7cf"; } + .col-md-offset-11 { + margin-left: 91.66667%; } -.icojam_mark_22:before { - content: "\e7d0"; } + .col-md-offset-12 { + margin-left: 100%; } } +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; } -.icojam_mark_3:before { - content: "\e7d1"; } + .col-lg-1 { + width: 8.33333%; } -.icojam_mark_3-:before { - content: "\e7d2"; } + .col-lg-2 { + width: 16.66667%; } -.icojam_mark_32:before { - content: "\e7d3"; } + .col-lg-3 { + width: 25%; } -.icojam_mark_4:before { - content: "\e7d4"; } + .col-lg-4 { + width: 33.33333%; } -.icojam_mark_4-:before { - content: "\e7d5"; } + .col-lg-5 { + width: 41.66667%; } -.icojam_mark_42:before { - content: "\e7d6"; } + .col-lg-6 { + width: 50%; } -.icojam_mark_5:before { - content: "\e7d7"; } + .col-lg-7 { + width: 58.33333%; } -.icojam_mark_5-:before { - content: "\e7d8"; } + .col-lg-8 { + width: 66.66667%; } -.icojam_mark_52:before { - content: "\e7d9"; } + .col-lg-9 { + width: 75%; } -.icojam_mark_a:before { - content: "\e7da"; } + .col-lg-10 { + width: 83.33333%; } -.icojam_mark_a-:before { - content: "\e7db"; } + .col-lg-11 { + width: 91.66667%; } -.icojam_mark_a2:before { - content: "\e7dc"; } + .col-lg-12 { + width: 100%; } -.icojam_mark_b:before { - content: "\e7dd"; } + .col-lg-pull-0 { + right: auto; } -.icojam_mark_b-:before { - content: "\e7de"; } + .col-lg-pull-1 { + right: 8.33333%; } -.icojam_mark_b2:before { - content: "\e7df"; } + .col-lg-pull-2 { + right: 16.66667%; } -.icojam_mark_c:before { - content: "\e7e0"; } + .col-lg-pull-3 { + right: 25%; } -.icojam_mark_c-:before { - content: "\e7e1"; } + .col-lg-pull-4 { + right: 33.33333%; } -.icojam_mark_c2:before { - content: "\e7e2"; } + .col-lg-pull-5 { + right: 41.66667%; } -.icojam_mark_d:before { - content: "\e7e3"; } + .col-lg-pull-6 { + right: 50%; } -.icojam_mark_d-:before { - content: "\e7e4"; } + .col-lg-pull-7 { + right: 58.33333%; } -.icojam_mark_d2:before { - content: "\e7e5"; } + .col-lg-pull-8 { + right: 66.66667%; } -.icojam_mark_e:before { - content: "\e7e6"; } + .col-lg-pull-9 { + right: 75%; } -.icojam_mark_e-:before { - content: "\e7e7"; } + .col-lg-pull-10 { + right: 83.33333%; } -.icojam_mark_e2:before { - content: "\e7e8"; } + .col-lg-pull-11 { + right: 91.66667%; } -.icojam_mathematics:before { - content: "\e7e9"; } + .col-lg-pull-12 { + right: 100%; } -.icojam_music:before { - content: "\e7ea"; } + .col-lg-push-0 { + left: auto; } -.icojam_notebook:before { - content: "\e7eb"; } + .col-lg-push-1 { + left: 8.33333%; } -.icojam_notepad:before { - content: "\e7ec"; } + .col-lg-push-2 { + left: 16.66667%; } -.icojam_palette_1:before { - content: "\e7ed"; } + .col-lg-push-3 { + left: 25%; } -.icojam_palette_2:before { - content: "\e7ee"; } + .col-lg-push-4 { + left: 33.33333%; } -.icojam_pen:before { - content: "\e7ef"; } + .col-lg-push-5 { + left: 41.66667%; } -.icojam_pencil:before { - content: "\e7f0"; } + .col-lg-push-6 { + left: 50%; } -.icojam_pupil_boy:before { - content: "\e7f1"; } + .col-lg-push-7 { + left: 58.33333%; } -.icojam_pupil_girl:before { - content: "\e7f2"; } + .col-lg-push-8 { + left: 66.66667%; } -.icojam_pupils:before { - content: "\e7f3"; } + .col-lg-push-9 { + left: 75%; } -.icojam_rating:before { - content: "\e7f4"; } + .col-lg-push-10 { + left: 83.33333%; } -.icojam_rating_high:before { - content: "\e7f5"; } + .col-lg-push-11 { + left: 91.66667%; } -.icojam_rating_lowstar:before { - content: "\e7f6"; } + .col-lg-push-12 { + left: 100%; } -.icojam_ruler:before { - content: "\e7f7"; } + .col-lg-offset-0 { + margin-left: 0%; } -.icojam_school:before { - content: "\e7f8"; } + .col-lg-offset-1 { + margin-left: 8.33333%; } -.icojam_school_bus:before { - content: "\e7f9"; } + .col-lg-offset-2 { + margin-left: 16.66667%; } -.icojam_sport_1:before { - content: "\e7fa"; } + .col-lg-offset-3 { + margin-left: 25%; } -.icojam_sport_2:before { - content: "\e7fb"; } + .col-lg-offset-4 { + margin-left: 33.33333%; } -.icojam_bank_1:before { - content: "\e7fc"; } + .col-lg-offset-5 { + margin-left: 41.66667%; } -.icojam_bank_2:before { - content: "\e7fd"; } - -.icojam_bed:before { - content: "\e7fe"; } + .col-lg-offset-6 { + margin-left: 50%; } -.icojam_career:before { - content: "\e7ff"; } + .col-lg-offset-7 { + margin-left: 58.33333%; } -.icojam_chair:before { - content: "\e800"; } + .col-lg-offset-8 { + margin-left: 66.66667%; } -.icojam_change:before { - content: "\e801"; } + .col-lg-offset-9 { + margin-left: 75%; } -.icojam_coin_amero:before { - content: "\e802"; } + .col-lg-offset-10 { + margin-left: 83.33333%; } -.icojam_coin_dollar:before { - content: "\e803"; } + .col-lg-offset-11 { + margin-left: 91.66667%; } -.icojam_coin_euro:before { - content: "\e804"; } + .col-lg-offset-12 { + margin-left: 100%; } } +table { + background-color: transparent; } -.icojam_coin_pound:before { - content: "\e805"; } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777777; + text-align: left; } -.icojam_coin_ruble:before { - content: "\e806"; } +th { + text-align: left; } -.icojam_coin_yuan:before { - content: "\e807"; } +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; } + .table > thead > tr > th, + .table > thead > tr > td, + .table > tbody > tr > th, + .table > tbody > tr > td, + .table > tfoot > tr > th, + .table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857; + vertical-align: top; + border-top: 1px solid #ddd; } + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; } + .table > caption + thead > tr:first-child > th, + .table > caption + thead > tr:first-child > td, + .table > colgroup + thead > tr:first-child > th, + .table > colgroup + thead > tr:first-child > td, + .table > thead:first-child > tr:first-child > th, + .table > thead:first-child > tr:first-child > td { + border-top: 0; } + .table > tbody + tbody { + border-top: 2px solid #ddd; } + .table .table { + background-color: #fff; } + +.table-condensed > thead > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > th, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > th, +.table-condensed > tfoot > tr > td { + padding: 5px; } + +.table-bordered { + border: 1px solid #ddd; } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td, + .table-bordered > tbody > tr > th, + .table-bordered > tbody > tr > td, + .table-bordered > tfoot > tr > th, + .table-bordered > tfoot > tr > td { + border: 1px solid #ddd; } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td { + border-bottom-width: 2px; } + +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; } + +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; } + +table col[class*="col-"] { + position: static; + float: none; + display: table-column; } -.icojam_coins:before { - content: "\e808"; } +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; } + +.table > thead > tr > td.active, +.table > thead > tr > th.active, .table > thead > tr.active > td, .table > thead > tr.active > th, +.table > tbody > tr > td.active, +.table > tbody > tr > th.active, +.table > tbody > tr.active > td, +.table > tbody > tr.active > th, +.table > tfoot > tr > td.active, +.table > tfoot > tr > th.active, +.table > tfoot > tr.active > td, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; } + +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; } + +.table > thead > tr > td.success, +.table > thead > tr > th.success, .table > thead > tr.success > td, .table > thead > tr.success > th, +.table > tbody > tr > td.success, +.table > tbody > tr > th.success, +.table > tbody > tr.success > td, +.table > tbody > tr.success > th, +.table > tfoot > tr > td.success, +.table > tfoot > tr > th.success, +.table > tfoot > tr.success > td, +.table > tfoot > tr.success > th { + background-color: #dff0d8; } + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; } + +.table > thead > tr > td.info, +.table > thead > tr > th.info, .table > thead > tr.info > td, .table > thead > tr.info > th, +.table > tbody > tr > td.info, +.table > tbody > tr > th.info, +.table > tbody > tr.info > td, +.table > tbody > tr.info > th, +.table > tfoot > tr > td.info, +.table > tfoot > tr > th.info, +.table > tfoot > tr.info > td, +.table > tfoot > tr.info > th { + background-color: #d9edf7; } + +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; } + +.table > thead > tr > td.warning, +.table > thead > tr > th.warning, .table > thead > tr.warning > td, .table > thead > tr.warning > th, +.table > tbody > tr > td.warning, +.table > tbody > tr > th.warning, +.table > tbody > tr.warning > td, +.table > tbody > tr.warning > th, +.table > tfoot > tr > td.warning, +.table > tfoot > tr > th.warning, +.table > tfoot > tr.warning > td, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; } + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; } + +.table > thead > tr > td.danger, +.table > thead > tr > th.danger, .table > thead > tr.danger > td, .table > thead > tr.danger > th, +.table > tbody > tr > td.danger, +.table > tbody > tr > th.danger, +.table > tbody > tr.danger > td, +.table > tbody > tr.danger > th, +.table > tfoot > tr > td.danger, +.table > tfoot > tr > th.danger, +.table > tfoot > tr.danger > td, +.table > tfoot > tr.danger > th { + background-color: #f2dede; } + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; } + +.table-responsive { + overflow-x: auto; + min-height: 0.01%; } + @media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; } + .table-responsive > .table { + margin-bottom: 0; } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; } + .table-responsive > .table-bordered { + border: 0; } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; } } -.icojam_crisis:before { - content: "\e809"; } +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; } -.icojam_elevation_1:before { - content: "\e80a"; } +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; } -.icojam_elevation_2:before { - content: "\e80b"; } +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; } -.icojam_elevation_3:before { - content: "\e80c"; } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } -.icojam_elevation_4:before { - content: "\e80d"; } +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; } -.icojam_elevation_5:before { - content: "\e80e"; } +input[type="file"] { + display: block; } -.icojam_elevation_6:before { - content: "\e80f"; } +input[type="range"] { + display: block; + width: 100%; } -.icojam_factory_12:before { - content: "\e810"; } +select[multiple], +select[size] { + height: auto; } -.icojam_factory_22:before { - content: "\e811"; } +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } -.icojam_hierarchy_1:before { - content: "\e812"; } +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857; + color: #555555; } -.icojam_hierarchy_2:before { - content: "\e813"; } +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } + .form-control::-moz-placeholder { + color: #999; + opacity: 1; } + .form-control:-ms-input-placeholder { + color: #999; } + .form-control::-webkit-input-placeholder { + color: #999; } + .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: #eeeeee; + opacity: 1; } + .form-control[disabled], fieldset[disabled] .form-control { + cursor: not-allowed; } + +textarea.form-control { + height: auto; } -.icojam_income_1:before { - content: "\e814"; } +input[type="search"] { + -webkit-appearance: none; } + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; } + input[type="date"].input-sm, .input-group-sm > input[type="date"].form-control, + .input-group-sm > input[type="date"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="date"].btn, .input-group-sm input[type="date"], + input[type="time"].input-sm, + .input-group-sm > input[type="time"].form-control, + .input-group-sm > input[type="time"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="time"].btn, .input-group-sm + input[type="time"], + input[type="datetime-local"].input-sm, + .input-group-sm > input[type="datetime-local"].form-control, + .input-group-sm > input[type="datetime-local"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="datetime-local"].btn, .input-group-sm + input[type="datetime-local"], + input[type="month"].input-sm, + .input-group-sm > input[type="month"].form-control, + .input-group-sm > input[type="month"].input-group-addon, + .input-group-sm > .input-group-btn > input[type="month"].btn, .input-group-sm + input[type="month"] { + line-height: 30px; } + input[type="date"].input-lg, .input-group-lg > input[type="date"].form-control, + .input-group-lg > input[type="date"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="date"].btn, .input-group-lg input[type="date"], + input[type="time"].input-lg, + .input-group-lg > input[type="time"].form-control, + .input-group-lg > input[type="time"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="time"].btn, .input-group-lg + input[type="time"], + input[type="datetime-local"].input-lg, + .input-group-lg > input[type="datetime-local"].form-control, + .input-group-lg > input[type="datetime-local"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="datetime-local"].btn, .input-group-lg + input[type="datetime-local"], + input[type="month"].input-lg, + .input-group-lg > input[type="month"].form-control, + .input-group-lg > input[type="month"].input-group-addon, + .input-group-lg > .input-group-btn > input[type="month"].btn, .input-group-lg + input[type="month"] { + line-height: 46px; } } +.form-group { + margin-bottom: 15px; } + +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; } + .radio label, + .checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; } -.icojam_income_2:before { - content: "\e815"; } +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; } -.icojam_income_3:before { - content: "\e816"; } +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; } -.icojam_income_4:before { - content: "\e817"; } +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; } -.icojam_loan:before { - content: "\e818"; } +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; } -.icojam_market:before { - content: "\e819"; } +input[type="radio"][disabled], input[type="radio"].disabled, fieldset[disabled] input[type="radio"], +input[type="checkbox"][disabled], +input[type="checkbox"].disabled, fieldset[disabled] +input[type="checkbox"] { + cursor: not-allowed; } + +.radio-inline.disabled, fieldset[disabled] .radio-inline, +.checkbox-inline.disabled, fieldset[disabled] +.checkbox-inline { + cursor: not-allowed; } + +.radio.disabled label, fieldset[disabled] .radio label, +.checkbox.disabled label, fieldset[disabled] +.checkbox label { + cursor: not-allowed; } + +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; + min-height: 34px; } + .form-control-static.input-lg, .input-group-lg > .form-control-static.form-control, + .input-group-lg > .form-control-static.input-group-addon, + .input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control, + .input-group-sm > .form-control-static.input-group-addon, + .input-group-sm > .input-group-btn > .form-control-static.btn { + padding-left: 0; + padding-right: 0; } + +.input-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } + +select.input-sm, .input-group-sm > select.form-control, +.input-group-sm > select.input-group-addon, +.input-group-sm > .input-group-btn > select.btn { + height: 30px; + line-height: 30px; } + +textarea.input-sm, .input-group-sm > textarea.form-control, +.input-group-sm > textarea.input-group-addon, +.input-group-sm > .input-group-btn > textarea.btn, +select[multiple].input-sm, +.input-group-sm > select[multiple].form-control, +.input-group-sm > select[multiple].input-group-addon, +.input-group-sm > .input-group-btn > select[multiple].btn { + height: auto; } -.icojam_money:before { - content: "\e81a"; } +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; } +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; } +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; } -.icojam_moneys_1:before { - content: "\e81b"; } +.input-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } + +select.input-lg, .input-group-lg > select.form-control, +.input-group-lg > select.input-group-addon, +.input-group-lg > .input-group-btn > select.btn { + height: 46px; + line-height: 46px; } + +textarea.input-lg, .input-group-lg > textarea.form-control, +.input-group-lg > textarea.input-group-addon, +.input-group-lg > .input-group-btn > textarea.btn, +select[multiple].input-lg, +.input-group-lg > select[multiple].form-control, +.input-group-lg > select[multiple].input-group-addon, +.input-group-lg > .input-group-btn > select[multiple].btn { + height: auto; } -.icojam_moneys_2:before { - content: "\e81c"; } +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; } +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; } +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.33333; } -.icojam_moneys_3:before { - content: "\e81d"; } +.has-feedback { + position: relative; } + .has-feedback .form-control { + padding-right: 42.5px; } -.icojam_object_child:before { - content: "\e81e"; } +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; } + +.input-lg + .form-control-feedback, .input-group-lg > .form-control + .form-control-feedback, +.input-group-lg > .input-group-addon + .form-control-feedback, +.input-group-lg > .input-group-btn > .btn + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; } + +.input-sm + .form-control-feedback, .input-group-sm > .form-control + .form-control-feedback, +.input-group-sm > .input-group-addon + .form-control-feedback, +.input-group-sm > .input-group-btn > .btn + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; } + +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, .has-success.radio label, .has-success.checkbox label, .has-success.radio-inline label, .has-success.checkbox-inline label { + color: #3c763d; } +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; } +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; } +.has-success .form-control-feedback { + color: #3c763d; } + +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, .has-warning.radio label, .has-warning.checkbox label, .has-warning.radio-inline label, .has-warning.checkbox-inline label { + color: #8a6d3b; } +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; } +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; } +.has-warning .form-control-feedback { + color: #8a6d3b; } + +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, .has-error.radio label, .has-error.checkbox label, .has-error.radio-inline label, .has-error.checkbox-inline label { + color: #a94442; } +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } + .has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; } +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; } +.has-error .form-control-feedback { + color: #a94442; } + +.has-feedback label ~ .form-control-feedback { + top: 25px; } +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; } -.icojam_object_root:before { - content: "\e81f"; } +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; } -.icojam_payment_1:before { - content: "\e820"; } +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .form-inline .form-control-static { + display: inline-block; } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; } + .form-inline .input-group > .form-control { + width: 100%; } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; } + .form-inline .has-feedback .form-control-feedback { + top: 0; } } + +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; } +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; } +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; } + .form-horizontal .form-group:before, .form-horizontal .form-group:after { + content: " "; + display: table; } + .form-horizontal .form-group:after { + clear: both; } +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 7px; } } +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; } +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.33333px; + font-size: 18px; } } +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; } } -.icojam_payment_2:before { - content: "\e821"; } +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; } + .btn:hover, .btn:focus, .btn.focus { + color: #333; + text-decoration: none; } + .btn:active, .btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } + .btn.disabled, .btn[disabled], fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; } -.icojam_payment_3:before { - content: "\e822"; } +a.btn.disabled, fieldset[disabled] a.btn { + pointer-events: none; } + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; } + .btn-default:focus, .btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; } + .btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; } + .btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; } + .btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus, .open > .btn-default.dropdown-toggle:hover, .open > .btn-default.dropdown-toggle:focus, .open > .btn-default.dropdown-toggle.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; } + .btn-default:active, .btn-default.active, .open > .btn-default.dropdown-toggle { + background-image: none; } + .btn-default.disabled, .btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled.focus, .btn-default.disabled:active, .btn-default.disabled.active, .btn-default[disabled], .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled].focus, .btn-default[disabled]:active, .btn-default[disabled].active, fieldset[disabled] .btn-default, fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default.focus, fieldset[disabled] .btn-default:active, fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; } + .btn-default .badge { + color: #fff; + background-color: #333; } + +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; } + .btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; } + .btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; } + .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #286090; + border-color: #204d74; } + .btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, .open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; } + .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle { + background-image: none; } + .btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, .btn-primary[disabled]:active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; } + .btn-primary .badge { + color: #337ab7; + background-color: #fff; } + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; } + .btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; } + .btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; } + .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { + color: #fff; + background-color: #449d44; + border-color: #398439; } + .btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus, .open > .btn-success.dropdown-toggle:hover, .open > .btn-success.dropdown-toggle:focus, .open > .btn-success.dropdown-toggle.focus { + color: #fff; + background-color: #398439; + border-color: #255625; } + .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle { + background-image: none; } + .btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus, .btn-success[disabled]:active, .btn-success[disabled].active, fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; } + .btn-success .badge { + color: #5cb85c; + background-color: #fff; } + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; } + .btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; } + .btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; } + .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; } + .btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus, .open > .btn-info.dropdown-toggle:hover, .open > .btn-info.dropdown-toggle:focus, .open > .btn-info.dropdown-toggle.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; } + .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle { + background-image: none; } + .btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus, .btn-info[disabled]:active, .btn-info[disabled].active, fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; } + .btn-info .badge { + color: #5bc0de; + background-color: #fff; } + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; } + .btn-warning:focus, .btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; } + .btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; } + .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #ec971f; + border-color: #d58512; } + .btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus, .open > .btn-warning.dropdown-toggle:hover, .open > .btn-warning.dropdown-toggle:focus, .open > .btn-warning.dropdown-toggle.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; } + .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle { + background-image: none; } + .btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus, .btn-warning[disabled]:active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; } + .btn-warning .badge { + color: #f0ad4e; + background-color: #fff; } + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; } + .btn-danger:focus, .btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; } + .btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; } + .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; } + .btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus, .open > .btn-danger.dropdown-toggle:hover, .open > .btn-danger.dropdown-toggle:focus, .open > .btn-danger.dropdown-toggle.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; } + .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle { + background-image: none; } + .btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled].focus, .btn-danger[disabled]:active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; } + .btn-danger .badge { + color: #d9534f; + background-color: #fff; } + +.btn-link { + color: #337ab7; + font-weight: normal; + border-radius: 0; } + .btn-link, .btn-link:active, .btn-link.active, .btn-link[disabled], fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; } + .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { + border-color: transparent; } + .btn-link:hover, .btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; } + .btn-link[disabled]:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; + border-radius: 6px; } -.icojam_payment_4:before { - content: "\e823"; } +.btn-sm, .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } -.icojam_piggy_bank:before { - content: "\e824"; } +.btn-xs, .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; } -.icojam_product_1:before { - content: "\e825"; } +.btn-block { + display: block; + width: 100%; } -.icojam_product_2:before { - content: "\e826"; } +.btn-block + .btn-block { + margin-top: 5px; } -.icojam_purse_1:before { - content: "\e827"; } +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } -.icojam_purse_2:before { - content: "\e828"; } +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; } + .fade.in { + opacity: 1; } -.icojam_purse_3:before { - content: "\e829"; } +.collapse { + display: none; } + .collapse.in { + display: block; } -.icojam_purse_4:before { - content: "\e82a"; } +tr.collapse.in { + display: table-row; } -.icojam_purse_5:before { - content: "\e82b"; } +tbody.collapse.in { + display: table-row-group; } -.icojam_purse_6:before { - content: "\e82c"; } +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; } + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; } + +.dropup, +.dropdown { + position: relative; } -.icojam_purse_7:before { - content: "\e82d"; } +.dropdown-toggle:focus { + outline: 0; } -.icojam_purse_8:before { - content: "\e82e"; } +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; } + .dropdown-menu.pull-right { + right: 0; + left: auto; } + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; } + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857; + color: #333333; + white-space: nowrap; } + +.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; } -.icojam_recession_1:before { - content: "\e82f"; } +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + outline: 0; + background-color: #337ab7; } -.icojam_recession_2:before { - content: "\e830"; } +.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + color: #777777; } +.dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; } -.icojam_recession_3:before { - content: "\e831"; } +.open > .dropdown-menu { + display: block; } +.open > a { + outline: 0; } -.icojam_recession_4:before { - content: "\e832"; } +.dropdown-menu-right { + left: auto; + right: 0; } -.icojam_recession_5:before { - content: "\e833"; } +.dropdown-menu-left { + left: 0; + right: auto; } -.icojam_rise_and_fall_1:before { - content: "\e834"; } +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857; + color: #777777; + white-space: nowrap; } -.icojam_rise_and_fall_2:before { - content: "\e835"; } +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; } -.icojam_room:before { - content: "\e836"; } +.pull-right > .dropdown-menu { + right: 0; + left: auto; } + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; } -.icojam_safe:before { - content: "\e837"; } - -.icojam_scheme:before { - content: "\e838"; } - -.icojam_sign_amero:before { - content: "\e839"; } +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; } } +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + float: left; } + .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:hover, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 2; } + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; } + +.btn-toolbar { + margin-left: -5px; } + .btn-toolbar:before, .btn-toolbar:after { + content: " "; + display: table; } + .btn-toolbar:after { + clear: both; } + .btn-toolbar .btn, + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: left; } + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-left: 5px; } + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; } -.icojam_sign_dollar:before { - content: "\e83a"; } +.btn-group > .btn:first-child { + margin-left: 0; } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } -.icojam_sign_euro:before { - content: "\e83b"; } +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } -.icojam_sign_pound:before { - content: "\e83c"; } +.btn-group > .btn-group { + float: left; } -.icojam_sign_ruble:before { - content: "\e83d"; } +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } -.icojam_sign_yuan:before { - content: "\e83e"; } +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } -.icojam_skyscraper_12:before { - content: "\e83f"; } +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } -.icojam_skyscraper_22:before { - content: "\e840"; } +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; } -.icojam_skyscraper_3:before { - content: "\e841"; } +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; } -.icojam_stability_1:before { - content: "\e842"; } +.btn-group > .btn-lg + .dropdown-toggle, .btn-group-lg.btn-group > .btn + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; } -.icojam_stability_2:before { - content: "\e843"; } +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; } -.icojam_strategy:before { - content: "\e844"; } +.btn .caret { + margin-left: 0; } -.icojam_turning_point_1:before { - content: "\e845"; } +.btn-lg .caret, .btn-group-lg > .btn .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; } -.icojam_turning_point_2:before { - content: "\e846"; } +.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .caret { + border-width: 0 5px 5px; } -.icojam_workplace_1:before { - content: "\e847"; } +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; } +.btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { + content: " "; + display: table; } +.btn-group-vertical > .btn-group:after { + clear: both; } +.btn-group-vertical > .btn-group > .btn { + float: none; } +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; } + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; } +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; } -.icojam_workplace_2:before { - content: "\e848"; } +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } -.icojam_apple_1:before { - content: "\e849"; } +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } -.icojam_apple_2:before { - content: "\e84a"; } +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; } -.icojam_asparagus:before { - content: "\e84b"; } +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; } + .btn-group-justified > .btn, + .btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; } + .btn-group-justified > .btn-group .btn { + width: 100%; } + .btn-group-justified > .btn-group .dropdown-menu { + left: auto; } -.icojam_banana:before { - content: "\e84c"; } +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } -.icojam_beans:before { - content: "\e84d"; } +.input-group { + position: relative; + display: table; + border-collapse: separate; } + .input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; } + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; } + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; } -.icojam_cabbage:before { - content: "\e84e"; } +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; } -.icojam_carrot:before { - content: "\e84f"; } +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #ccc; + border-radius: 4px; } + .input-group-addon.input-sm, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; } + .input-group-addon.input-lg, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; } -.icojam_cauliflower:before { - content: "\e850"; } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } -.icojam_cherry:before { - content: "\e851"; } +.input-group-addon:first-child { + border-right: 0; } -.icojam_corn:before { - content: "\e852"; } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } -.icojam_cucumber:before { - content: "\e853"; } +.input-group-addon:last-child { + border-left: 0; } -.icojam_eggplant:before { - content: "\e854"; } +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; } + .input-group-btn > .btn { + position: relative; } + .input-group-btn > .btn + .btn { + margin-left: -1px; } + .input-group-btn > .btn:hover, .input-group-btn > .btn:focus, .input-group-btn > .btn:active { + z-index: 2; } + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-right: -1px; } + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; } + +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; } + .nav:before, .nav:after { + content: " "; + display: table; } + .nav:after { + clear: both; } + .nav > li { + position: relative; + display: block; } + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; } + .nav > li > a:hover, .nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; } + .nav > li.disabled > a { + color: #777777; } + .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; } + .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { + background-color: #eeeeee; + border-color: #337ab7; } + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; } + .nav > li > a > img { + max-width: none; } + +.nav-tabs { + border-bottom: 1px solid #ddd; } + .nav-tabs > li { + float: left; + margin-bottom: -1px; } + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; } + .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #ddd; } + .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + color: #555555; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; } + +.nav-pills > li { + float: left; } + .nav-pills > li > a { + border-radius: 4px; } + .nav-pills > li + li { + margin-left: 2px; } + .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; } + +.nav-stacked > li { + float: none; } + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; } + +.nav-justified, .nav-tabs.nav-justified { + width: 100%; } + .nav-justified > li, .nav-tabs.nav-justified > li { + float: none; } + .nav-justified > li > a, .nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; } + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; } + @media (min-width: 768px) { + .nav-justified > li, .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; } + .nav-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-bottom: 0; } } + +.nav-tabs-justified, .nav-tabs.nav-justified { + border-bottom: 0; } + .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; } + .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus, + .nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; } + @media (min-width: 768px) { + .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; } + .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; } } + +.tab-content > .tab-pane { + display: none; } +.tab-content > .active { + display: block; } -.icojam_garlic:before { - content: "\e855"; } +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; } -.icojam_grapes:before { - content: "\e856"; } +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; } + .navbar:before, .navbar:after { + content: " "; + display: table; } + .navbar:after { + clear: both; } + @media (min-width: 768px) { + .navbar { + border-radius: 4px; } } + +.navbar-header:before, .navbar-header:after { + content: " "; + display: table; } +.navbar-header:after { + clear: both; } +@media (min-width: 768px) { + .navbar-header { + float: left; } } -.icojam_grass:before { - content: "\e857"; } +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; } + .navbar-collapse:before, .navbar-collapse:after { + content: " "; + display: table; } + .navbar-collapse:after { + clear: both; } + .navbar-collapse.in { + overflow-y: auto; } + @media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; } + .navbar-collapse.in { + overflow-y: visible; } + .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; } } + +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; } + @media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; } } + +.container > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-header, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; } + @media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-header, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; } } + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; } + @media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; } } -.icojam_leaves:before { - content: "\e858"; } +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; } + @media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; } } -.icojam_lemon_1:before { - content: "\e859"; } +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; } -.icojam_lemon_2:before { - content: "\e85a"; } +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; } -.icojam_lemon_slice_1:before { - content: "\e85b"; } +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; } + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; } + .navbar-brand > img { + display: block; } + @media (min-width: 768px) { + .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { + margin-left: -15px; } } -.icojam_lemon_slice_2:before { - content: "\e85c"; } +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; } + .navbar-toggle:focus { + outline: 0; } + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; } + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; } + @media (min-width: 768px) { + .navbar-toggle { + display: none; } } + +.navbar-nav { + margin: 7.5px -15px; } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; } + @media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; } + .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; } } + @media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; } + .navbar-nav > li { + float: left; } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; } } + +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; } + @media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .navbar-form .form-control-static { + display: inline-block; } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; } + .navbar-form .input-group > .form-control { + width: 100%; } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; } + .navbar-form .has-feedback .form-control-feedback { + top: 0; } } + @media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; } + .navbar-form .form-group:last-child { + margin-bottom: 0; } } + @media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; } } + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; } -.icojam_mandarine:before { - content: "\e85d"; } +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } -.icojam_melon_1:before { - content: "\e85e"; } +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; } + .navbar-btn.btn-sm, .btn-group-sm > .navbar-btn.btn { + margin-top: 10px; + margin-bottom: 10px; } + .navbar-btn.btn-xs, .btn-group-xs > .navbar-btn.btn { + margin-top: 14px; + margin-bottom: 14px; } -.icojam_melon_2:before { - content: "\e85f"; } +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; } + @media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; } } -.icojam_mushroom_1:before { - content: "\e860"; } +@media (min-width: 768px) { + .navbar-left { + float: left !important; } + + .navbar-right { + float: right !important; + margin-right: -15px; } + .navbar-right ~ .navbar-right { + margin-right: 0; } } +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; } + .navbar-default .navbar-brand { + color: #777; } + .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; } + .navbar-default .navbar-text { + color: #777; } + .navbar-default .navbar-nav > li > a { + color: #777; } + .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; } + .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; } + .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; } + .navbar-default .navbar-toggle { + border-color: #ddd; } + .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: #ddd; } + .navbar-default .navbar-toggle .icon-bar { + background-color: #888; } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + border-color: #e7e7e7; } + .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555; } + @media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; } } + .navbar-default .navbar-link { + color: #777; } + .navbar-default .navbar-link:hover { + color: #333; } + .navbar-default .btn-link { + color: #777; } + .navbar-default .btn-link:hover, .navbar-default .btn-link:focus { + color: #333; } + .navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .navbar-default .btn-link:hover, fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; } + +.navbar-inverse { + background-color: #222; + border-color: #090909; } + .navbar-inverse .navbar-brand { + color: #9d9d9d; } + .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-text { + color: #9d9d9d; } + .navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; } + .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #090909; } + .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; } + .navbar-inverse .navbar-toggle { + border-color: #333; } + .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { + background-color: #333; } + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; } + .navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { + border-color: #101010; } + .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #090909; + color: #fff; } + @media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #090909; } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; } } + .navbar-inverse .navbar-link { + color: #9d9d9d; } + .navbar-inverse .navbar-link:hover { + color: #fff; } + .navbar-inverse .btn-link { + color: #9d9d9d; } + .navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus { + color: #fff; } + .navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .navbar-inverse .btn-link:hover, fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; } -.icojam_mushroom_2:before { - content: "\e861"; } +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; } + .breadcrumb > li { + display: inline-block; } + .breadcrumb > li + li:before { + content: "/ "; + padding: 0 5px; + color: #ccc; } + .breadcrumb > .active { + color: #777777; } + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; } + .pagination > li { + display: inline; } + .pagination > li > a, + .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.42857; + text-decoration: none; + color: #337ab7; + background-color: #fff; + border: 1px solid #ddd; + margin-left: -1px; } + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; } + .pagination > li:last-child > a, + .pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; } + .pagination > li > a:hover, .pagination > li > a:focus, + .pagination > li > span:hover, + .pagination > li > span:focus { + z-index: 3; + color: #23527c; + background-color: #eeeeee; + border-color: #ddd; } + .pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, + .pagination > .active > span, + .pagination > .active > span:hover, + .pagination > .active > span:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + cursor: default; } + .pagination > .disabled > span, + .pagination > .disabled > span:hover, + .pagination > .disabled > span:focus, + .pagination > .disabled > a, + .pagination > .disabled > a:hover, + .pagination > .disabled > a:focus { + color: #777777; + background-color: #fff; + border-color: #ddd; + cursor: not-allowed; } + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33333; } +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; } +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; } + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; } +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; } + .pager:before, .pager:after { + content: " "; + display: table; } + .pager:after { + clear: both; } + .pager li { + display: inline; } + .pager li > a, + .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; } + .pager li > a:hover, + .pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; } + .pager .next > a, + .pager .next > span { + float: right; } + .pager .previous > a, + .pager .previous > span { + float: left; } + .pager .disabled > a, + .pager .disabled > a:hover, + .pager .disabled > a:focus, + .pager .disabled > span { + color: #777777; + background-color: #fff; + cursor: not-allowed; } + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; } + .label:empty { + display: none; } + .btn .label { + position: relative; + top: -1px; } -.icojam_nut:before { - content: "\e862"; } +a.label:hover, a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; } -.icojam_olive_1:before { - content: "\e863"; } +.label-default { + background-color: #777777; } + .label-default[href]:hover, .label-default[href]:focus { + background-color: #5e5e5e; } + +.label-primary { + background-color: #337ab7; } + .label-primary[href]:hover, .label-primary[href]:focus { + background-color: #286090; } + +.label-success { + background-color: #5cb85c; } + .label-success[href]:hover, .label-success[href]:focus { + background-color: #449d44; } + +.label-info { + background-color: #5bc0de; } + .label-info[href]:hover, .label-info[href]:focus { + background-color: #31b0d5; } + +.label-warning { + background-color: #f0ad4e; } + .label-warning[href]:hover, .label-warning[href]:focus { + background-color: #ec971f; } + +.label-danger { + background-color: #d9534f; } + .label-danger[href]:hover, .label-danger[href]:focus { + background-color: #c9302c; } + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #fff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #777777; + border-radius: 10px; } + .badge:empty { + display: none; } + .btn .badge { + position: relative; + top: -1px; } + .btn-xs .badge, .btn-group-xs > .btn .badge, .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; } + .list-group-item.active > .badge, .nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; } + .list-group-item > .badge { + float: right; } + .list-group-item > .badge + .badge { + margin-right: 5px; } + .nav-pills > li > a > .badge { + margin-left: 3px; } + +a.badge:hover, a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; } -.icojam_olive_2:before { - content: "\e864"; } +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; } + .jumbotron h1, + .jumbotron .h1 { + color: inherit; } + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; } + .jumbotron > hr { + border-top-color: #d5d5d5; } + .container .jumbotron, .container-fluid .jumbotron { + border-radius: 6px; } + .jumbotron .container { + max-width: 100%; } + @media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; } + .container .jumbotron, .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; } } + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; } + .thumbnail > img, + .thumbnail a > img { + display: block; + max-width: 100%; + height: auto; + margin-left: auto; + margin-right: auto; } + .thumbnail .caption { + padding: 9px; + color: #333333; } + +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; } + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; } + .alert h4 { + margin-top: 0; + color: inherit; } + .alert .alert-link { + font-weight: bold; } + .alert > p, + .alert > ul { + margin-bottom: 0; } + .alert > p + p { + margin-top: 5px; } + +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; } + .alert-dismissable .close, + .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; } + +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; } + .alert-success hr { + border-top-color: #c9e2b3; } + .alert-success .alert-link { + color: #2b542c; } + +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; } + .alert-info hr { + border-top-color: #a6e1ec; } + .alert-info .alert-link { + color: #245269; } + +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; } + .alert-warning hr { + border-top-color: #f7e1b5; } + .alert-warning .alert-link { + color: #66512c; } + +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; } + .alert-danger hr { + border-top-color: #e4b9c0; } + .alert-danger .alert-link { + color: #843534; } + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; } + to { + background-position: 0 0; } } +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; } + to { + background-position: 0 0; } } +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } -.icojam_onion:before { - content: "\e865"; } - -.icojam_orange:before { - content: "\e866"; } +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; } + +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; } + +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; } + +.progress-bar-success { + background-color: #5cb85c; } + .progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-info { + background-color: #5bc0de; } + .progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-warning { + background-color: #f0ad4e; } + .progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.progress-bar-danger { + background-color: #d9534f; } + .progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } + +.media { + margin-top: 15px; } + .media:first-child { + margin-top: 0; } -.icojam_pattinson:before { - content: "\e867"; } +.media, +.media-body { + zoom: 1; + overflow: hidden; } -.icojam_peach:before { - content: "\e868"; } +.media-body { + width: 10000px; } -.icojam_pear:before { - content: "\e869"; } +.media-object { + display: block; } + .media-object.img-thumbnail { + max-width: none; } -.icojam_peas_1:before { - content: "\e86a"; } +.media-right, +.media > .pull-right { + padding-left: 10px; } -.icojam_peas_2:before { - content: "\e86b"; } +.media-left, +.media > .pull-left { + padding-right: 10px; } -.icojam_pepper:before { - content: "\e86c"; } +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; } -.icojam_pepper_chili:before { - content: "\e86d"; } +.media-middle { + vertical-align: middle; } -.icojam_persimmon:before { - content: "\e86e"; } +.media-bottom { + vertical-align: bottom; } -.icojam_pineapple:before { - content: "\e86f"; } +.media-heading { + margin-top: 0; + margin-bottom: 5px; } -.icojam_plum:before { - content: "\e870"; } +.media-list { + padding-left: 0; + list-style: none; } -.icojam_pomegranate_1:before { - content: "\e871"; } +.list-group { + margin-bottom: 20px; + padding-left: 0; } -.icojam_pomegranate_2:before { - content: "\e872"; } +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; } + .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; } + +a.list-group-item, +button.list-group-item { + color: #555; } + a.list-group-item .list-group-item-heading, + button.list-group-item .list-group-item-heading { + color: #333; } + a.list-group-item:hover, a.list-group-item:focus, + button.list-group-item:hover, + button.list-group-item:focus { + text-decoration: none; + color: #555; + background-color: #f5f5f5; } + +button.list-group-item { + width: 100%; + text-align: left; } + +.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; + cursor: not-allowed; } + .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; } + .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text { + color: #777777; } +.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; } + .list-group-item.active .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; } + .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { + color: #c7ddef; } + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; } + +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; } + a.list-group-item-success .list-group-item-heading, + button.list-group-item-success .list-group-item-heading { + color: inherit; } + a.list-group-item-success:hover, a.list-group-item-success:focus, + button.list-group-item-success:hover, + button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; } + a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus, + button.list-group-item-success.active, + button.list-group-item-success.active:hover, + button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; } + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; } + +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; } + a.list-group-item-info .list-group-item-heading, + button.list-group-item-info .list-group-item-heading { + color: inherit; } + a.list-group-item-info:hover, a.list-group-item-info:focus, + button.list-group-item-info:hover, + button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; } + a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus, + button.list-group-item-info.active, + button.list-group-item-info.active:hover, + button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; } + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; } + +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; } + a.list-group-item-warning .list-group-item-heading, + button.list-group-item-warning .list-group-item-heading { + color: inherit; } + a.list-group-item-warning:hover, a.list-group-item-warning:focus, + button.list-group-item-warning:hover, + button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; } + a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus, + button.list-group-item-warning.active, + button.list-group-item-warning.active:hover, + button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; } + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; } + +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; } + a.list-group-item-danger .list-group-item-heading, + button.list-group-item-danger .list-group-item-heading { + color: inherit; } + a.list-group-item-danger:hover, a.list-group-item-danger:focus, + button.list-group-item-danger:hover, + button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; } + a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus, + button.list-group-item-danger.active, + button.list-group-item-danger.active:hover, + button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; } + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; } -.icojam_pomelo:before { - content: "\e873"; } +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; } -.icojam_potato:before { - content: "\e874"; } +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } + +.panel-body { + padding: 15px; } + .panel-body:before, .panel-body:after { + content: " "; + display: table; } + .panel-body:after { + clear: both; } + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel-heading > .dropdown .dropdown-toggle { + color: inherit; } + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; } + .panel-title > a, + .panel-title > small, + .panel-title > .small, + .panel-title > small > a, + .panel-title > .small > a { + color: inherit; } + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } + +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; } + .panel > .list-group .list-group-item, + .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; } + .panel > .list-group:first-child .list-group-item:first-child, + .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel > .list-group:last-child .list-group-item:last-child, + .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; } -.icojam_pumpkin_1:before { - content: "\e875"; } +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; } -.icojam_pumpkin_2:before { - content: "\e876"; } +.list-group + .panel-footer { + border-top-width: 0; } -.icojam_radish:before { - content: "\e877"; } +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; } + .panel > .table caption, + .panel > .table-responsive > .table caption, + .panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; } +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; } + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; } +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; } + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; } +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; } +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; } +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; } + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; } + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; } + .panel > .table-bordered > thead > tr:first-child > td, + .panel > .table-bordered > thead > tr:first-child > th, + .panel > .table-bordered > tbody > tr:first-child > td, + .panel > .table-bordered > tbody > tr:first-child > th, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; } + .panel > .table-bordered > tbody > tr:last-child > td, + .panel > .table-bordered > tbody > tr:last-child > th, + .panel > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-bordered > tfoot > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; } +.panel > .table-responsive { + border: 0; + margin-bottom: 0; } -.icojam_raspberry:before { - content: "\e878"; } +.panel-group { + margin-bottom: 20px; } + .panel-group .panel { + margin-bottom: 0; + border-radius: 4px; } + .panel-group .panel + .panel { + margin-top: 5px; } + .panel-group .panel-heading { + border-bottom: 0; } + .panel-group .panel-heading + .panel-collapse > .panel-body, + .panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; } + .panel-group .panel-footer { + border-top: 0; } + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; } + +.panel-default { + border-color: #ddd; } + .panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #ddd; } + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; } + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; } + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; } + +.panel-primary { + border-color: #337ab7; } + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; } + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; } + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; } + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; } + +.panel-success { + border-color: #d6e9c6; } + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; } + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; } + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; } + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; } + +.panel-info { + border-color: #bce8f1; } + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; } + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; } + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; } + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; } + +.panel-warning { + border-color: #faebcc; } + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; } + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; } + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; } + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; } + +.panel-danger { + border-color: #ebccd1; } + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; } + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; } + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; } + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; } + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; } -.icojam_salad:before { - content: "\e879"; } +.embed-responsive-16by9 { + padding-bottom: 56.25%; } -.icojam_strawberry:before { - content: "\e87a"; } +.embed-responsive-4by3 { + padding-bottom: 75%; } -.icojam_tomato_1:before { - content: "\e87b"; } +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } + .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); } + +.well-lg { + padding: 24px; + border-radius: 6px; } + +.well-sm { + padding: 9px; + border-radius: 3px; } + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: 0.2; + filter: alpha(opacity=20); } + .close:hover, .close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); } -.icojam_tomato_2:before { - content: "\e87c"; } +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; } -.icojam_watermelon_1:before { - content: "\e87d"; } +.modal-open { + overflow: hidden; } -.icojam_watermelon_2:before { - content: "\e87e"; } +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; } + .modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; } + .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); } + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } -.icojam_wheat:before { - content: "\e87f"; } +.modal-dialog { + position: relative; + width: auto; + margin: 10px; } -.icojam_barbecue:before { - content: "\e880"; } +.modal-content { + position: relative; + background-color: #fff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; } -.icojam_bone:before { - content: "\e881"; } +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; } + .modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); } + .modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); } + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857px; } -.icojam_bread_1:before { - content: "\e882"; } +.modal-header .close { + margin-top: -2px; } -.icojam_bread_2:before { - content: "\e883"; } +.modal-title { + margin: 0; + line-height: 1.42857; } -.icojam_bread_baguette:before { - content: "\e884"; } +.modal-body { + position: relative; + padding: 15px; } -.icojam_burger_1:before { - content: "\e885"; } +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; } + .modal-footer:before, .modal-footer:after { + content: " "; + display: table; } + .modal-footer:after { + clear: both; } + .modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; } + .modal-footer .btn-block + .btn-block { + margin-left: 0; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } -.icojam_burger_2:before { - content: "\e886"; } +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; } -.icojam_cake_1:before { - content: "\e887"; } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } -.icojam_cake_2:before { - content: "\e888"; } + .modal-sm { + width: 300px; } } +@media (min-width: 992px) { + .modal-lg { + width: 900px; } } +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); } + .tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); } + .tooltip.top { + margin-top: -3px; + padding: 5px 0; } + .tooltip.right { + margin-left: 3px; + padding: 0 5px; } + .tooltip.bottom { + margin-top: 3px; + padding: 5px 0; } + .tooltip.left { + margin-left: -3px; + padding: 0 5px; } + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; } -.icojam_cake_wedding:before { - content: "\e889"; } +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; } -.icojam_candy_1:before { - content: "\e88a"; } +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; } -.icojam_candy_2:before { - content: "\e88b"; } +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); } + .popover.top { + margin-top: -10px; } + .popover.right { + margin-left: 10px; } + .popover.bottom { + margin-top: 10px; } + .popover.left { + margin-left: -10px; } -.icojam_candy_3:before { - content: "\e88c"; } +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; } -.icojam_candy_lolipop:before { - content: "\e88d"; } +.popover-content { + padding: 9px 14px; } -.icojam_cheese_1:before { - content: "\e88e"; } +.popover > .arrow, .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; } -.icojam_cheese_2:before { - content: "\e88f"; } +.popover > .arrow { + border-width: 11px; } -.icojam_chicken:before { - content: "\e890"; } +.popover > .arrow:after { + border-width: 10px; + content: ""; } -.icojam_chicken_leg:before { - content: "\e891"; } +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; } + .popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #fff; } +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); } + .popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #fff; } +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; } + .popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #fff; } +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); } + .popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #fff; + bottom: -10px; } + +.carousel { + position: relative; } -.icojam_chips:before { - content: "\e892"; } +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; } + .carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; } + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + line-height: 1; } + @media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -moz-transition: -moz-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + -moz-perspective: 1000px; + perspective: 1000px; } + .carousel-inner > .item.next, .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; } + .carousel-inner > .item.prev, .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; } + .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; } } + .carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { + display: block; } + .carousel-inner > .active { + left: 0; } + .carousel-inner > .next, + .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; } + .carousel-inner > .next { + left: 100%; } + .carousel-inner > .prev { + left: -100%; } + .carousel-inner > .next.left, + .carousel-inner > .prev.right { + left: 0; } + .carousel-inner > .active.left { + left: -100%; } + .carousel-inner > .active.right { + left: 100%; } + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } + .carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); } + .carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } + .carousel-control:hover, .carousel-control:focus { + outline: 0; + color: #fff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); } + .carousel-control .icon-prev, + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; } + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; } + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; } + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; } + .carousel-control .icon-prev:before { + content: '\2039'; } + .carousel-control .icon-next:before { + content: '\203a'; } -.icojam_chocolate_1:before { - content: "\e893"; } +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; } + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #fff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: transparent; } + .carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #fff; } -.icojam_chocolate_2:before { - content: "\e894"; } +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } + .carousel-caption .btn { + text-shadow: none; } + +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; } + + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; } + + .carousel-indicators { + bottom: 20px; } } +.clearfix:before, .clearfix:after { + content: " "; + display: table; } +.clearfix:after { + clear: both; } -.icojam_cookies:before { - content: "\e895"; } +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } -.icojam_croissant:before { - content: "\e896"; } +.pull-right { + float: right !important; } -.icojam_donut_1:before { - content: "\e897"; } +.pull-left { + float: left !important; } -.icojam_donut_2:before { - content: "\e898"; } +.hide { + display: none !important; } -.icojam_egg:before { - content: "\e899"; } +.show { + display: block !important; } -.icojam_fish:before { - content: "\e89a"; } +.invisible { + visibility: hidden; } -.icojam_fishbone:before { - content: "\e89b"; } +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } -.icojam_french_fries:before { - content: "\e89c"; } +.hidden { + display: none !important; } -.icojam_grain:before { - content: "\e89d"; } +.affix { + position: fixed; } -.icojam_ham:before { - content: "\e89e"; } +@-ms-viewport { + width: device-width; } +.visible-xs { + display: none !important; } -.icojam_honey:before { - content: "\e89f"; } +.visible-sm { + display: none !important; } -.icojam_hot_dog:before { - content: "\e8a0"; } +.visible-md { + display: none !important; } -.icojam_ice_cream_1:before { - content: "\e8a1"; } +.visible-lg { + display: none !important; } -.icojam_ice_cream_2:before { - content: "\e8a2"; } +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; } -.icojam_omelette:before { - content: "\e8a3"; } +@media (max-width: 767px) { + .visible-xs { + display: block !important; } -.icojam_pasta_1:before { - content: "\e8a4"; } + table.visible-xs { + display: table !important; } -.icojam_pasta_2:before { - content: "\e8a5"; } + tr.visible-xs { + display: table-row !important; } -.icojam_pasta_3:before { - content: "\e8a6"; } + th.visible-xs, + td.visible-xs { + display: table-cell !important; } } +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; } } -.icojam_pizza:before { - content: "\e8a7"; } +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; } } -.icojam_potato_slices:before { - content: "\e8a8"; } +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; } } -.icojam_pretzel:before { - content: "\e8a9"; } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; } -.icojam_rice:before { - content: "\e8aa"; } + table.visible-sm { + display: table !important; } -.icojam_roll:before { - content: "\e8ab"; } + tr.visible-sm { + display: table-row !important; } -.icojam_rolls_1:before { - content: "\e8ac"; } + th.visible-sm, + td.visible-sm { + display: table-cell !important; } } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; } } -.icojam_rolls_2:before { - content: "\e8ad"; } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; } } -.icojam_rolls_3:before { - content: "\e8ae"; } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; } } -.icojam_sausage_1:before { - content: "\e8af"; } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; } -.icojam_sausage_2:before { - content: "\e8b0"; } + table.visible-md { + display: table !important; } -.icojam_sausage_3:before { - content: "\e8b1"; } + tr.visible-md { + display: table-row !important; } -.icojam_sausage_4:before { - content: "\e8b2"; } + th.visible-md, + td.visible-md { + display: table-cell !important; } } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; } } -.icojam_sausage_5:before { - content: "\e8b3"; } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; } } -.icojam_steak:before { - content: "\e8b4"; } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; } } -.icojam_steak_t-bone:before { - content: "\e8b5"; } +@media (min-width: 1200px) { + .visible-lg { + display: block !important; } -.icojam_sushi_1:before { - content: "\e8b6"; } + table.visible-lg { + display: table !important; } -.icojam_sushi_2:before { - content: "\e8b7"; } + tr.visible-lg { + display: table-row !important; } -.icojam_truffle:before { - content: "\e8b8"; } + th.visible-lg, + td.visible-lg { + display: table-cell !important; } } +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; } } -.icojam_wafer_1:before { - content: "\e8b9"; } +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; } } -.icojam_wafer_2:before { - content: "\e8ba"; } +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; } } -.icojam_wafer_3:before { - content: "\e8bb"; } +@media (max-width: 767px) { + .hidden-xs { + display: none !important; } } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; } } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; } } +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; } } +.visible-print { + display: none !important; } + +@media print { + .visible-print { + display: block !important; } + + table.visible-print { + display: table !important; } + + tr.visible-print { + display: table-row !important; } + + th.visible-print, + td.visible-print { + display: table-cell !important; } } +.visible-print-block { + display: none !important; } + @media print { + .visible-print-block { + display: block !important; } } + +.visible-print-inline { + display: none !important; } + @media print { + .visible-print-inline { + display: inline !important; } } + +.visible-print-inline-block { + display: none !important; } + @media print { + .visible-print-inline-block { + display: inline-block !important; } } + +@media print { + .hidden-print { + display: none !important; } } +/* Fenix Utils*/ +/* Fenix Style No Variables */ +/* Boostrap Queries */ +/* Utils */ +/* Base */ +/* Fenix Fonts Import */ +/* Eldorado */ +/* ELDORADO FONT STANDARD CONFIGURATION*/ +/* Eldorado */ +@font-face { + font-family: 'eldorado_stroke'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/eldorado/eldorado_stroke.svg#RobotoRegular") format("svg"); + font-weight: normal; + font-style: normal; } +[class^="icojam_"], [class*=" icojam_"] { + font-family: 'eldorado_stroke'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.icojam_waffle_horn:before { - content: "\e8bc"; } +/* Active Icons */ +.icojam_button_new_1:before { + content: "\eb2a"; } -.icojam_beer:before { - content: "\e8bd"; } +.icojam_button_foward_1:before { + content: "\eb26"; } -.icojam_bottle_1:before { - content: "\e8be"; } +.icojam_document_text:before { + content: "\eb26"; } -.icojam_bottle_2:before { - content: "\e8bf"; } +.icojam_grid_thumbnails:before { + content: "\e9a8"; } -.icojam_bottle_3:before { - content: "\e8c0"; } +.icojam_elevation_4:before { + content: "\e80d"; } -.icojam_bottle_plastic:before { - content: "\e8c1"; } +.icojam_swap_horizontal_1:before { + content: "\eb45"; } -.icojam_champagne:before { - content: "\e8c2"; } +.icojam_wedding_jewel:before { + content: "\e96c"; } -.icojam_citrus:before { - content: "\e8c3"; } +.icojam_inbox_receive:before { + content: "\ea49"; } -.icojam_coffee_bean:before { - content: "\e8c4"; } +.icojam_button_delete_1:before { + content: "\eb24"; } -.icojam_cola_1:before { - content: "\e8c5"; } +.icojam_copybook_2:before { + content: "\e7b5"; } -.icojam_cola_2:before { - content: "\e8c6"; } +.icojam_user:before { + content: "\ebbb"; } -.icojam_condensed_milk:before { - content: "\e8c7"; } +.icojam_exit_1:before { + content: "\eaeb"; } -.icojam_cucumbers:before { - content: "\e8c8"; } +/* Icons */ +.icojam_fla:before { + content: "\e777"; } -.icojam_cup_1:before { - content: "\e8c9"; } +.icojam_flac:before { + content: "\e778"; } -.icojam_cup_2:before { - content: "\e8ca"; } +.icojam_gif:before { + content: "\e779"; } -.icojam_cup_3:before { - content: "\e8cb"; } +.icojam_html:before { + content: "\e77a"; } -.icojam_cup_hot:before { - content: "\e8cc"; } +.icojam_icl:before { + content: "\e77b"; } -.icojam_fork_1:before { - content: "\e8cd"; } +.icojam_icns:before { + content: "\e77c"; } -.icojam_fork_2:before { - content: "\e8ce"; } +.icojam_ico:before { + content: "\e77d"; } -.icojam_glass2:before { - content: "\e8cf"; } +.icojam_ini:before { + content: "\e77e"; } -.icojam_glass_water:before { - content: "\e8d0"; } +.icojam_iso:before { + content: "\e77f"; } -.icojam_goblet_1:before { - content: "\e8d1"; } +.icojam_jpg:before { + content: "\e780"; } -.icojam_goblet_2:before { - content: "\e8d2"; } +.icojam_log:before { + content: "\e781"; } -.icojam_goblet_3:before { - content: "\e8d3"; } +.icojam_midi:before { + content: "\e782"; } -.icojam_goblet_4:before { - content: "\e8d4"; } +.icojam_mkv:before { + content: "\e783"; } -.icojam_goblet_5:before { - content: "\e8d5"; } +.icojam_mov:before { + content: "\e784"; } -.icojam_goblet_6:before { - content: "\e8d6"; } +.icojam_mp3:before { + content: "\e785"; } -.icojam_goblet_7:before { - content: "\e8d7"; } +.icojam_mp4:before { + content: "\e786"; } -.icojam_goblet_wineglass:before { - content: "\e8d8"; } +.icojam_mpg:before { + content: "\e787"; } -.icojam_jam_1:before { - content: "\e8d9"; } +.icojam_ogg:before { + content: "\e788"; } -.icojam_jam_2:before { - content: "\e8da"; } +.icojam_ogm:before { + content: "\e789"; } -.icojam_milk:before { - content: "\e8db"; } +.icojam_otf:before { + content: "\e78a"; } -.icojam_mushrooms:before { - content: "\e8dc"; } +.icojam_pdf:before { + content: "\e78b"; } -.icojam_package:before { - content: "\e8dd"; } +.icojam_png:before { + content: "\e78c"; } -.icojam_pan_1:before { - content: "\e8de"; } +.icojam_ppt:before { + content: "\e78d"; } -.icojam_pan_2:before { - content: "\e8df"; } +.icojam_pptx:before { + content: "\e78e"; } -.icojam_pan_3:before { - content: "\e8e0"; } +.icojam_psd:before { + content: "\e78f"; } -.icojam_pan_4:before { - content: "\e8e1"; } +.icojam_ra:before { + content: "\e790"; } -.icojam_pepper2:before { - content: "\e8e2"; } +.icojam_rar:before { + content: "\e791"; } -.icojam_plate_1:before { - content: "\e8e3"; } +.icojam_raw:before { + content: "\e792"; } -.icojam_plate_2:before { - content: "\e8e4"; } +.icojam_rm:before { + content: "\e793"; } -.icojam_preserves_1:before { - content: "\e8e5"; } +.icojam_rtf:before { + content: "\e794"; } -.icojam_preserves_2:before { - content: "\e8e6"; } +.icojam_svg:before { + content: "\e795"; } -.icojam_preserves_3:before { - content: "\e8e7"; } +.icojam_svgz:before { + content: "\e796"; } -.icojam_salt:before { - content: "\e8e8"; } +.icojam_swf:before { + content: "\e797"; } -.icojam_take-out_coffee:before { - content: "\e8e9"; } +.icojam_sys:before { + content: "\e798"; } -.icojam_tea:before { - content: "\e8ea"; } +.icojam_tga:before { + content: "\e799"; } -.icojam_tea_bag_1:before { - content: "\e8eb"; } +.icojam_tif:before { + content: "\e79a"; } -.icojam_tea_bag_2:before { - content: "\e8ec"; } +.icojam_ttf:before { + content: "\e79b"; } -.icojam_teapot:before { - content: "\e8ed"; } +.icojam_txt:before { + content: "\e79c"; } -.icojam_wine_1:before { - content: "\e8ee"; } +.icojam_wav:before { + content: "\e79d"; } -.icojam_wine_2:before { - content: "\e8ef"; } +.icojam_wma:before { + content: "\e79e"; } -.icojam_armchair:before { - content: "\e8f0"; } +.icojam_wmv:before { + content: "\e79f"; } -.icojam_baby_cot:before { - content: "\e8f1"; } +.icojam_xls:before { + content: "\e7a0"; } -.icojam_bath:before { - content: "\e8f2"; } +.icojam_xlsx:before { + content: "\e7a1"; } -.icojam_bed2:before { - content: "\e8f3"; } +.icojam_xml:before { + content: "\e7a2"; } -.icojam_bench:before { - content: "\e8f4"; } +.icojam_zip:before { + content: "\e7a3"; } -.icojam_bench_1:before { - content: "\e8f5"; } +.icojam_presentation:before { + content: "\e9b1"; } -.icojam_bidet:before { - content: "\e8f6"; } +.icojam_document:before { + content: "\ea3c"; } -.icojam_blanket:before { - content: "\e8f7"; } +.icojam_link_1:before { + content: "\ea50"; } -.icojam_bookshelf:before { - content: "\e8f8"; } +.icojam_base_search_in:before { + content: "\e65e"; } -.icojam_box_locker:before { - content: "\e8f9"; } +.icojam_add:before { + content: "\e656"; } -.icojam_box_open:before { - content: "\e8fa"; } +.icojam_delete:before { + content: "\e66a"; } -.icojam_cabinet:before { - content: "\e8fb"; } +.icojam_cancel_1:before { + content: "\eb55"; } -.icojam_carpet:before { - content: "\e8fc"; } +.icojam_home2:before { + content: "\e7c1"; } -.icojam_chair_1:before { - content: "\e8fd"; } +.icojam_geography_globe:before { + content: "\e7be"; } -.icojam_chair_2:before { - content: "\e8fe"; } +.icojam_notebook:before { + content: "\e7eb"; } -.icojam_chair_3:before { - content: "\e8ff"; } +.icojam_air_conditioning_external:before { + content: "\e600"; } -.icojam_chair_director_folding:before { - content: "\e900"; } +.icojam_air_conditioning_internal:before { + content: "\e601"; } -.icojam_chair_office:before { - content: "\e901"; } +.icojam_blender:before { + content: "\e602"; } -.icojam_chair_rocking:before { - content: "\e902"; } +.icojam_blender_2:before { + content: "\e603"; } -.icojam_chair_round:before { - content: "\e903"; } +.icojam_blender_3:before { + content: "\e604"; } -.icojam_chandelier:before { - content: "\e904"; } +.icojam_bread_maker_multicookings:before { + content: "\e605"; } -.icojam_changing_table:before { - content: "\e905"; } +.icojam_citrus_squeezer:before { + content: "\e606"; } -.icojam_chest_of_drawers:before { - content: "\e906"; } +.icojam_coffee_machine:before { + content: "\e607"; } -.icojam_chest_of_drawers_2:before { - content: "\e907"; } +.icojam_coiled_heater:before { + content: "\e608"; } -.icojam_cot:before { - content: "\e908"; } +.icojam_dishwasher:before { + content: "\e609"; } -.icojam_curtains:before { - content: "\e909"; } +.icojam_drill_perforator:before { + content: "\e60a"; } -.icojam_cushion:before { - content: "\e90a"; } +.icojam_electric_kettle_teapot:before { + content: "\e60b"; } -.icojam_door:before { - content: "\e90b"; } +.icojam_electric_shaver:before { + content: "\e60c"; } -.icojam_doublebed:before { - content: "\e90c"; } +.icojam_fan:before { + content: "\e60d"; } -.icojam_floor_lamp_1:before { - content: "\e90d"; } +.icojam_fan_1:before { + content: "\e60e"; } -.icojam_floor_lamp_2:before { - content: "\e90e"; } +.icojam_fan_dyson:before { + content: "\e60f"; } -.icojam_floor_lamp_3:before { - content: "\e90f"; } +.icojam_food_processor_1:before { + content: "\e610"; } -.icojam_hanger:before { - content: "\e910"; } +.icojam_food_processor_2:before { + content: "\e611"; } -.icojam_hanger_1:before { - content: "\e911"; } +.icojam_freezer:before { + content: "\e612"; } -.icojam_heated_towel_rail:before { - content: "\e912"; } +.icojam_fridge_side_by_side:before { + content: "\e613"; } -.icojam_hook:before { - content: "\e913"; } +.icojam_hairdryer:before { + content: "\e614"; } -.icojam_hooks:before { - content: "\e914"; } +.icojam_heat_fan:before { + content: "\e615"; } -.icojam_linen:before { - content: "\e915"; } +.icojam_heater:before { + content: "\e616"; } -.icojam_mirror:before { - content: "\e916"; } +.icojam_iron:before { + content: "\e617"; } -.icojam_pan:before { - content: "\e917"; } +.icojam_juicer:before { + content: "\e618"; } -.icojam_picture2:before { - content: "\e918"; } +.icojam_kitchen_hood:before { + content: "\e619"; } -.icojam_pier-glass:before { - content: "\e919"; } +.icojam_kitchen_hood_1:before { + content: "\e61a"; } -.icojam_rack:before { - content: "\e91a"; } +.icojam_kitchen_timer:before { + content: "\e61b"; } -.icojam_racks:before { - content: "\e91b"; } +.icojam_metal_detector_multimeter_voltmeter:before { + content: "\e61c"; } -.icojam_radiator2:before { - content: "\e91c"; } +.icojam_microwave:before { + content: "\e61d"; } -.icojam_reading-lamp:before { - content: "\e91d"; } +.icojam_mixer:before { + content: "\e61e"; } -.icojam_shelf:before { - content: "\e91e"; } +.icojam_paper_shredder:before { + content: "\e61f"; } -.icojam_shelf_2:before { - content: "\e91f"; } +.icojam_radiator:before { + content: "\e620"; } -.icojam_shelfs:before { - content: "\e920"; } +.icojam_refrigerator:before { + content: "\e621"; } -.icojam_shelfs_2:before { - content: "\e921"; } +.icojam_samovar:before { + content: "\e622"; } -.icojam_singlebed:before { - content: "\e922"; } +.icojam_scale_kitchen_weigher:before { + content: "\e623"; } -.icojam_sink_bathroom:before { - content: "\e923"; } +.icojam_scales:before { + content: "\e624"; } -.icojam_sink_kitchen:before { - content: "\e924"; } +.icojam_sewing_machine:before { + content: "\e625"; } -.icojam_sofa:before { - content: "\e925"; } +.icojam_stove:before { + content: "\e626"; } -.icojam_sofa_1:before { - content: "\e926"; } +.icojam_toaster:before { + content: "\e627"; } -.icojam_sofa_2:before { - content: "\e927"; } +.icojam_vacuum_cleaner:before { + content: "\e628"; } -.icojam_stand:before { - content: "\e928"; } +.icojam_waffle-iron:before { + content: "\e629"; } -.icojam_stand_2:before { - content: "\e929"; } +.icojam_washing_machine:before { + content: "\e62a"; } -.icojam_stand_3:before { - content: "\e92a"; } +.icojam_yogurter:before { + content: "\e62b"; } -.icojam_stand_4:before { - content: "\e92b"; } +.icojam_baby_monitor:before { + content: "\e62c"; } -.icojam_table_1:before { - content: "\e92c"; } +.icojam_baby_monitors:before { + content: "\e62d"; } -.icojam_table_2:before { - content: "\e92d"; } +.icojam_ball:before { + content: "\e62e"; } -.icojam_table_3:before { - content: "\e92e"; } +.icojam_beanbag_maraca:before { + content: "\e62f"; } -.icojam_table_4:before { - content: "\e92f"; } +.icojam_bib:before { + content: "\e630"; } -.icojam_table_round:before { - content: "\e930"; } +.icojam_bicycle_baby_infant:before { + content: "\e631"; } -.icojam_table-lamp:before { - content: "\e931"; } +.icojam_birthday_newborn:before { + content: "\e632"; } -.icojam_toilet_paper:before { - content: "\e932"; } +.icojam_blocks:before { + content: "\e633"; } -.icojam_towel:before { - content: "\e933"; } +.icojam_body_suit:before { + content: "\e634"; } -.icojam_wardrobe:before { - content: "\e934"; } +.icojam_bottle_infant:before { + content: "\e635"; } -.icojam_wardrobe_1:before { - content: "\e935"; } +.icojam_boy:before { + content: "\e636"; } -.icojam_wardrobe_2:before { - content: "\e936"; } +.icojam_breast_milk:before { + content: "\e637"; } -.icojam_window:before { - content: "\e937"; } +.icojam_breast-feeding_mother:before { + content: "\e638"; } -.icojam_bag_bagful:before { - content: "\e938"; } +.icojam_buildingkit:before { + content: "\e639"; } -.icojam_balloon:before { - content: "\e939"; } +.icojam_car:before { + content: "\e63a"; } -.icojam_balloons:before { - content: "\e93a"; } +.icojam_chair_baby:before { + content: "\e63b"; } -.icojam_bell:before { - content: "\e93b"; } +.icojam_chamber_pot:before { + content: "\e63c"; } -.icojam_bouquet_flowers:before { - content: "\e93c"; } +.icojam_duck_rubberduck:before { + content: "\e63d"; } -.icojam_bow_knot:before { - content: "\e93d"; } +.icojam_dummy_nipple:before { + content: "\e63e"; } -.icojam_bracelet:before { - content: "\e93e"; } +.icojam_embryo:before { + content: "\e63f"; } -.icojam_candle:before { - content: "\e93f"; } +.icojam_fertilization_sperm_ovum:before { + content: "\e640"; } -.icojam_christmas_newyear_tree:before { - content: "\e940"; } +.icojam_fork_spoon_baby:before { + content: "\e641"; } -.icojam_christmas_tree_decoration:before { - content: "\e941"; } +.icojam_girl:before { + content: "\e642"; } -.icojam_christmas_tree_decoration_lashlight:before { - content: "\e942"; } +.icojam_horse_hobby_hobbyhorse:before { + content: "\e643"; } -.icojam_cookie_man:before { - content: "\e943"; } +.icojam_mobile_infant:before { + content: "\e644"; } -.icojam_crown_king_top:before { - content: "\e944"; } +.icojam_napkin:before { + content: "\e645"; } -.icojam_diamond:before { - content: "\e945"; } +.icojam_pampers_briefs_diapers:before { + content: "\e646"; } -.icojam_diamond_brilliant:before { - content: "\e946"; } +.icojam_parental_control_off:before { + content: "\e647"; } -.icojam_easter_egg:before { - content: "\e947"; } +.icojam_parental_control_on:before { + content: "\e648"; } -.icojam_fireworks:before { - content: "\e948"; } +.icojam_playpen:before { + content: "\e649"; } -.icojam_flag_victory:before { - content: "\e949"; } +.icojam_preserves:before { + content: "\e64a"; } -.icojam_flag_victory_2:before { - content: "\e94a"; } +.icojam_pyramid:before { + content: "\e64b"; } -.icojam_flower:before { - content: "\e94b"; } +.icojam_RC_car_radiocontrolled:before { + content: "\e64c"; } -.icojam_flower_pot:before { - content: "\e94c"; } +.icojam_scales_baby:before { + content: "\e64d"; } -.icojam_flowers:before { - content: "\e94d"; } +.icojam_shirt:before { + content: "\e64e"; } -.icojam_four-leaved_shamrock_lucky:before { - content: "\e94e"; } +.icojam_shoes:before { + content: "\e64f"; } -.icojam_garland_lamp:before { - content: "\e94f"; } +.icojam_stadiometer:before { + content: "\e650"; } -.icojam_grandfather_frost:before { - content: "\e950"; } +.icojam_stroller_cane:before { + content: "\e651"; } -.icojam_happy_sunny:before { - content: "\e951"; } +.icojam_teether:before { + content: "\e652"; } -.icojam_horseshoe:before { - content: "\e952"; } +.icojam_tights:before { + content: "\e653"; } -.icojam_mitten:before { - content: "\e953"; } +.icojam_ultrasound_diagnostics:before { + content: "\e654"; } -.icojam_necklace:before { - content: "\e954"; } +.icojam_videogame_baby:before { + content: "\e655"; } -.icojam_package2:before { - content: "\e955"; } +.icojam_add:before { + content: "\e656"; } -.icojam_pearl:before { - content: "\e956"; } +.icojam_base:before { + content: "\e657"; } -.icojam_petard:before { - content: "\e957"; } +.icojam_base_check:before { + content: "\e658"; } -.icojam_poinsettia_christmas_star:before { - content: "\e958"; } +.icojam_base_connect:before { + content: "\e659"; } -.icojam_present:before { - content: "\e959"; } +.icojam_base_delete:before { + content: "\e65a"; } -.icojam_present_gift:before { - content: "\e95a"; } +.icojam_base_favorite:before { + content: "\e65b"; } -.icojam_ring:before { - content: "\e95b"; } +.icojam_base_new:before { + content: "\e65c"; } -.icojam_ring_finger:before { - content: "\e95c"; } +.icojam_base_remove:before { + content: "\e65d"; } -.icojam_saint_patrick_hat:before { - content: "\e95d"; } +.icojam_base_search_in:before { + content: "\e65e"; } -.icojam_salute_fireworks:before { - content: "\e95e"; } +.icojam_check:before { + content: "\e65f"; } -.icojam_salute_fireworks_2:before { - content: "\e95f"; } +.icojam_comment_1:before { + content: "\e660"; } -.icojam_salute_fireworks_3:before { - content: "\e960"; } +.icojam_comment_2:before { + content: "\e661"; } -.icojam_salute_fireworks_4:before { - content: "\e961"; } +.icojam_comment_3:before { + content: "\e662"; } -.icojam_santa_claus:before { - content: "\e962"; } +.icojam_comment_baloon:before { + content: "\e663"; } -.icojam_santa_claus_hat:before { - content: "\e963"; } +.icojam_comment_chat:before { + content: "\e664"; } -.icojam_santa_claus_head:before { - content: "\e964"; } +.icojam_comment_dream:before { + content: "\e665"; } -.icojam_shopping:before { - content: "\e965"; } +.icojam_connect_close:before { + content: "\e666"; } -.icojam_sledge:before { - content: "\e966"; } +.icojam_credit_card:before { + content: "\e667"; } -.icojam_snowman:before { - content: "\e967"; } +.icojam_credit_card_back:before { + content: "\e668"; } -.icojam_sock_boots:before { - content: "\e968"; } +.icojam_credit_card_multi:before { + content: "\e669"; } -.icojam_teddy_bear:before { - content: "\e969"; } +.icojam_delete:before { + content: "\e66a"; } -.icojam_treasures_money_gold_boiler:before { - content: "\e96a"; } +.icojam_favorite:before { + content: "\e66b"; } -.icojam_turkey_chicken:before { - content: "\e96b"; } +.icojam_favorite_add:before { + content: "\e66c"; } -.icojam_wedding_jewel:before { - content: "\e96c"; } +.icojam_favorite_add_2:before { + content: "\e66d"; } -.icojam_add-on:before { - content: "\e96d"; } +.icojam_favorite_add_3:before { + content: "\e66e"; } -.icojam_advertise_1:before { - content: "\e96e"; } +.icojam_favorite_add_4:before { + content: "\e66f"; } -.icojam_advertise_2:before { - content: "\e96f"; } +.icojam_favorite_check_1:before { + content: "\e670"; } -.icojam_archive:before { - content: "\e970"; } +.icojam_favorite_check_2:before { + content: "\e671"; } -.icojam_box:before { - content: "\e971"; } +.icojam_favorite_delete_1:before { + content: "\e672"; } -.icojam_box_opened:before { - content: "\e972"; } +.icojam_favorite_delete_2:before { + content: "\e673"; } -.icojam_browser:before { - content: "\e973"; } +.icojam_favorite_remove_1:before { + content: "\e674"; } -.icojam_comment_12:before { - content: "\e974"; } +.icojam_favorite_remove_2:before { + content: "\e675"; } -.icojam_comment_22:before { - content: "\e975"; } +.icojam_flag:before { + content: "\e676"; } -.icojam_comments:before { - content: "\e976"; } +.icojam_gear:before { + content: "\e677"; } -.icojam_compare_balance:before { - content: "\e977"; } +.icojam_glass:before { + content: "\e678"; } -.icojam_compare_disbalance:before { - content: "\e978"; } +.icojam_home:before { + content: "\e679"; } -.icojam_download_1:before { - content: "\e979"; } +.icojam_key_1:before { + content: "\e67a"; } -.icojam_download_2:before { - content: "\e97a"; } +.icojam_key_2:before { + content: "\e67b"; } -.icojam_download_3:before { - content: "\e97b"; } +.icojam_lamp:before { + content: "\e67c"; } -.icojam_download_4:before { - content: "\e97c"; } +.icojam_lamp_off:before { + content: "\e67d"; } -.icojam_download_5:before { - content: "\e97d"; } +.icojam_lamp_on:before { + content: "\e67e"; } -.icojam_firewall:before { - content: "\e97e"; } +.icojam_lock:before { + content: "\e67f"; } -.icojam_grid_01:before { - content: "\e97f"; } +.icojam_minus:before { + content: "\e680"; } -.icojam_grid_02:before { - content: "\e980"; } +.icojam_options_1:before { + content: "\e681"; } -.icojam_grid_03:before { - content: "\e981"; } +.icojam_options_2:before { + content: "\e682"; } -.icojam_grid_04:before { - content: "\e982"; } +.icojam_protect_1:before { + content: "\e683"; } -.icojam_grid_05:before { - content: "\e983"; } +.icojam_protect_2:before { + content: "\e684"; } -.icojam_grid_06:before { - content: "\e984"; } +.icojam_protect_3:before { + content: "\e685"; } -.icojam_grid_07:before { - content: "\e985"; } +.icojam_recycle_bin_1:before { + content: "\e686"; } -.icojam_grid_08:before { - content: "\e986"; } +.icojam_recycle_bin_2:before { + content: "\e687"; } -.icojam_grid_09:before { - content: "\e987"; } +.icojam_recycle_bin_3:before { + content: "\e688"; } -.icojam_grid_10:before { - content: "\e988"; } +.icojam_recycle_bin_4:before { + content: "\e689"; } -.icojam_grid_11:before { - content: "\e989"; } +.icojam_recycle_bin_empty:before { + content: "\e68a"; } -.icojam_grid_12:before { - content: "\e98a"; } +.icojam_rss:before { + content: "\e68b"; } -.icojam_grid_13:before { - content: "\e98b"; } +.icojam_search:before { + content: "\e68c"; } -.icojam_grid_14:before { - content: "\e98c"; } +.icojam_shopping_cart_1:before { + content: "\e68d"; } -.icojam_grid_15:before { - content: "\e98d"; } +.icojam_shopping_cart_2:before { + content: "\e68e"; } -.icojam_grid_16:before { - content: "\e98e"; } +.icojam_shopping_cart_3:before { + content: "\e68f"; } -.icojam_grid_17:before { - content: "\e98f"; } +.icojam_shopping_cart_4:before { + content: "\e690"; } -.icojam_grid_18:before { - content: "\e990"; } +.icojam_star:before { + content: "\e691"; } -.icojam_grid_19:before { - content: "\e991"; } +.icojam_umbrella:before { + content: "\e692"; } -.icojam_grid_20:before { - content: "\e992"; } +.icojam_unlock:before { + content: "\e693"; } -.icojam_grid_21:before { - content: "\e993"; } +.icojam_up:before { + content: "\e694"; } -.icojam_grid_22:before { - content: "\e994"; } +.icojam_wizard_1:before { + content: "\e695"; } -.icojam_grid_23:before { - content: "\e995"; } +.icojam_wizard_2:before { + content: "\e696"; } -.icojam_grid_24:before { - content: "\e996"; } +.icojam_airport:before { + content: "\e697"; } -.icojam_grid_25:before { - content: "\e997"; } +.icojam_ancient_building:before { + content: "\e698"; } -.icojam_grid_26:before { - content: "\e998"; } +.icojam_apartment:before { + content: "\e699"; } -.icojam_grid_27:before { - content: "\e999"; } +.icojam_arch:before { + content: "\e69a"; } -.icojam_grid_28:before { - content: "\e99a"; } +.icojam_bank:before { + content: "\e69b"; } -.icojam_grid_29:before { - content: "\e99b"; } +.icojam_belfry:before { + content: "\e69c"; } -.icojam_grid_30:before { - content: "\e99c"; } +.icojam_bridge_1:before { + content: "\e69d"; } -.icojam_grid_31:before { - content: "\e99d"; } +.icojam_bridge_2:before { + content: "\e69e"; } -.icojam_grid_32:before { - content: "\e99e"; } +.icojam_bridge_column:before { + content: "\e69f"; } -.icojam_grid_33:before { - content: "\e99f"; } +.icojam_building:before { + content: "\e6a0"; } -.icojam_grid_34:before { - content: "\e9a0"; } +.icojam_car_wash:before { + content: "\e6a1"; } -.icojam_grid_35:before { - content: "\e9a1"; } +.icojam_castle:before { + content: "\e6a2"; } -.icojam_grid_36:before { - content: "\e9a2"; } +.icojam_catholic_church:before { + content: "\e6a3"; } -.icojam_grid_37:before { - content: "\e9a3"; } +.icojam_church:before { + content: "\e6a4"; } -.icojam_grid_38:before { - content: "\e9a4"; } +.icojam_city:before { + content: "\e6a5"; } -.icojam_grid_columns:before { - content: "\e9a5"; } +.icojam_downtown:before { + content: "\e6a6"; } -.icojam_grid_layout:before { - content: "\e9a6"; } +.icojam_dwelling_house:before { + content: "\e6a7"; } -.icojam_grid_rows:before { - content: "\e9a7"; } +.icojam_exhibition:before { + content: "\e6a8"; } -.icojam_grid_thumbnails:before { - content: "\e9a8"; } +.icojam_factory_1:before { + content: "\e6a9"; } -.icojam_headphones:before { - content: "\e9a9"; } +.icojam_factory_2:before { + content: "\e6aa"; } -.icojam_html_code:before { - content: "\e9aa"; } +.icojam_factory_3:before { + content: "\e6ab"; } -.icojam_index_1:before { - content: "\e9ab"; } +.icojam_fire:before { + content: "\e6ac"; } -.icojam_index_2:before { - content: "\e9ac"; } +.icojam_firefighters:before { + content: "\e6ad"; } -.icojam_knob:before { - content: "\e9ad"; } +.icojam_for_rent:before { + content: "\e6ae"; } -.icojam_play:before { - content: "\e9ae"; } +.icojam_for_sale:before { + content: "\e6af"; } -.icojam_player_1:before { - content: "\e9af"; } +.icojam_front_gate:before { + content: "\e6b0"; } -.icojam_player_2:before { - content: "\e9b0"; } +.icojam_garage_1:before { + content: "\e6b1"; } -.icojam_preview_cover_flow:before { - content: "\e9b2"; } +.icojam_garage_2:before { + content: "\e6b2"; } -.icojam_preview_fullscreen:before { - content: "\e9b3"; } +.icojam_garage_hangar:before { + content: "\e6b3"; } -.icojam_preview_list:before { - content: "\e9b4"; } +.icojam_garage_multilevel:before { + content: "\e6b4"; } -.icojam_preview_matrix:before { - content: "\e9b5"; } +.icojam_government:before { + content: "\e6b5"; } -.icojam_preview_presentation:before { - content: "\e9b6"; } +.icojam_home_1:before { + content: "\e6b6"; } -.icojam_preview_table:before { - content: "\e9b7"; } +.icojam_home_2:before { + content: "\e6b7"; } -.icojam_preview_thumbnails:before { - content: "\e9b8"; } +.icojam_home_3:before { + content: "\e6b8"; } -.icojam_quotes_1:before { - content: "\e9b9"; } +.icojam_home_4:before { + content: "\e6b9"; } -.icojam_quotes_2:before { - content: "\e9ba"; } +.icojam_home_farm:before { + content: "\e6ba"; } -.icojam_send:before { - content: "\e9bb"; } +.icojam_hospital_clinic:before { + content: "\e6bb"; } -.icojam_share:before { - content: "\e9bc"; } +.icojam_housemulti_storey:before { + content: "\e6bc"; } -.icojam_site_alert:before { - content: "\e9bd"; } +.icojam_house_1:before { + content: "\e6bd"; } -.icojam_site_attention:before { - content: "\e9be"; } +.icojam_house_2:before { + content: "\e6be"; } -.icojam_site_back:before { - content: "\e9bf"; } +.icojam_house_3:before { + content: "\e6bf"; } -.icojam_site_close:before { - content: "\e9c0"; } +.icojam_house_4:before { + content: "\e6c0"; } -.icojam_site_close_tab:before { - content: "\e9c1"; } +.icojam_house_five_story:before { + content: "\e6c1"; } -.icojam_site_favorite:before { - content: "\e9c2"; } +.icojam_house_four_stories:before { + content: "\e6c2"; } -.icojam_site_foward:before { - content: "\e9c3"; } +.icojam_house_three_story:before { + content: "\e6c3"; } -.icojam_site_new:before { - content: "\e9c4"; } +.icojam_house_two_storey_1:before { + content: "\e6c4"; } -.icojam_site_options:before { - content: "\e9c5"; } +.icojam_house_two_storey_2:before { + content: "\e6c5"; } -.icojam_site_ping:before { - content: "\e9c6"; } +.icojam_house_with_garage_1:before { + content: "\e6c6"; } -.icojam_site_refresh:before { - content: "\e9c7"; } +.icojam_house_with_garage_2:before { + content: "\e6c7"; } -.icojam_site_search:before { - content: "\e9c8"; } +.icojam_hovel_1:before { + content: "\e6c8"; } -.icojam_tablet:before { - content: "\e9c9"; } +.icojam_hovel_2:before { + content: "\e6c9"; } -.icojam_text_center:before { - content: "\e9ca"; } +.icojam_library_1:before { + content: "\e6ca"; } -.icojam_text_justify_all:before { - content: "\e9cb"; } +.icojam_library_2:before { + content: "\e6cb"; } -.icojam_text_justify_centered:before { - content: "\e9cc"; } +.icojam_log_house:before { + content: "\e6cc"; } -.icojam_text_justify_left:before { - content: "\e9cd"; } +.icojam_mosque:before { + content: "\e6cd"; } -.icojam_text_justify_right:before { - content: "\e9ce"; } +.icojam_obelisk:before { + content: "\e6ce"; } -.icojam_text_left_align:before { - content: "\e9cf"; } +.icojam_orthodox_church:before { + content: "\e6cf"; } -.icojam_text_right_align:before { - content: "\e9d0"; } +.icojam_palace_of_congresses:before { + content: "\e6d0"; } -.icojam_top_1:before { - content: "\e9d1"; } +.icojam_park_1:before { + content: "\e6d1"; } -.icojam_top_2:before { - content: "\e9d2"; } +.icojam_park_2:before { + content: "\e6d2"; } -.icojam_view_expand_1:before { - content: "\e9d3"; } +.icojam_planetarium_observatory:before { + content: "\e6d3"; } -.icojam_view_expand_2:before { - content: "\e9d4"; } +.icojam_plant:before { + content: "\e6d4"; } -.icojam_view_full_screen:before { - content: "\e9d5"; } +.icojam_police:before { + content: "\e6d5"; } -.icojam_view_maximize:before { - content: "\e9d6"; } +.icojam_ranch:before { + content: "\e6d6"; } -.icojam_view_minimize:before { - content: "\e9d7"; } +.icojam_school_1:before { + content: "\e6d7"; } -.icojam_view_roll-up_1:before { - content: "\e9d8"; } +.icojam_school_2:before { + content: "\e6d8"; } -.icojam_view_roll-up_2:before { - content: "\e9d9"; } +.icojam_sheriff:before { + content: "\e6d9"; } -.icojam_view_scale_1:before { - content: "\e9da"; } +.icojam_shop_1:before { + content: "\e6da"; } -.icojam_view_scale_2:before { - content: "\e9db"; } +.icojam_shop_2:before { + content: "\e6db"; } -.icojam_window2:before { - content: "\e9dc"; } +.icojam_shop_3:before { + content: "\e6dc"; } -.icojam_window_attention:before { - content: "\e9dd"; } +.icojam_shop_4:before { + content: "\e6dd"; } -.icojam_window_close_1:before { - content: "\e9de"; } +.icojam_shopping_center:before { + content: "\e6de"; } -.icojam_window_close_2:before { - content: "\e9df"; } +.icojam_skyscraper_1:before { + content: "\e6df"; } -.icojam_window_favorite:before { - content: "\e9e0"; } +.icojam_skyscraper_2:before { + content: "\e6e0"; } -.icojam_window_new:before { - content: "\e9e1"; } +.icojam_skyscrapers_1:before { + content: "\e6e1"; } -.icojam_window_next:before { - content: "\e9e2"; } +.icojam_skyscrapers_2:before { + content: "\e6e2"; } -.icojam_window_open:before { - content: "\e9e3"; } +.icojam_skyscrapers_3:before { + content: "\e6e3"; } -.icojam_window_options:before { - content: "\e9e4"; } +.icojam_skyway:before { + content: "\e6e4"; } -.icojam_window_previous:before { - content: "\e9e5"; } +.icojam_station_gas:before { + content: "\e6e5"; } -.icojam_window_refresh:before { - content: "\e9e6"; } +.icojam_station_petrol:before { + content: "\e6e6"; } -.icojam_window_search:before { - content: "\e9e7"; } +.icojam_tent_camp:before { + content: "\e6e7"; } -.icojam_window_stop:before { - content: "\e9e8"; } +.icojam_terminal:before { + content: "\e6e8"; } -.icojam_bird_1:before { - content: "\e9e9"; } +.icojam_theater_1:before { + content: "\e6e9"; } -.icojam_bird_2:before { - content: "\e9ea"; } +.icojam_theater_2:before { + content: "\e6ea"; } -.icojam_blink:before { - content: "\e9eb"; } +.icojam_train_station:before { + content: "\e6eb"; } -.icojam_blood:before { - content: "\e9ec"; } +.icojam_TV_tower_repeater:before { + content: "\e6ec"; } -.icojam_brain:before { - content: "\e9ed"; } +.icojam_university:before { + content: "\e6ed"; } -.icojam_cardiogram_1:before { - content: "\e9ee"; } +.icojam_warehouse:before { + content: "\e6ee"; } -.icojam_cardiogram_2:before { - content: "\e9ef"; } +.icojam_amphora:before { + content: "\e6ef"; } -.icojam_chicken2:before { - content: "\e9f0"; } +.icojam_awards:before { + content: "\e6f0"; } -.icojam_DNA_1:before { - content: "\e9f1"; } +.icojam_books_1:before { + content: "\e6f1"; } -.icojam_DNA_2:before { - content: "\e9f2"; } +.icojam_books_2:before { + content: "\e6f2"; } -.icojam_DNA_3:before { - content: "\e9f3"; } +.icojam_crown_1:before { + content: "\e6f3"; } -.icojam_doctor:before { - content: "\e9f4"; } +.icojam_crown_2:before { + content: "\e6f4"; } -.icojam_dog:before { - content: "\e9f5"; } +.icojam_death:before { + content: "\e6f5"; } -.icojam_drugs:before { - content: "\e9f6"; } +.icojam_eater:before { + content: "\e6f6"; } -.icojam_ear:before { - content: "\e9f7"; } +.icojam_family:before { + content: "\e6f7"; } -.icojam_eye_1:before { - content: "\e9f8"; } +.icojam_ghost:before { + content: "\e6f8"; } -.icojam_eye_2:before { - content: "\e9f9"; } +.icojam_kill:before { + content: "\e6f9"; } -.icojam_eye_3:before { - content: "\e9fa"; } +.icojam_leader:before { + content: "\e6fa"; } -.icojam_eye_4:before { - content: "\e9fb"; } +.icojam_mask:before { + content: "\e6fb"; } -.icojam_eye_5:before { - content: "\e9fc"; } +.icojam_matreshka_1:before { + content: "\e6fc"; } -.icojam_eye_6:before { - content: "\e9fd"; } +.icojam_matreshka_2:before { + content: "\e6fd"; } -.icojam_eye_7:before { - content: "\e9fe"; } +.icojam_nature:before { + content: "\e6fe"; } -.icojam_eyelash:before { - content: "\e9ff"; } +.icojam_picture:before { + content: "\e6ff"; } -.icojam_fish2:before { - content: "\ea00"; } +.icojam_pillar:before { + content: "\e700"; } -.icojam_fist:before { - content: "\ea01"; } +.icojam_smile_1:before { + content: "\e701"; } -.icojam_heart:before { - content: "\ea02"; } +.icojam_smile_2:before { + content: "\e702"; } -.icojam_hostpital:before { - content: "\ea03"; } +.icojam_smile_3:before { + content: "\e703"; } -.icojam_injection:before { - content: "\ea04"; } +.icojam_smile_4:before { + content: "\e704"; } -.icojam_kidney:before { - content: "\ea05"; } +.icojam_smile_disappointment:before { + content: "\e705"; } -.icojam_lips:before { - content: "\ea06"; } +.icojam_smile_fright:before { + content: "\e706"; } -.icojam_liver:before { - content: "\ea07"; } +.icojam_smile_surprise:before { + content: "\e707"; } -.icojam_LSD:before { - content: "\ea08"; } +.icojam_smile_wink:before { + content: "\e708"; } -.icojam_lungs:before { - content: "\ea09"; } +.icojam_sun:before { + content: "\e709"; } -.icojam_medicine_chest:before { - content: "\ea0a"; } +.icojam_wreath:before { + content: "\e70a"; } -.icojam_microscope_1:before { - content: "\ea0b"; } +.icojam_yin_yang:before { + content: "\e70b"; } -.icojam_microscope_2:before { - content: "\ea0c"; } +.icojam_calculator:before { + content: "\e70c"; } -.icojam_monkey:before { - content: "\ea0d"; } +.icojam_camera_betacam:before { + content: "\e70d"; } -.icojam_nose_1:before { - content: "\ea0e"; } +.icojam_camera_video_1:before { + content: "\e70e"; } -.icojam_nose_2:before { - content: "\ea0f"; } +.icojam_camera_video_2:before { + content: "\e70f"; } -.icojam_nurse:before { - content: "\ea10"; } +.icojam_channel_close:before { + content: "\e710"; } -.icojam_patch_1:before { - content: "\ea11"; } +.icojam_channel_delete:before { + content: "\e711"; } -.icojam_patch_2:before { - content: "\ea12"; } +.icojam_channel_favorite:before { + content: "\e712"; } -.icojam_pill_1:before { - content: "\ea13"; } +.icojam_channel_new:before { + content: "\e713"; } -.icojam_pill_2:before { - content: "\ea14"; } +.icojam_channel_pause:before { + content: "\e714"; } -.icojam_pill_3:before { - content: "\ea15"; } +.icojam_channel_ready:before { + content: "\e715"; } -.icojam_pill_4:before { - content: "\ea16"; } +.icojam_channel_stop:before { + content: "\e716"; } -.icojam_pill_5:before { - content: "\ea17"; } +.icojam_channel_watch:before { + content: "\e717"; } -.icojam_pill_6:before { - content: "\ea18"; } +.icojam_computer:before { + content: "\e718"; } -.icojam_pill_7:before { - content: "\ea19"; } +.icojam_connection:before { + content: "\e719"; } -.icojam_pill_8:before { - content: "\ea1a"; } +.icojam_connection_close:before { + content: "\e71a"; } -.icojam_pill_drugs:before { - content: "\ea1b"; } +.icojam_connection_delete:before { + content: "\e71b"; } -.icojam_red_cross:before { - content: "\ea1c"; } +.icojam_connection_favorite:before { + content: "\e71c"; } -.icojam_skull:before { - content: "\ea1d"; } +.icojam_connection_new:before { + content: "\e71d"; } -.icojam_skull_and_bones:before { - content: "\ea1e"; } +.icojam_connection_ping:before { + content: "\e71e"; } -.icojam_sleep_1:before { - content: "\ea1f"; } +.icojam_connection_ready:before { + content: "\e71f"; } -.icojam_sleep_2:before { - content: "\ea20"; } +.icojam_dec_phone:before { + content: "\e720"; } -.icojam_sleep_3:before { - content: "\ea21"; } +.icojam_disc:before { + content: "\e721"; } -.icojam_smoke:before { - content: "\ea22"; } +.icojam_external_drive:before { + content: "\e722"; } -.icojam_snake:before { - content: "\ea23"; } +.icojam_fax_1:before { + content: "\e723"; } -.icojam_stomach:before { - content: "\ea24"; } +.icojam_fax_2:before { + content: "\e724"; } -.icojam_syringe:before { - content: "\ea25"; } +.icojam_flashlight:before { + content: "\e725"; } -.icojam_test-tube_1:before { - content: "\ea26"; } +.icojam_hard_disk:before { + content: "\e726"; } -.icojam_test-tube_2:before { - content: "\ea27"; } +.icojam_hometheatre:before { + content: "\e727"; } -.icojam_test-tube_3:before { - content: "\ea28"; } +.icojam_iphone_horizontal_1:before { + content: "\e728"; } -.icojam_test-tube_4:before { - content: "\ea29"; } +.icojam_iphone_horizontal_2:before { + content: "\e729"; } -.icojam_test-tube_5:before { - content: "\ea2a"; } +.icojam_iphone_vertical_1:before { + content: "\e72a"; } -.icojam_thermometer:before { - content: "\ea2b"; } +.icojam_iphone_vertical_2:before { + content: "\e72b"; } -.icojam_tooth:before { - content: "\ea2c"; } +.icojam_joypad_games:before { + content: "\e72c"; } -.icojam_anchor:before { - content: "\ea2d"; } +.icojam_keyboard:before { + content: "\e72d"; } -.icojam_axis_3d:before { - content: "\ea2e"; } +.icojam_loudspeakers:before { + content: "\e72e"; } -.icojam_book:before { - content: "\ea2f"; } +.icojam_mfu_xerox:before { + content: "\e72f"; } -.icojam_categories:before { - content: "\ea30"; } +.icojam_microphone:before { + content: "\e730"; } -.icojam_cloud:before { - content: "\ea31"; } +.icojam_mobile_phone:before { + content: "\e731"; } -.icojam_cloud_connect:before { - content: "\ea32"; } +.icojam_monitor:before { + content: "\e732"; } -.icojam_cloud_delete:before { - content: "\ea33"; } +.icojam_music_center:before { + content: "\e733"; } -.icojam_cloud_download:before { - content: "\ea34"; } +.icojam_network:before { + content: "\e734"; } -.icojam_cloud_new:before { - content: "\ea35"; } +.icojam_notebook_1:before { + content: "\e735"; } -.icojam_cloud_ok:before { - content: "\ea36"; } +.icojam_notebook_2:before { + content: "\e736"; } -.icojam_cloud_upload:before { - content: "\ea37"; } +.icojam_notebook_3:before { + content: "\e737"; } -.icojam_compas_1:before { - content: "\ea38"; } +.icojam_notebook_computer:before { + content: "\e738"; } -.icojam_compas_2:before { - content: "\ea39"; } +.icojam_photo_backside:before { + content: "\e739"; } -.icojam_cup_12:before { - content: "\ea3a"; } +.icojam_photo_camera:before { + content: "\e73a"; } -.icojam_cup_22:before { - content: "\ea3b"; } +.icojam_photo_compact:before { + content: "\e73b"; } -.icojam_eye_12:before { - content: "\ea3d"; } +.icojam_photo_flash:before { + content: "\e73c"; } -.icojam_eye_22:before { - content: "\ea3e"; } +.icojam_piano_music:before { + content: "\e73d"; } -.icojam_feather:before { - content: "\ea3f"; } +.icojam_print:before { + content: "\e73e"; } -.icojam_flash:before { - content: "\ea40"; } +.icojam_projector:before { + content: "\e73f"; } -.icojam_food_1:before { - content: "\ea41"; } +.icojam_psp:before { + content: "\e740"; } -.icojam_food_2:before { - content: "\ea42"; } +.icojam_radio:before { + content: "\e741"; } -.icojam_food_3:before { - content: "\ea43"; } +.icojam_recorder:before { + content: "\e742"; } -.icojam_geo:before { - content: "\ea44"; } +.icojam_remote_control_1:before { + content: "\e743"; } -.icojam_goal:before { - content: "\ea45"; } +.icojam_remote_control_2:before { + content: "\e744"; } -.icojam_goal_1:before { - content: "\ea46"; } +.icojam_save:before { + content: "\e745"; } -.icojam_inbox_1:before { - content: "\ea47"; } +.icojam_save_as:before { + content: "\e746"; } -.icojam_inbox_mail:before { - content: "\ea48"; } +.icojam_scanner:before { + content: "\e747"; } -.icojam_inbox_receive:before { - content: "\ea49"; } +.icojam_sd_card_memory:before { + content: "\e748"; } -.icojam_inbox_send:before { - content: "\ea4a"; } +.icojam_server:before { + content: "\e749"; } -.icojam_inbox_sent:before { - content: "\ea4b"; } +.icojam_sim_card:before { + content: "\e74a"; } -.icojam_info_1:before { - content: "\ea4c"; } +.icojam_smartphone_1:before { + content: "\e74b"; } -.icojam_info_2:before { - content: "\ea4d"; } +.icojam_smartphone_2:before { + content: "\e74c"; } -.icojam_info_3:before { - content: "\ea4e"; } +.icojam_telephone_1:before { + content: "\e74d"; } -.icojam_languages:before { - content: "\ea4f"; } +.icojam_telephone_2:before { + content: "\e74e"; } -.icojam_link_2:before { - content: "\ea51"; } +.icojam_telephone_3:before { + content: "\e74f"; } -.icojam_link_3:before { - content: "\ea52"; } +.icojam_tv:before { + content: "\e750"; } -.icojam_link_close_1:before { - content: "\ea53"; } +.icojam_tv_wide:before { + content: "\e751"; } -.icojam_link_close_2:before { - content: "\ea54"; } +.icojam_usb_flash:before { + content: "\e752"; } -.icojam_link_delete_1:before { - content: "\ea55"; } +.icojam_videocamera_1:before { + content: "\e753"; } -.icojam_link_delete_2:before { - content: "\ea56"; } +.icojam_videocamera_2:before { + content: "\e754"; } -.icojam_link_new_1:before { - content: "\ea57"; } +.icojam_videocamera_3:before { + content: "\e755"; } -.icojam_link_new_2:before { - content: "\ea58"; } +.icojam_webcam:before { + content: "\e756"; } -.icojam_location_1:before { - content: "\ea59"; } +.icojam_aac:before { + content: "\e757"; } -.icojam_location_2:before { - content: "\ea5a"; } +.icojam_ai:before { + content: "\e758"; } -.icojam_location_3:before { - content: "\ea5b"; } +.icojam_ape:before { + content: "\e759"; } -.icojam_location_4:before { - content: "\ea5c"; } +.icojam_asf:before { + content: "\e75a"; } -.icojam_location_5:before { - content: "\ea5d"; } +.icojam_avi:before { + content: "\e75b"; } -.icojam_location_current:before { - content: "\ea5e"; } +.icojam_bat:before { + content: "\e75c"; } -.icojam_location_delete:before { - content: "\ea5f"; } +.icojam_bmp:before { + content: "\e75d"; } -.icojam_location_favorite:before { - content: "\ea60"; } +.icojam_cdr:before { + content: "\e75e"; } -.icojam_location_new:before { - content: "\ea61"; } +.icojam_cfg:before { + content: "\e75f"; } -.icojam_location_remove:before { - content: "\ea62"; } +.icojam_chm:before { + content: "\e760"; } -.icojam_map_1:before { - content: "\ea63"; } +.icojam_com:before { + content: "\e761"; } -.icojam_map_2:before { - content: "\ea64"; } +.icojam_css:before { + content: "\e762"; } -.icojam_map_3:before { - content: "\ea65"; } +.icojam_csv:before { + content: "\e763"; } -.icojam_map_4:before { - content: "\ea66"; } +.icojam_djv:before { + content: "\e764"; } -.icojam_map_location:before { - content: "\ea67"; } +.icojam_dll:before { + content: "\e765"; } -.icojam_options:before { - content: "\ea68"; } +.icojam_doc:before { + content: "\e766"; } -.icojam_patch:before { - content: "\ea69"; } +.icojam_document_audio:before { + content: "\e767"; } -.icojam_plane:before { - content: "\ea6a"; } +.icojam_document_image:before { + content: "\e768"; } -.icojam_present2:before { - content: "\ea6b"; } +.icojam_document_photo:before { + content: "\e769"; } -.icojam_radio_1:before { - content: "\ea6c"; } +.icojam_document_system:before { + content: "\e76a"; } -.icojam_radio_2:before { - content: "\ea6d"; } +.icojam_document_text:before { + content: "\e76b"; } -.icojam_script:before { - content: "\ea6e"; } +.icojam_document_unknown:before { + content: "\e76c"; } -.icojam_speed_1:before { - content: "\ea6f"; } +.icojam_document_video:before { + content: "\e76d"; } -.icojam_speed_2:before { - content: "\ea70"; } +.icojam_document_voice:before { + content: "\e76e"; } -.icojam_switch_off:before { - content: "\ea71"; } +.icojam_docx:before { + content: "\e76f"; } -.icojam_switch_off_1:before { - content: "\ea72"; } +.icojam_eps:before { + content: "\e770"; } -.icojam_switch_on:before { - content: "\ea73"; } +.icojam_exe:before { + content: "\e771"; } -.icojam_switch_on_1:before { - content: "\ea74"; } +.icojam_file_audio:before { + content: "\e772"; } -.icojam_tag_1:before { - content: "\ea75"; } +.icojam_file_image:before { + content: "\e773"; } -.icojam_tag_2:before { - content: "\ea76"; } +.icojam_file_photo:before { + content: "\e774"; } -.icojam_tag_delete:before { - content: "\ea77"; } +.icojam_file_video:before { + content: "\e775"; } -.icojam_tag_favorite:before { - content: "\ea78"; } +.icojam_file_voice:before { + content: "\e776"; } -.icojam_tag_new:before { - content: "\ea79"; } +.icojam_fla:before { + content: "\e777"; } -.icojam_tag_ready:before { - content: "\ea7a"; } +.icojam_flac:before { + content: "\e778"; } -.icojam_tag_remove:before { - content: "\ea7b"; } +.icojam_gif:before { + content: "\e779"; } -.icojam_tags_1:before { - content: "\ea7c"; } +.icojam_html:before { + content: "\e77a"; } -.icojam_tags_2:before { - content: "\ea7d"; } +.icojam_icl:before { + content: "\e77b"; } -.icojam_target:before { - content: "\ea7e"; } +.icojam_icns:before { + content: "\e77c"; } -.icojam_target_1:before { - content: "\ea7f"; } +.icojam_ico:before { + content: "\e77d"; } -.icojam_toggle_down_slide:before { - content: "\ea80"; } +.icojam_ini:before { + content: "\e77e"; } -.icojam_toggle_left_slide:before { - content: "\ea81"; } +.icojam_iso:before { + content: "\e77f"; } -.icojam_toggle_right_slide:before { - content: "\ea82"; } +.icojam_jpg:before { + content: "\e780"; } -.icojam_toggle_up_slide:before { - content: "\ea83"; } +.icojam_log:before { + content: "\e781"; } -.icojam_water:before { - content: "\ea84"; } +.icojam_midi:before { + content: "\e782"; } -.icojam_airdrop:before { - content: "\ea85"; } +.icojam_mkv:before { + content: "\e783"; } -.icojam_application_delete:before { - content: "\ea86"; } +.icojam_mov:before { + content: "\e784"; } -.icojam_application_favorite:before { - content: "\ea87"; } +.icojam_mp3:before { + content: "\e785"; } -.icojam_application_new:before { - content: "\ea88"; } +.icojam_mp4:before { + content: "\e786"; } -.icojam_application_ready:before { - content: "\ea89"; } +.icojam_mpg:before { + content: "\e787"; } -.icojam_application_remove:before { - content: "\ea8a"; } +.icojam_ogg:before { + content: "\e788"; } -.icojam_battery_1:before { - content: "\ea8b"; } +.icojam_ogm:before { + content: "\e789"; } -.icojam_battery_2:before { - content: "\ea8c"; } +.icojam_otf:before { + content: "\e78a"; } -.icojam_battery_3:before { - content: "\ea8d"; } +.icojam_pdf:before { + content: "\e78b"; } -.icojam_battery_empty:before { - content: "\ea8e"; } +.icojam_png:before { + content: "\e78c"; } -.icojam_battery_full:before { - content: "\ea8f"; } +.icojam_ppt:before { + content: "\e78d"; } -.icojam_bell2:before { - content: "\ea90"; } +.icojam_pptx:before { + content: "\e78e"; } -.icojam_bucket_tool:before { - content: "\ea91"; } +.icojam_psd:before { + content: "\e78f"; } -.icojam_bug:before { - content: "\ea92"; } +.icojam_ra:before { + content: "\e790"; } -.icojam_cards:before { - content: "\ea93"; } +.icojam_rar:before { + content: "\e791"; } -.icojam_chart_1:before { - content: "\ea94"; } +.icojam_raw:before { + content: "\e792"; } -.icojam_chart_2:before { - content: "\ea95"; } +.icojam_rm:before { + content: "\e793"; } -.icojam_chart_3:before { - content: "\ea96"; } +.icojam_rtf:before { + content: "\e794"; } -.icojam_chart_4:before { - content: "\ea97"; } +.icojam_svg:before { + content: "\e795"; } -.icojam_chess:before { - content: "\ea98"; } +.icojam_svgz:before { + content: "\e796"; } -.icojam_connect_1:before { - content: "\ea99"; } +.icojam_swf:before { + content: "\e797"; } -.icojam_connect_2:before { - content: "\ea9a"; } +.icojam_sys:before { + content: "\e798"; } -.icojam_contrast:before { - content: "\ea9b"; } +.icojam_tga:before { + content: "\e799"; } -.icojam_crop:before { - content: "\ea9c"; } +.icojam_tif:before { + content: "\e79a"; } -.icojam_crop_2:before { - content: "\ea9d"; } +.icojam_ttf:before { + content: "\e79b"; } -.icojam_dropper_pipette:before { - content: "\ea9e"; } +.icojam_txt:before { + content: "\e79c"; } -.icojam_filter:before { - content: "\ea9f"; } +.icojam_wav:before { + content: "\e79d"; } -.icojam_folder_close:before { - content: "\eaa0"; } +.icojam_wma:before { + content: "\e79e"; } -.icojam_folder_open:before { - content: "\eaa1"; } +.icojam_wmv:before { + content: "\e79f"; } -.icojam_font:before { - content: "\eaa2"; } +.icojam_xls:before { + content: "\e7a0"; } -.icojam_glasses:before { - content: "\eaa3"; } +.icojam_xlsx:before { + content: "\e7a1"; } -.icojam_graph_tools:before { - content: "\eaa4"; } +.icojam_xml:before { + content: "\e7a2"; } -.icojam_grid:before { - content: "\eaa5"; } +.icojam_zip:before { + content: "\e7a3"; } -.icojam_hang:before { - content: "\eaa6"; } +.icojam_alarm_clock:before { + content: "\e7a4"; } -.icojam_layer_order_1:before { - content: "\eaa7"; } +.icojam_alphabet:before { + content: "\e7a5"; } -.icojam_layer_order_2:before { - content: "\eaa8"; } +.icojam_army_training:before { + content: "\e7a6"; } -.icojam_megaphone:before { - content: "\eaa9"; } +.icojam_badge:before { + content: "\e7a7"; } -.icojam_mirror_horizontal:before { - content: "\eaaa"; } +.icojam_book_1:before { + content: "\e7a8"; } -.icojam_mirror_vertical:before { - content: "\eaab"; } +.icojam_book_2:before { + content: "\e7a9"; } -.icojam_mixer2:before { - content: "\eaac"; } +.icojam_book_3:before { + content: "\e7aa"; } -.icojam_movie_1:before { - content: "\eaad"; } +.icojam_books_12:before { + content: "\e7ab"; } -.icojam_movie_2:before { - content: "\eaae"; } +.icojam_books_22:before { + content: "\e7ac"; } -.icojam_movie_3:before { - content: "\eaaf"; } +.icojam_brush:before { + content: "\e7ad"; } -.icojam_movie_4:before { - content: "\eab0"; } +.icojam_calculator2:before { + content: "\e7ae"; } -.icojam_music_1:before { - content: "\eab1"; } +.icojam_calendar:before { + content: "\e7af"; } -.icojam_music_2:before { - content: "\eab2"; } +.icojam_certificate:before { + content: "\e7b0"; } -.icojam_news_1:before { - content: "\eab3"; } +.icojam_chemistry_1:before { + content: "\e7b1"; } -.icojam_news_2:before { - content: "\eab4"; } +.icojam_chemistry_2:before { + content: "\e7b2"; } -.icojam_news_3:before { - content: "\eab5"; } +.icojam_classboard:before { + content: "\e7b3"; } -.icojam_news_newspaper_1:before { - content: "\eab6"; } +.icojam_copybook_1:before { + content: "\e7b4"; } -.icojam_news_newspaper_2:before { - content: "\eab7"; } +.icojam_copybook_2:before { + content: "\e7b5"; } -.icojam_options2:before { - content: "\eab8"; } +.icojam_copybook_3:before { + content: "\e7b6"; } -.icojam_palette:before { - content: "\eab9"; } +.icojam_copybook_4:before { + content: "\e7b7"; } -.icojam_pattern_tool:before { - content: "\eaba"; } +.icojam_desk:before { + content: "\e7b8"; } -.icojam_pen2:before { - content: "\eabb"; } +.icojam_dna_1:before { + content: "\e7b9"; } -.icojam_pen_felt:before { - content: "\eabc"; } +.icojam_dna_2:before { + content: "\e7ba"; } -.icojam_pencil2:before { - content: "\eabd"; } +.icojam_drawing:before { + content: "\e7bb"; } -.icojam_phone_1:before { - content: "\eabe"; } +.icojam_geography:before { + content: "\e7bc"; } -.icojam_phone_2:before { - content: "\eabf"; } +.icojam_geography_earth:before { + content: "\e7bd"; } -.icojam_photo_reel:before { - content: "\eac0"; } +.icojam_geography_globe:before { + content: "\e7be"; } -.icojam_picture_portrait:before { - content: "\eac1"; } +.icojam_geometry:before { + content: "\e7bf"; } -.icojam_pitchfork:before { - content: "\eac2"; } +.icojam_holliday:before { + content: "\e7c0"; } -.icojam_radar_satellite_antenna:before { - content: "\eac3"; } +.icojam_home2:before { + content: "\e7c1"; } -.icojam_rocket:before { - content: "\eac4"; } +.icojam_language:before { + content: "\e7c2"; } -.icojam_saturn:before { - content: "\eac5"; } +.icojam_list_1:before { + content: "\e7c3"; } -.icojam_signal:before { - content: "\eac6"; } +.icojam_list_2:before { + content: "\e7c4"; } -.icojam_signal_3:before { - content: "\eac7"; } +.icojam_list_3:before { + content: "\e7c5"; } -.icojam_speaker_1:before { - content: "\eac8"; } +.icojam_list_4:before { + content: "\e7c6"; } -.icojam_speaker_2:before { - content: "\eac9"; } +.icojam_list_5:before { + content: "\e7c7"; } -.icojam_speaker_3:before { - content: "\eaca"; } +.icojam_list_6:before { + content: "\e7c8"; } -.icojam_speaker_mute:before { - content: "\eacb"; } +.icojam_list_7:before { + content: "\e7c9"; } -.icojam_sputnik:before { - content: "\eacc"; } +.icojam_list_8:before { + content: "\e7ca"; } -.icojam_stamp:before { - content: "\eacd"; } +.icojam_mark_1:before { + content: "\e7cb"; } -.icojam_terminal2:before { - content: "\eace"; } +.icojam_mark_1-:before { + content: "\e7cc"; } -.icojam_terminal_application:before { - content: "\eacf"; } +.icojam_mark_12:before { + content: "\e7cd"; } -.icojam_text_align_center:before { - content: "\ead0"; } +.icojam_mark_2:before { + content: "\e7ce"; } -.icojam_text_align_left:before { - content: "\ead1"; } +.icojam_mark_2-:before { + content: "\e7cf"; } -.icojam_text_align_right:before { - content: "\ead2"; } +.icojam_mark_22:before { + content: "\e7d0"; } -.icojam_video_add:before { - content: "\ead3"; } +.icojam_mark_3:before { + content: "\e7d1"; } -.icojam_video_delete:before { - content: "\ead4"; } +.icojam_mark_3-:before { + content: "\e7d2"; } -.icojam_video_favorite:before { - content: "\ead5"; } +.icojam_mark_32:before { + content: "\e7d3"; } -.icojam_video_pause:before { - content: "\ead6"; } +.icojam_mark_4:before { + content: "\e7d4"; } -.icojam_video_play:before { - content: "\ead7"; } +.icojam_mark_4-:before { + content: "\e7d5"; } -.icojam_video_record:before { - content: "\ead8"; } +.icojam_mark_42:before { + content: "\e7d6"; } -.icojam_video_remove:before { - content: "\ead9"; } +.icojam_mark_5:before { + content: "\e7d7"; } -.icojam_video_stop:before { - content: "\eada"; } +.icojam_mark_5-:before { + content: "\e7d8"; } -.icojam_video_uploaded:before { - content: "\eadb"; } +.icojam_mark_52:before { + content: "\e7d9"; } -.icojam_wi-fi_2:before { - content: "\eadc"; } +.icojam_mark_a:before { + content: "\e7da"; } -.icojam_wi-fi_3:before { - content: "\eadd"; } +.icojam_mark_a-:before { + content: "\e7db"; } -.icojam_wi-fi_4:before { - content: "\eade"; } +.icojam_mark_a2:before { + content: "\e7dc"; } -.icojam_wi-fi_5:before { - content: "\eadf"; } +.icojam_mark_b:before { + content: "\e7dd"; } -.icojam_zoom_in:before { - content: "\eae0"; } +.icojam_mark_b-:before { + content: "\e7de"; } -.icojam_zoom_out:before { - content: "\eae1"; } +.icojam_mark_b2:before { + content: "\e7df"; } -.icojam_alert:before { - content: "\eae2"; } +.icojam_mark_c:before { + content: "\e7e0"; } -.icojam_baby_boy:before { - content: "\eae3"; } +.icojam_mark_c-:before { + content: "\e7e1"; } -.icojam_baby_child:before { - content: "\eae4"; } +.icojam_mark_c2:before { + content: "\e7e2"; } -.icojam_baby_girl:before { - content: "\eae5"; } +.icojam_mark_d:before { + content: "\e7e3"; } -.icojam_children:before { - content: "\eae6"; } +.icojam_mark_d-:before { + content: "\e7e4"; } -.icojam_couple_1:before { - content: "\eae7"; } +.icojam_mark_d2:before { + content: "\e7e5"; } -.icojam_couple_2:before { - content: "\eae8"; } +.icojam_mark_e:before { + content: "\e7e6"; } -.icojam_disabled:before { - content: "\eae9"; } +.icojam_mark_e-:before { + content: "\e7e7"; } -.icojam_escalator:before { - content: "\eaea"; } +.icojam_mark_e2:before { + content: "\e7e8"; } -.icojam_exit_1:before { - content: "\eaeb"; } +.icojam_mathematics:before { + content: "\e7e9"; } -.icojam_exit_2:before { - content: "\eaec"; } +.icojam_music:before { + content: "\e7ea"; } -.icojam_father_daughter_1:before { - content: "\eaed"; } +.icojam_notebook:before { + content: "\e7eb"; } -.icojam_father_daughter_2:before { - content: "\eaee"; } +.icojam_notepad:before { + content: "\e7ec"; } -.icojam_father_son_1:before { - content: "\eaef"; } +.icojam_palette_1:before { + content: "\e7ed"; } -.icojam_father_son_2:before { - content: "\eaf0"; } +.icojam_palette_2:before { + content: "\e7ee"; } -.icojam_female:before { - content: "\eaf1"; } +.icojam_pen:before { + content: "\e7ef"; } -.icojam_fire_extinguisher:before { - content: "\eaf2"; } +.icojam_pencil:before { + content: "\e7f0"; } -.icojam_firehose:before { - content: "\eaf3"; } +.icojam_pupil_boy:before { + content: "\e7f1"; } -.icojam_fountain_1:before { - content: "\eaf4"; } +.icojam_pupil_girl:before { + content: "\e7f2"; } -.icojam_human:before { - content: "\eaf5"; } +.icojam_pupils:before { + content: "\e7f3"; } -.icojam_lift_1:before { - content: "\eaf6"; } +.icojam_rating:before { + content: "\e7f4"; } -.icojam_lift_2:before { - content: "\eaf7"; } +.icojam_rating_high:before { + content: "\e7f5"; } -.icojam_lift_service:before { - content: "\eaf8"; } +.icojam_rating_lowstar:before { + content: "\e7f6"; } -.icojam_male:before { - content: "\eaf9"; } +.icojam_ruler:before { + content: "\e7f7"; } -.icojam_mens:before { - content: "\eafa"; } +.icojam_school:before { + content: "\e7f8"; } -.icojam_mother_child:before { - content: "\eafb"; } +.icojam_school_bus:before { + content: "\e7f9"; } -.icojam_mother_daughter_1:before { - content: "\eafc"; } +.icojam_sport_1:before { + content: "\e7fa"; } -.icojam_mother_daughter_2:before { - content: "\eafd"; } +.icojam_sport_2:before { + content: "\e7fb"; } -.icojam_mother_son_1:before { - content: "\eafe"; } +.icojam_bank_1:before { + content: "\e7fc"; } -.icojam_mother_son_2:before { - content: "\eaff"; } +.icojam_bank_2:before { + content: "\e7fd"; } -.icojam_parking_1:before { - content: "\eb00"; } +.icojam_bed:before { + content: "\e7fe"; } -.icojam_parking_2:before { - content: "\eb01"; } +.icojam_career:before { + content: "\e7ff"; } -.icojam_people_crowd:before { - content: "\eb02"; } +.icojam_chair:before { + content: "\e800"; } -.icojam_pharmacy:before { - content: "\eb03"; } +.icojam_change:before { + content: "\e801"; } -.icojam_pram:before { - content: "\eb04"; } +.icojam_coin_amero:before { + content: "\e802"; } -.icojam_pregnant:before { - content: "\eb05"; } +.icojam_coin_dollar:before { + content: "\e803"; } -.icojam_pump_1:before { - content: "\eb06"; } +.icojam_coin_euro:before { + content: "\e804"; } -.icojam_pump_2:before { - content: "\eb07"; } +.icojam_coin_pound:before { + content: "\e805"; } -.icojam_registration:before { - content: "\eb08"; } +.icojam_coin_ruble:before { + content: "\e806"; } -.icojam_run_evacuation:before { - content: "\eb09"; } +.icojam_coin_yuan:before { + content: "\e807"; } -.icojam_run_exit_1:before { - content: "\eb0a"; } +.icojam_coins:before, .icojam_INCOME_LEVEL:before { + content: "\e808"; } -.icojam_run_exit_2:before { - content: "\eb0b"; } +.icojam_crisis:before { + content: "\e809"; } -.icojam_sos:before { - content: "\eb0c"; } +.icojam_elevation_1:before { + content: "\e80a"; } -.icojam_trash_1:before { - content: "\eb0d"; } +.icojam_elevation_2:before { + content: "\e80b"; } -.icojam_trash_2:before { - content: "\eb0e"; } +.icojam_elevation_3:before { + content: "\e80c"; } -.icojam_wc_1:before { - content: "\eb0f"; } +.icojam_elevation_4:before { + content: "\e80d"; } -.icojam_wc_2:before { - content: "\eb10"; } +.icojam_elevation_5:before { + content: "\e80e"; } -.icojam_wet_floor:before { - content: "\eb11"; } +.icojam_elevation_6:before { + content: "\e80f"; } -.icojam_woman:before { - content: "\eb12"; } +.icojam_factory_12:before { + content: "\e810"; } -.icojam_womans:before { - content: "\eb13"; } +.icojam_factory_22:before { + content: "\e811"; } -.icojam_action_redo_1:before { - content: "\eb14"; } +.icojam_hierarchy_1:before { + content: "\e812"; } -.icojam_action_redo_2:before { - content: "\eb15"; } +.icojam_hierarchy_2:before { + content: "\e813"; } -.icojam_action_undo_1:before { - content: "\eb16"; } +.icojam_income_1:before, .icojam_NY_GNP_ATLS_CD:before, .icojam_NY_GNP_PCAP_CD:before { + content: "\e814"; } -.icojam_action_undo_2:before { - content: "\eb17"; } +.icojam_income_2:before { + content: "\e815"; } -.icojam_arrow_down:before { - content: "\eb18"; } +.icojam_income_3:before { + content: "\e816"; } -.icojam_arrow_down-left:before { - content: "\eb19"; } +.icojam_income_4:before { + content: "\e817"; } -.icojam_arrow_down-right:before { - content: "\eb1a"; } +.icojam_loan:before { + content: "\e818"; } -.icojam_arrow_left:before { - content: "\eb1b"; } +.icojam_market:before { + content: "\e819"; } -.icojam_arrow_right:before { - content: "\eb1c"; } +.icojam_money:before { + content: "\e81a"; } -.icojam_arrow_up:before { - content: "\eb1d"; } +.icojam_moneys_1:before { + content: "\e81b"; } -.icojam_arrow_up-left:before { - content: "\eb1e"; } +.icojam_moneys_2:before { + content: "\e81c"; } -.icojam_arrow_up-right:before { - content: "\eb1f"; } +.icojam_moneys_3:before { + content: "\e81d"; } -.icojam_button_backward_1:before { - content: "\eb20"; } +.icojam_object_child:before { + content: "\e81e"; } -.icojam_button_backward_2:before { - content: "\eb21"; } +.icojam_object_root:before { + content: "\e81f"; } -.icojam_button_check_1:before { - content: "\eb22"; } +.icojam_payment_1:before, .icojam_SI_POV_GINI:before { + content: "\e820"; } -.icojam_button_check_2:before { - content: "\eb23"; } +.icojam_payment_2:before { + content: "\e821"; } -.icojam_button_delete_1:before { - content: "\eb24"; } +.icojam_payment_3:before { + content: "\e822"; } -.icojam_button_delete_2:before { - content: "\eb25"; } +.icojam_payment_4:before { + content: "\e823"; } -.icojam_document_text:before { - content: "\eb26"; } +.icojam_piggy_bank:before { + content: "\e824"; } -.icojam_button_foward_2:before { - content: "\eb27"; } +.icojam_product_1:before { + content: "\e825"; } -.icojam_button_minus_1:before { - content: "\eb28"; } +.icojam_product_2:before { + content: "\e826"; } -.icojam_button_minus_2:before { - content: "\eb29"; } +.icojam_purse_1:before { + content: "\e827"; } -button_new_2:before { - content: "\eb2b"; } +.icojam_purse_2:before { + content: "\e828"; } -.icojam_button_pause_1:before { - content: "\eb2c"; } +.icojam_purse_3:before { + content: "\e829"; } -.icojam_button_pause_2:before { - content: "\eb2d"; } +.icojam_purse_4:before { + content: "\e82a"; } -.icojam_button_play_1:before { - content: "\eb2e"; } +.icojam_purse_5:before { + content: "\e82b"; } -.icojam_button_play_2:before { - content: "\eb2f"; } +.icojam_purse_6:before { + content: "\e82c"; } -.icojam_button_record_1:before { - content: "\eb30"; } +.icojam_purse_7:before { + content: "\e82d"; } -.icojam_button_record_2:before { - content: "\eb31"; } +.icojam_purse_8:before { + content: "\e82e"; } -.icojam_button_stop_1:before { - content: "\eb32"; } +.icojam_recession_1:before { + content: "\e82f"; } -.icojam_button_stop_2:before { - content: "\eb33"; } +.icojam_recession_2:before { + content: "\e830"; } -.icojam_move_1:before { - content: "\eb34"; } +.icojam_recession_3:before { + content: "\e831"; } -.icojam_move_2:before { - content: "\eb35"; } +.icojam_recession_4:before { + content: "\e832"; } -.icojam_play_consistently:before { - content: "\eb36"; } +.icojam_recession_5:before { + content: "\e833"; } -.icojam_play_ping_pong:before { - content: "\eb37"; } +.icojam_rise_and_fall_1:before { + content: "\e834"; } -.icojam_play_repeat:before { - content: "\eb38"; } +.icojam_rise_and_fall_2:before { + content: "\e835"; } -.icojam_play_repeat_all:before { - content: "\eb39"; } +.icojam_room:before { + content: "\e836"; } -.icojam_play_shuffle:before { - content: "\eb3a"; } +.icojam_safe:before { + content: "\e837"; } -.icojam_refresh_1:before { - content: "\eb3b"; } +.icojam_scheme:before { + content: "\e838"; } -.icojam_refresh_2:before { - content: "\eb3c"; } +.icojam_sign_amero:before { + content: "\e839"; } -.icojam_rotateccw_1:before { - content: "\eb3d"; } +.icojam_sign_dollar:before { + content: "\e83a"; } -.icojam_rotate_1:before { - content: "\eb3e"; } +.icojam_sign_euro:before { + content: "\e83b"; } -.icojam_rotate_2:before { - content: "\eb3f"; } +.icojam_sign_pound:before { + content: "\e83c"; } -.icojam_rotate_3:before { - content: "\eb40"; } +.icojam_sign_ruble:before { + content: "\e83d"; } -.icojam_rotate_4:before { - content: "\eb41"; } +.icojam_sign_yuan:before { + content: "\e83e"; } -.icojam_rotate_ccw_2:before { - content: "\eb42"; } +.icojam_skyscraper_12:before { + content: "\e83f"; } -.icojam_rotate_cw_1:before { - content: "\eb43"; } +.icojam_skyscraper_22:before { + content: "\e840"; } -.icojam_rotate_cw_2:before { - content: "\eb44"; } +.icojam_skyscraper_3:before { + content: "\e841"; } -.icojam_swap_horizontal_1:before { - content: "\eb45"; } +.icojam_stability_1:before { + content: "\e842"; } -.icojam_swap_vertical_1:before { - content: "\eb46"; } +.icojam_stability_2:before { + content: "\e843"; } -.icojam_symbol_backward:before { - content: "\eb47"; } +.icojam_strategy:before { + content: "\e844"; } -.icojam_symbol_foward:before { - content: "\eb48"; } +.icojam_turning_point_1:before { + content: "\e845"; } -.icojam_symbol_pause_1:before { - content: "\eb49"; } +.icojam_turning_point_2:before { + content: "\e846"; } -.icojam_symbol_play_1:before { - content: "\eb4a"; } +.icojam_workplace_1:before { + content: "\e847"; } -.icojam_symbol_record_1:before { - content: "\eb4b"; } +.icojam_workplace_2:before { + content: "\e848"; } -.icojam_symbol_stop_1:before { - content: "\eb4c"; } +.icojam_apple_1:before { + content: "\e849"; } -.icojam_window_close:before { - content: "\eb4d"; } +.icojam_apple_2:before { + content: "\e84a"; } -.icojam_window_fullscreen_1:before { - content: "\eb4e"; } +.icojam_asparagus:before { + content: "\e84b"; } -.icojam_window_fullscreen_2:before { - content: "\eb4f"; } +.icojam_banana:before { + content: "\e84c"; } -.icojam_attention_1:before { - content: "\eb50"; } +.icojam_beans:before { + content: "\e84d"; } -.icojam_attention_2:before { - content: "\eb51"; } +.icojam_cabbage:before { + content: "\e84e"; } -.icojam_attention_3:before { - content: "\eb52"; } +.icojam_carrot:before { + content: "\e84f"; } -.icojam_bomb:before { - content: "\eb53"; } +.icojam_cauliflower:before { + content: "\e850"; } -.icojam_bonus:before { - content: "\eb54"; } +.icojam_cherry:before { + content: "\e851"; } -.icojam_cancel_1:before { - content: "\eb55"; } +.icojam_corn:before { + content: "\e852"; } -.icojam_cancel_2:before { - content: "\eb56"; } +.icojam_cucumber:before { + content: "\e853"; } -.icojam_cord_1:before { - content: "\eb57"; } +.icojam_eggplant:before { + content: "\e854"; } -.icojam_cord_2:before { - content: "\eb58"; } +.icojam_garlic:before { + content: "\e855"; } -.icojam_flash2:before { - content: "\eb59"; } +.icojam_grapes:before { + content: "\e856"; } -.icojam_flower_1:before { - content: "\eb5a"; } +.icojam_grass:before { + content: "\e857"; } -.icojam_flower_2:before { - content: "\eb5b"; } +.icojam_leaves:before { + content: "\e858"; } -.icojam_flower_3:before { - content: "\eb5c"; } +.icojam_lemon_1:before { + content: "\e859"; } -.icojam_help_1:before { - content: "\eb5d"; } +.icojam_lemon_2:before { + content: "\e85a"; } -.icojam_help_2:before { - content: "\eb5e"; } +.icojam_lemon_slice_1:before { + content: "\e85b"; } -.icojam_hierarchy_12:before { - content: "\eb5f"; } +.icojam_lemon_slice_2:before { + content: "\e85c"; } -.icojam_hierarchy_22:before { - content: "\eb60"; } +.icojam_mandarine:before { + content: "\e85d"; } -.icojam_magnet:before { - content: "\eb61"; } - -.icojam_moon:before { - content: "\eb62"; } +.icojam_melon_1:before { + content: "\e85e"; } -.icojam_peace:before { - content: "\eb63"; } +.icojam_melon_2:before { + content: "\e85f"; } -.icojam_pie_chart:before { - content: "\eb64"; } +.icojam_mushroom_1:before { + content: "\e860"; } -.icojam_radiation:before { - content: "\eb65"; } +.icojam_mushroom_2:before { + content: "\e861"; } -.icojam_shape_bonus:before { - content: "\eb66"; } +.icojam_nut:before { + content: "\e862"; } -.icojam_shape_circle:before { - content: "\eb67"; } +.icojam_olive_1:before { + content: "\e863"; } -.icojam_shape_ellipse:before { - content: "\eb68"; } +.icojam_olive_2:before { + content: "\e864"; } -.icojam_shape_heptagon:before { - content: "\eb69"; } +.icojam_onion:before { + content: "\e865"; } -.icojam_shape_hexagon:before { - content: "\eb6a"; } +.icojam_orange:before { + content: "\e866"; } -.icojam_shape_hexagonal_rounded:before { - content: "\eb6b"; } +.icojam_pattinson:before { + content: "\e867"; } -.icojam_shape_hexagonal_star:before { - content: "\eb6c"; } +.icojam_peach:before { + content: "\e868"; } -.icojam_shape_octagon:before { - content: "\eb6d"; } +.icojam_pear:before { + content: "\e869"; } -.icojam_shape_octagonal_rounded:before { - content: "\eb6e"; } +.icojam_peas_1:before { + content: "\e86a"; } -.icojam_shape_octagonal_star:before { - content: "\eb6f"; } +.icojam_peas_2:before { + content: "\e86b"; } -.icojam_shape_pentagon:before { - content: "\eb70"; } +.icojam_pepper:before { + content: "\e86c"; } -.icojam_shape_rectangle:before { - content: "\eb71"; } +.icojam_pepper_chili:before { + content: "\e86d"; } -.icojam_shape_rounded:before { - content: "\eb72"; } +.icojam_persimmon:before { + content: "\e86e"; } -.icojam_shape_seven_rounded:before { - content: "\eb73"; } +.icojam_pineapple:before { + content: "\e86f"; } -.icojam_shape_seven_star:before { - content: "\eb74"; } +.icojam_plum:before { + content: "\e870"; } -.icojam_shape_square:before { - content: "\eb75"; } +.icojam_pomegranate_1:before { + content: "\e871"; } -.icojam_shape_star:before { - content: "\eb76"; } +.icojam_pomegranate_2:before { + content: "\e872"; } -.icojam_shape_triangle:before { - content: "\eb77"; } +.icojam_pomelo:before { + content: "\e873"; } -.icojam_stop_1:before { - content: "\eb78"; } +.icojam_potato:before { + content: "\e874"; } -.icojam_stop_2:before { - content: "\eb79"; } +.icojam_pumpkin_1:before { + content: "\e875"; } -.icojam_sun2:before { - content: "\eb7a"; } +.icojam_pumpkin_2:before { + content: "\e876"; } -.icojam_switcher_1:before { - content: "\eb7b"; } +.icojam_radish:before { + content: "\e877"; } -.icojam_switcher_2:before { - content: "\eb7c"; } +.icojam_raspberry:before { + content: "\e878"; } -.icojam_air_baloon_1:before { - content: "\eb7d"; } +.icojam_salad:before { + content: "\e879"; } -.icojam_air_baloon_2:before { - content: "\eb7e"; } +.icojam_strawberry:before { + content: "\e87a"; } -.icojam_air_baloon_3:before { - content: "\eb7f"; } +.icojam_tomato_1:before { + content: "\e87b"; } -.icojam_airliner:before { - content: "\eb80"; } +.icojam_tomato_2:before { + content: "\e87c"; } -.icojam_ambulance:before { - content: "\eb81"; } +.icojam_watermelon_1:before { + content: "\e87d"; } -.icojam_bicycle:before { - content: "\eb82"; } +.icojam_watermelon_2:before { + content: "\e87e"; } -.icojam_boat:before { - content: "\eb83"; } +.icojam_wheat:before, .icojam_AGRI_LAND_PERC:before { + content: "\e87f"; } -.icojam_bus_1:before { - content: "\eb84"; } +.icojam_barbecue:before { + content: "\e880"; } -.icojam_bus_2:before { - content: "\eb85"; } +.icojam_bone:before { + content: "\e881"; } -.icojam_bus_london:before { - content: "\eb86"; } +.icojam_bread_1:before { + content: "\e882"; } -.icojam_cruise_ship:before { - content: "\eb87"; } +.icojam_bread_2:before { + content: "\e883"; } -.icojam_fighter:before { - content: "\eb88"; } +.icojam_bread_baguette:before { + content: "\e884"; } -.icojam_gas_tanker:before { - content: "\eb89"; } +.icojam_burger_1:before { + content: "\e885"; } -.icojam_helicopter:before { - content: "\eb8a"; } +.icojam_burger_2:before { + content: "\e886"; } -.icojam_motocycle:before { - content: "\eb8b"; } +.icojam_cake_1:before { + content: "\e887"; } -.icojam_plane2:before { - content: "\eb8c"; } +.icojam_cake_2:before { + content: "\e888"; } -.icojam_plane_landing:before { - content: "\eb8d"; } +.icojam_cake_wedding:before { + content: "\e889"; } -.icojam_plane_takeoff:before { - content: "\eb8e"; } +.icojam_candy_1:before { + content: "\e88a"; } -.icojam_police_1:before { - content: "\eb8f"; } +.icojam_candy_2:before { + content: "\e88b"; } -.icojam_police_2:before { - content: "\eb90"; } +.icojam_candy_3:before { + content: "\e88c"; } -.icojam_railroad:before { - content: "\eb91"; } +.icojam_candy_lolipop:before { + content: "\e88d"; } -.icojam_rocket_1:before { - content: "\eb92"; } +.icojam_cheese_1:before { + content: "\e88e"; } -.icojam_rocket_2:before { - content: "\eb93"; } +.icojam_cheese_2:before { + content: "\e88f"; } -.icojam_ship_1:before { - content: "\eb94"; } +.icojam_chicken:before { + content: "\e890"; } -.icojam_ship_2:before { - content: "\eb95"; } +.icojam_chicken_leg:before { + content: "\e891"; } -.icojam_ship_3:before { - content: "\eb96"; } +.icojam_chips:before { + content: "\e892"; } -.icojam_shuttle:before { - content: "\eb97"; } +.icojam_chocolate_1:before { + content: "\e893"; } -.icojam_sign_bus:before { - content: "\eb98"; } +.icojam_chocolate_2:before { + content: "\e894"; } -.icojam_sign_car:before { - content: "\eb99"; } +.icojam_cookies:before { + content: "\e895"; } -.icojam_sign_train_1:before { - content: "\eb9a"; } +.icojam_croissant:before { + content: "\e896"; } -.icojam_sign_train_2:before { - content: "\eb9b"; } +.icojam_donut_1:before { + content: "\e897"; } -.icojam_sign_train_3:before { - content: "\eb9c"; } +.icojam_donut_2:before { + content: "\e898"; } -.icojam_sign_tramway:before { - content: "\eb9d"; } +.icojam_egg:before { + content: "\e899"; } -.icojam_sign_trolley_bus:before { - content: "\eb9e"; } +.icojam_fish:before { + content: "\e89a"; } -.icojam_sign_water_transport:before { - content: "\eb9f"; } +.icojam_fishbone:before { + content: "\e89b"; } -.icojam_tank_1:before { - content: "\eba0"; } +.icojam_french_fries:before { + content: "\e89c"; } -.icojam_tank_2:before { - content: "\eba1"; } +.icojam_grain:before { + content: "\e89d"; } -.icojam_tanker:before { - content: "\eba2"; } +.icojam_ham:before { + content: "\e89e"; } -.icojam_taxi:before { - content: "\eba3"; } +.icojam_honey:before { + content: "\e89f"; } -.icojam_trailer:before { - content: "\eba4"; } +.icojam_hot_dog:before { + content: "\e8a0"; } -.icojam_tramway:before { - content: "\eba5"; } +.icojam_ice_cream_1:before { + content: "\e8a1"; } -.icojam_transport:before { - content: "\eba6"; } +.icojam_ice_cream_2:before { + content: "\e8a2"; } -.icojam_trolley_bus:before { - content: "\eba7"; } +.icojam_omelette:before { + content: "\e8a3"; } -.icojam_truck_1:before { - content: "\eba8"; } +.icojam_pasta_1:before { + content: "\e8a4"; } -.icojam_truck_2:before { - content: "\eba9"; } +.icojam_pasta_2:before { + content: "\e8a5"; } -.icojam_truck_3:before { - content: "\ebaa"; } +.icojam_pasta_3:before { + content: "\e8a6"; } -.icojam_ufo:before { - content: "\ebab"; } +.icojam_pizza:before { + content: "\e8a7"; } -.icojam_add_friend:before { - content: "\ebac"; } +.icojam_potato_slices:before { + content: "\e8a8"; } -.icojam_best_friends:before { - content: "\ebad"; } +.icojam_pretzel:before { + content: "\e8a9"; } -.icojam_couple:before { - content: "\ebae"; } +.icojam_rice:before { + content: "\e8aa"; } -.icojam_delete_profile:before { - content: "\ebaf"; } +.icojam_roll:before { + content: "\e8ab"; } -.icojam_forefinger_down:before { - content: "\ebb0"; } +.icojam_rolls_1:before { + content: "\e8ac"; } -.icojam_forefinger_left:before { - content: "\ebb1"; } +.icojam_rolls_2:before { + content: "\e8ad"; } -.icojam_forefinger_right:before { - content: "\ebb2"; } +.icojam_rolls_3:before { + content: "\e8ae"; } -.icojam_forefinger_up:before { - content: "\ebb3"; } +.icojam_sausage_1:before { + content: "\e8af"; } -.icojam_friends:before { - content: "\ebb4"; } +.icojam_sausage_2:before { + content: "\e8b0"; } -.icojam_group:before { - content: "\ebb5"; } +.icojam_sausage_3:before { + content: "\e8b1"; } -.icojam_hand_stop_1:before { - content: "\ebb6"; } +.icojam_sausage_4:before { + content: "\e8b2"; } -.icojam_hand_stop_2:before { - content: "\ebb7"; } +.icojam_sausage_5:before { + content: "\e8b3"; } -.icojam_man:before { - content: "\ebb8"; } +.icojam_steak:before { + content: "\e8b4"; } -.icojam_registered_user:before { - content: "\ebb9"; } +.icojam_steak_t-bone:before { + content: "\e8b5"; } -.icojam_remove_friend:before { - content: "\ebba"; } +.icojam_sushi_1:before { + content: "\e8b6"; } -.icojam_user:before { - content: "\ebbb"; } +.icojam_sushi_2:before { + content: "\e8b7"; } -.icojam_vote_no:before { - content: "\ebbc"; } +.icojam_truffle:before { + content: "\e8b8"; } -.icojam_vote_yes:before { - content: "\ebbd"; } +.icojam_wafer_1:before { + content: "\e8b9"; } -.icojam_woman2:before { - content: "\ebbe"; } +.icojam_wafer_2:before { + content: "\e8ba"; } -.icojam_cloud2:before { - content: "\ebbf"; } +.icojam_wafer_3:before { + content: "\e8bb"; } -.icojam_cold:before { - content: "\ebc0"; } +.icojam_waffle_horn:before { + content: "\e8bc"; } -.icojam_day_cloudy:before { - content: "\ebc1"; } +.icojam_beer:before { + content: "\e8bd"; } -.icojam_day_lot_clouds:before { - content: "\ebc2"; } +.icojam_bottle_1:before { + content: "\e8be"; } -.icojam_day_partly_cloudy:before { - content: "\ebc3"; } +.icojam_bottle_2:before { + content: "\e8bf"; } -.icojam_day_rain:before { - content: "\ebc4"; } +.icojam_bottle_3:before { + content: "\e8c0"; } -.icojam_day_sunny:before { - content: "\ebc5"; } +.icojam_bottle_plastic:before { + content: "\e8c1"; } -.icojam_flood:before { - content: "\ebc6"; } +.icojam_champagne:before { + content: "\e8c2"; } -.icojam_fog:before { - content: "\ebc7"; } +.icojam_citrus:before { + content: "\e8c3"; } -.icojam_hail:before { - content: "\ebc8"; } +.icojam_coffee_bean:before { + content: "\e8c4"; } -.icojam_hail_heavy:before { - content: "\ebc9"; } +.icojam_cola_1:before { + content: "\e8c5"; } -.icojam_hail_light:before { - content: "\ebca"; } +.icojam_cola_2:before { + content: "\e8c6"; } -.icojam_lightning:before { - content: "\ebcb"; } +.icojam_condensed_milk:before { + content: "\e8c7"; } -.icojam_night_cloudy:before { - content: "\ebcc"; } +.icojam_cucumbers:before { + content: "\e8c8"; } -.icojam_night_lot_clouds:before { - content: "\ebcd"; } +.icojam_cup_1:before { + content: "\e8c9"; } -.icojam_night_moon:before { - content: "\ebce"; } +.icojam_cup_2:before { + content: "\e8ca"; } -.icojam_night_partly_cloudy:before { - content: "\ebcf"; } +.icojam_cup_3:before { + content: "\e8cb"; } -.icojam_night_rain:before { - content: "\ebd0"; } +.icojam_cup_hot:before { + content: "\e8cc"; } -.icojam_rain:before { - content: "\ebd1"; } +.icojam_fork_1:before { + content: "\e8cd"; } -.icojam_rain_heavy:before { - content: "\ebd2"; } +.icojam_fork_2:before { + content: "\e8ce"; } -.icojam_rain_light:before { - content: "\ebd3"; } +.icojam_glass2:before { + content: "\e8cf"; } -.icojam_rain_lightning:before { - content: "\ebd4"; } +.icojam_glass_water:before { + content: "\e8d0"; } -.icojam_snow:before { - content: "\ebd5"; } +.icojam_goblet_1:before { + content: "\e8d1"; } -.icojam_snow_heavy:before { - content: "\ebd6"; } +.icojam_goblet_2:before { + content: "\e8d2"; } -.icojam_snow_light:before { - content: "\ebd7"; } +.icojam_goblet_3:before { + content: "\e8d3"; } -.icojam_snow_rain:before { - content: "\ebd8"; } +.icojam_goblet_4:before { + content: "\e8d4"; } -.icojam_thermometer2:before { - content: "\ebd9"; } +.icojam_goblet_5:before { + content: "\e8d5"; } -.icojam_thunder:before { - content: "\ebda"; } +.icojam_goblet_6:before { + content: "\e8d6"; } -.icojam_tornado:before { - content: "\ebdb"; } +.icojam_goblet_7:before { + content: "\e8d7"; } -.icojam_umbrella2:before { - content: "\ebdc"; } +.icojam_goblet_wineglass:before { + content: "\e8d8"; } -.icojam_water2:before { - content: "\ebdd"; } +.icojam_jam_1:before { + content: "\e8d9"; } -.icojam_wet:before { - content: "\ebde"; } +.icojam_jam_2:before { + content: "\e8da"; } -.icojam_attach_1:before { - content: "\ebdf"; } +.icojam_milk:before { + content: "\e8db"; } -.icojam_attach_2:before { - content: "\ebe0"; } +.icojam_mushrooms:before { + content: "\e8dc"; } -.icojam_bag_1:before { - content: "\ebe1"; } +.icojam_package:before { + content: "\e8dd"; } -.icojam_bag_2:before { - content: "\ebe2"; } +.icojam_pan_1:before { + content: "\e8de"; } -.icojam_bag_3:before { - content: "\ebe3"; } +.icojam_pan_2:before { + content: "\e8df"; } -.icojam_bag_4:before { - content: "\ebe4"; } +.icojam_pan_3:before { + content: "\e8e0"; } -.icojam_bag_5:before { - content: "\ebe5"; } +.icojam_pan_4:before { + content: "\e8e1"; } -.icojam_calendar_1:before { - content: "\ebe6"; } +.icojam_pepper2:before { + content: "\e8e2"; } -.icojam_calendar_2:before { - content: "\ebe7"; } +.icojam_plate_1:before { + content: "\e8e3"; } -.icojam_calendar_3:before { - content: "\ebe8"; } +.icojam_plate_2:before { + content: "\e8e4"; } -.icojam_calendar_4:before { - content: "\ebe9"; } +.icojam_preserves_1:before { + content: "\e8e5"; } -.icojam_calendar_5:before { - content: "\ebea"; } +.icojam_preserves_2:before { + content: "\e8e6"; } -.icojam_calendar_6:before { - content: "\ebeb"; } +.icojam_preserves_3:before { + content: "\e8e7"; } -.icojam_clipboard_1:before { - content: "\ebec"; } +.icojam_salt:before { + content: "\e8e8"; } -.icojam_clipboard_2:before { - content: "\ebed"; } +.icojam_take-out_coffee:before { + content: "\e8e9"; } -.icojam_clipboard_3:before { - content: "\ebee"; } +.icojam_tea:before { + content: "\e8ea"; } -.icojam_copy:before { - content: "\ebef"; } +.icojam_tea_bag_1:before { + content: "\e8eb"; } -.icojam_count_delete:before { - content: "\ebf0"; } +.icojam_tea_bag_2:before { + content: "\e8ec"; } -.icojam_count_finish:before { - content: "\ebf1"; } +.icojam_teapot:before { + content: "\e8ed"; } -.icojam_count_new:before { - content: "\ebf2"; } +.icojam_wine_1:before { + content: "\e8ee"; } -.icojam_count_pause:before { - content: "\ebf3"; } +.icojam_wine_2:before { + content: "\e8ef"; } -.icojam_count_play:before { - content: "\ebf4"; } +.icojam_armchair:before { + content: "\e8f0"; } -.icojam_count_remove:before { - content: "\ebf5"; } +.icojam_baby_cot:before { + content: "\e8f1"; } -.icojam_count_stop:before { - content: "\ebf6"; } +.icojam_bath:before { + content: "\e8f2"; } -.icojam_cursor:before { - content: "\ebf7"; } +.icojam_bed2:before { + content: "\e8f3"; } -.icojam_cut:before { - content: "\ebf8"; } +.icojam_bench:before { + content: "\e8f4"; } -.icojam_document_1:before { - content: "\ebf9"; } +.icojam_bench_1:before { + content: "\e8f5"; } -.icojam_document_2:before { - content: "\ebfa"; } +.icojam_bidet:before { + content: "\e8f6"; } -.icojam_document_check:before { - content: "\ebfb"; } +.icojam_blanket:before { + content: "\e8f7"; } -.icojam_document_delete:before { - content: "\ebfc"; } +.icojam_bookshelf:before { + content: "\e8f8"; } -.icojam_document_favorite:before { - content: "\ebfd"; } +.icojam_box_locker:before { + content: "\e8f9"; } -.icojam_document_new:before { - content: "\ebfe"; } +.icojam_box_open:before { + content: "\e8fa"; } -.icojam_document_remove:before { - content: "\ebff"; } +.icojam_cabinet:before { + content: "\e8fb"; } -.icojam_document_search:before { - content: "\ec00"; } +.icojam_carpet:before { + content: "\e8fc"; } -.icojam_document_text2:before { - content: "\ec01"; } +.icojam_chair_1:before { + content: "\e8fd"; } -.icojam_enter:before { - content: "\ec02"; } +.icojam_chair_2:before { + content: "\e8fe"; } -.icojam_erase:before { - content: "\ec03"; } +.icojam_chair_3:before { + content: "\e8ff"; } -.icojam_eraser:before { - content: "\ec04"; } +.icojam_chair_director_folding:before { + content: "\e900"; } -.icojam_exit:before { - content: "\ec05"; } +.icojam_chair_office:before { + content: "\e901"; } -.icojam_factory:before { - content: "\ec06"; } +.icojam_chair_rocking:before { + content: "\e902"; } -.icojam_folder:before { - content: "\ec07"; } +.icojam_chair_round:before { + content: "\e903"; } -.icojam_folder_1:before { - content: "\ec08"; } +.icojam_chandelier:before { + content: "\e904"; } -.icojam_folder_1_open:before { - content: "\ec09"; } +.icojam_changing_table:before { + content: "\e905"; } -.icojam_folder_2:before { - content: "\ec0a"; } +.icojam_chest_of_drawers:before { + content: "\e906"; } -.icojam_folder_2_open:before { - content: "\ec0b"; } +.icojam_chest_of_drawers_2:before { + content: "\e907"; } -.icojam_folder_check:before { - content: "\ec0c"; } +.icojam_cot:before { + content: "\e908"; } -.icojam_folder_delete:before { - content: "\ec0d"; } +.icojam_curtains:before { + content: "\e909"; } -.icojam_folder_favorite:before { - content: "\ec0e"; } +.icojam_cushion:before { + content: "\e90a"; } -.icojam_folder_new:before { - content: "\ec0f"; } +.icojam_door:before { + content: "\e90b"; } -.icojam_folder_remove:before { - content: "\ec10"; } +.icojam_doublebed:before { + content: "\e90c"; } -.icojam_folder_search:before { - content: "\ec11"; } +.icojam_floor_lamp_1:before { + content: "\e90d"; } -.icojam_join_1:before { - content: "\ec12"; } +.icojam_floor_lamp_2:before { + content: "\e90e"; } -.icojam_join_2:before { - content: "\ec13"; } +.icojam_floor_lamp_3:before { + content: "\e90f"; } -.icojam_mail:before { - content: "\ec14"; } +.icojam_hanger:before { + content: "\e910"; } -.icojam_paste:before { - content: "\ec15"; } +.icojam_hanger_1:before { + content: "\e911"; } -.icojam_pen3:before { - content: "\ec16"; } +.icojam_heated_towel_rail:before { + content: "\e912"; } -.icojam_pencil3:before { - content: "\ec17"; } +.icojam_hook:before { + content: "\e913"; } -.icojam_pencil_write:before { - content: "\ec18"; } +.icojam_hooks:before { + content: "\e914"; } -.icojam_portfolio:before { - content: "\ec19"; } +.icojam_linen:before { + content: "\e915"; } -.icojam_profile_1:before { - content: "\ec1a"; } +.icojam_mirror:before { + content: "\e916"; } -.icojam_profile_2:before { - content: "\ec1b"; } +.icojam_pan:before { + content: "\e917"; } -.icojam_time:before { - content: "\ec1c"; } +.icojam_picture2:before { + content: "\e918"; } -.icojam_time_favorite:before { - content: "\ec1d"; } +.icojam_pier-glass:before { + content: "\e919"; } -/* Roboto */ -/* Roboto Import */ -/* Roboto Regular */ -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.svg#RobotoRegular") format("svg"); - font-weight: 400; - font-style: normal; } -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.svg#RobotoBold") format("svg"); - font-weight: 700; - font-style: normal; } -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.svg#RobotoThin") format("svg"); - font-weight: 100; - font-style: normal; } -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.svg#RobotoLight") format("svg"); - font-weight: 300; - font-style: normal; } -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.svg#RobotoMedium") format("svg"); - font-weight: 500; - font-style: normal; } -@font-face { - font-family: 'Roboto'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.svg#RobotoBold") format("svg"); - font-weight: 900; - font-style: normal; } -/* Roboto Condensed */ -@font-face { - font-family: 'Roboto Condensed'; - src: url("http://fenixapps.fao.org/repository/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.eot"); - src: url("http://fenixapps.fao.org/repository/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.svg#RobotoRegular") format("svg"); - font-weight: 400; - font-style: normal; } -@font-face { - font-family: 'Roboto Condensed'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.svg#RobotoRegular") format("svg"); - font-weight: 300; - font-style: normal; } -@font-face { - font-family: 'Roboto Condensed'; - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.eot"); - src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.svg#RobotoRegular") format("svg"); - font-weight: 700; - font-style: normal; } -/* Font Awesome */ -/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* It is a CDN - Read the readme file in sources directory */ -/* It is a CDN - Read the readme file in sources directory */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?v=4.2.0"); - src: url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg"); - font-weight: normal; - font-style: normal; } -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } +.icojam_rack:before { + content: "\e91a"; } -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333em; - line-height: 0.75em; - vertical-align: -15%; } +.icojam_racks:before { + content: "\e91b"; } -.fa-2x { - font-size: 2em; } +.icojam_radiator2:before { + content: "\e91c"; } -.fa-3x { - font-size: 3em; } +.icojam_reading-lamp:before { + content: "\e91d"; } -.fa-4x { - font-size: 4em; } +.icojam_shelf:before { + content: "\e91e"; } -.fa-5x { - font-size: 5em; } +.icojam_shelf_2:before { + content: "\e91f"; } -.fa-fw { - width: 1.28571em; - text-align: center; } +.icojam_shelfs:before { + content: "\e920"; } -.fa-ul { - padding-left: 0; - margin-left: 2.14286em; - list-style-type: none; } - .fa-ul > li { - position: relative; } +.icojam_shelfs_2:before { + content: "\e921"; } -.fa-li { - position: absolute; - left: -2.14286em; - width: 2.14286em; - top: 0.14286em; - text-align: center; } - .fa-li.fa-lg { - left: -1.85714em; } +.icojam_singlebed:before { + content: "\e922"; } -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eee; - border-radius: .1em; } +.icojam_sink_bathroom:before { + content: "\e923"; } -.pull-right { - float: right; } +.icojam_sink_kitchen:before { + content: "\e924"; } -.pull-left { - float: left; } +.icojam_sofa:before { + content: "\e925"; } -.fa.pull-left { - margin-right: .3em; } -.fa.pull-right { - margin-left: .3em; } +.icojam_sofa_1:before { + content: "\e926"; } -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; } +.icojam_sofa_2:before { + content: "\e927"; } -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); } } -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); } } -.fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); } +.icojam_stand:before { + content: "\e928"; } -.fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); } +.icojam_stand_2:before { + content: "\e929"; } -.fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); } +.icojam_stand_3:before { + content: "\e92a"; } -.fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); } +.icojam_stand_4:before { + content: "\e92b"; } -.fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); } +.icojam_table_1:before { + content: "\e92c"; } -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; } +.icojam_table_2:before { + content: "\e92d"; } -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; } +.icojam_table_3:before { + content: "\e92e"; } -.fa-stack-1x, .fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; } +.icojam_table_4:before { + content: "\e92f"; } -.fa-stack-1x { - line-height: inherit; } +.icojam_table_round:before { + content: "\e930"; } -.fa-stack-2x { - font-size: 2em; } +.icojam_table-lamp:before { + content: "\e931"; } -.fa-inverse { - color: #fff; } +.icojam_toilet_paper:before { + content: "\e932"; } -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-search:before { - content: ""; } +.icojam_towel:before { + content: "\e933"; } -.fa-th:before { - content: ""; } +.icojam_wardrobe:before { + content: "\e934"; } -.fa-th-list:before { - content: ""; } +.icojam_wardrobe_1:before { + content: "\e935"; } -.fa-home:before { - content: ""; } +.icojam_wardrobe_2:before { + content: "\e936"; } -.fa-clock-o:before { - content: ""; } +.icojam_window:before { + content: "\e937"; } -.fa-refresh:before { - content: ""; } +.icojam_bag_bagful:before { + content: "\e938"; } -.fa-lock:before { - content: ""; } +.icojam_balloon:before { + content: "\e939"; } -.fa-barcode:before { - content: ""; } +.icojam_balloons:before { + content: "\e93a"; } -.fa-map-marker:before { - content: ""; } +.icojam_bell:before { + content: "\e93b"; } -.fa-calendar:before { - content: ""; } +.icojam_bouquet_flowers:before { + content: "\e93c"; } -.fa-twitter-square:before { - content: ""; } +.icojam_bow_knot:before { + content: "\e93d"; } -.fa-facebook-square:before { - content: ""; } +.icojam_bracelet:before { + content: "\e93e"; } -.fa-globe:before { - content: ""; } +.icojam_candle:before { + content: "\e93f"; } -.fa-wrench:before { - content: ""; } +.icojam_christmas_newyear_tree:before { + content: "\e940"; } -.fa-google-plus-square:before { - content: ""; } +.icojam_christmas_tree_decoration:before { + content: "\e941"; } -.fa-google-plus:before { - content: ""; } +.icojam_christmas_tree_decoration_lashlight:before { + content: "\e942"; } -.fa-caret-down:before { - content: ""; } +.icojam_cookie_man:before { + content: "\e943"; } -.fa-caret-up:before { - content: ""; } +.icojam_crown_king_top:before { + content: "\e944"; } -.fa-caret-left:before { - content: ""; } +.icojam_diamond:before { + content: "\e945"; } -.fa-caret-right:before { - content: ""; } +.icojam_diamond_brilliant:before { + content: "\e946"; } -.fa-rss-square:before { - content: ""; } +.icojam_easter_egg:before { + content: "\e947"; } -.fa-slack:before { - content: ""; } +.icojam_fireworks:before { + content: "\e948"; } -.fa-database:before { - content: ""; } +.icojam_flag_victory:before { + content: "\e949"; } -/* Fenix Typography */ -body { - color: #666666; - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +.icojam_flag_victory_2:before { + content: "\e94a"; } -a { - color: #0f6eae; } - a:focus { - outline: none; } - a:active { - outline: none; } +.icojam_flower:before { + content: "\e94b"; } -.dropdown-menu > li > a { - font-weight: 300; - color: #666666; } +.icojam_flower_pot:before { + content: "\e94c"; } -h1 { - font: normal normal 300 18px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - color: #0f6eae; } +.icojam_flowers:before { + content: "\e94d"; } -h2 { - font: normal normal 300 14px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - color: #2b6892; } +.icojam_four-leaved_shamrock_lucky:before { + content: "\e94e"; } -h3 { - font: normal normal 500 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - color: #3e657f; } +.icojam_garland_lamp:before { + content: "\e94f"; } -h4 { - font: normal normal 300 11px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - color: #51616c; } +.icojam_grandfather_frost:before { + content: "\e950"; } -h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { - font-family: Roboto; - font-weight: 700; - color: #0f6eae; - text-transform: uppercase; - font-size: 12px; } +.icojam_happy_sunny:before { + content: "\e951"; } -.truncate { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } +.icojam_horseshoe:before { + content: "\e952"; } -/* Fenix - Reset */ -/* Components */ -/* Fenix - Components Index */ -/* Fenix - Buttons Component */ -/** avoid dotted lines when clicking on button**/ -input[type="button"] { - outline: none; } +.icojam_mitten:before { + content: "\e953"; } -button:focus { - outline: 0; - outline: none; } +.icojam_necklace:before { + content: "\e954"; } -button:active { - outline: 0; - outline: none; } +.icojam_package2:before { + content: "\e955"; } -.btn:focus, .btn:active, .btn:active:focus { - outline: none; } +.icojam_pearl:before { + content: "\e956"; } -input[type="button"]::-moz-focus-inner { - border: 0; } +.icojam_petard:before { + content: "\e957"; } -.btn { - background-color: #0f6eae; - color: white; - border-color: transparent; - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } - .btn:hover { - background-color: transparent; - color: #0f6eae; - border-color: #0f6eae; } - .btn:active { - background-color: transparent; - color: #0f6eae; - border-color: #0f6eae; - -webkit-box-shadow: 0 0 0 white; - -moz-box-shadow: 0 0 0 white; - box-shadow: 0 0 0 white; } +.icojam_poinsettia_christmas_star:before { + content: "\e958"; } -.fx-button-reset { - background-color: transparent; - color: #666666; - border-color: transparent; - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } - .fx-button-reset:hover { - background-color: transparent; - color: #666666; - border-color: transparent; } - .fx-button-reset:active { - background-color: transparent; - color: #666666; - border-color: transparent; - -webkit-box-shadow: 0 0 0 white; - -moz-box-shadow: 0 0 0 white; - box-shadow: 0 0 0 white; } - -.btn-primary.disabled -, .btn-primary[disabled] -, fieldset[disabled] .btn-primary -, .btn-primary.disabled:hover -, .btn-primary[disabled]:hover -, fieldset[disabled] .btn-primary:hover -, .btn-primary.disabled:focus -, .btn-primary[disabled]:focus -, fieldset[disabled] .btn-primary:focus -, .btn-primary.disabled:active -, .btn-primary[disabled]:active -, fieldset[disabled] .btn-primary:active -, .btn-primary.disabled.active -, .btn-primary[disabled].active -, fieldset[disabled] .btn-primary.active { - background-color: #3e657f; - border-color: #3e657f; } +.icojam_present:before { + content: "\e959"; } -/* Fenix UI Catalog */ -.fx-catalog-welcome { - text-align: center; - max-width: 300px; - position: absolute; - left: 50%; - top: 50%; - -ms-transform: translate(-50%, -50%); - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); } - .fx-catalog-welcome .catalog-ico { - height: 50px; - width: 50px; } - .fx-catalog-welcome h1 { - margin-top: 10px; } +.icojam_present_gift:before { + content: "\e95a"; } -/* Packery */ -.fx-catalog-form-module { - width: 50%; - border: 10px solid #f1f1f1; } +.icojam_ring:before { + content: "\e95b"; } -.fx-catalog-form-module.fit { - width: 100%; } +.icojam_ring_finger:before { + content: "\e95c"; } -.fx_result_description_title { - text-transform: uppercase; - display: inline; } +.icojam_saint_patrick_hat:before { + content: "\e95d"; } -.fx_result_description_source { - display: inline; - color: #999999; } +.icojam_salute_fireworks:before { + content: "\e95e"; } -.fx_result_description_source:before { - content: "-"; } +.icojam_salute_fireworks_2:before { + content: "\e95f"; } -.fx_result_description_baseperiod { - font-style: italic; - font-size: 10px; } +.icojam_salute_fireworks_3:before { + content: "\e960"; } -.fenix-result { - width: 100%; - background-color: white; - border: 1px solid #D2D0D0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - margin-bottom: 20px; - min-height: 100px; - padding: 19px 0 16px 19px; } +.icojam_salute_fireworks_4:before { + content: "\e961"; } -/*========= HEADER =========*/ -.fx-catalog-header { - text-align: center; - background-color: #f1f1f1; } - .fx-catalog-header em { - font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +.icojam_santa_claus:before { + content: "\e962"; } -.fx-catalog-header-btn { - cursor: pointer; } +.icojam_santa_claus_hat:before { + content: "\e963"; } -/*========= FILTER CONTAINER =========*/ -.fx-catalog-modular-filter-container { - background-color: #f1f1f1; - min-height: 250px; - overflow: hidden; } +.icojam_santa_claus_head:before { + content: "\e964"; } -/*========= MODULAR MENU =========*/ -.fx-catalog-modular-menu-container { - background-color: #f1f1f1; - padding: 0; - min-height: 250px; } +.icojam_shopping:before { + content: "\e965"; } -.fx-catalog-modular-menu-category-plus { - position: absolute; - top: 0; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -90px 0; - background-size: 150px 30px; } +.icojam_sledge:before { + content: "\e966"; } -.fx-catalog-mod-timerseries { - top: 25px; } +.icojam_snowman:before { + content: "\e967"; } -.region-css { - height: 100%; - position: relative; } +.icojam_sock_boots:before { + content: "\e968"; } -.jstree-holder { - height: 209px; - overflow-y: auto; } +.icojam_teddy_bear:before { + content: "\e969"; } -/*========= RESULTS */ -/*========= COMMONS =========*/ -.fx_horegon { - display: inline; } +.icojam_treasures_money_gold_boiler:before { + content: "\e96a"; } -.fx_result_icon_img { - width: 42px; } +.icojam_turkey_chicken:before { + content: "\e96b"; } -#fx-catalog-results { - margin-top: 20px; } +.icojam_wedding_jewel:before { + content: "\e96c"; } -.fx-analysis-page-title { - font-weight: 100; - color: #666666; } +.icojam_add-on:before { + content: "\e96d"; } -.fx-analysis-page-description { - color: #666666; } +.icojam_advertise_1:before { + content: "\e96e"; } -.well { - background-color: transparent; - border: none; - -webkit-box-shadow: 0 0 0 white; - -moz-box-shadow: 0 0 0 white; - box-shadow: 0 0 0 white; } +.icojam_advertise_2:before { + content: "\e96f"; } -.fx-catalog-toolbar { - color: #666666; } - .fx-catalog-toolbar .fx-widget-stack-btns { - text-align: right; } - .fx-catalog-toolbar .fx-widget-stack-btns em { - font-style: normal; - background-color: #666666; - width: 30px; - height: 20px; - display: inline-block; - color: white; - text-align: center; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -ms-border-radius: 3px; - border-radius: 3px; } - .fx-catalog-toolbar .fx-widget-stack-btns input { - margin-left: 33px; } +.icojam_archive:before { + content: "\e970"; } -/* Fenix - Circle Number Component */ -.fx-circle-number { - color: white; - display: inline-block; - font: normal normal 500 14px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - height: 20px; - width: 20px; - line-height: 20px; - text-align: center; - background-color: #0f6eae; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -ms-border-radius: 100%; - border-radius: 100%; - -ms-transform: translate(0, -50%); - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); } +.icojam_box:before { + content: "\e971"; } -/* Fenix Datepicker - Components */ -.datepicker { - font-size: 12px; } - .datepicker .datepicker-days .day { - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; } - .datepicker .datepicker-days .day.active { - background-color: #0f6eae; } - .datepicker .datepicker-days .day.today:before { - border-bottom-color: #0f6eae; } - .datepicker .datepicker-days .day.active.today:before { - border-bottom-color: white; } +.icojam_box_opened:before { + content: "\e972"; } -/* Fenix - Fieldset Component */ -fieldset { - border: 0; } - fieldset .fx-fieldset-subtitle label { - font-size: 12px; } +.icojam_browser:before { + content: "\e973"; } -.inside-full-height { - /* - // if you want to give content full height give him height: 100%; - // with content full height you can't apply margins to the content - // content full height does not work in ie http://stackoverflow.com/questions/27384433/ie-display-table-cell-child-ignores-height-100 - */ - height: 100%; - margin-top: 0; - margin-bottom: 0; } +.icojam_comment_12:before { + content: "\e974"; } -.content { - padding: 12px 3px; } +.icojam_comment_22:before { + content: "\e975"; } -/* columns of same height styles */ -.row-height { - display: table; - table-layout: fixed; - height: 100%; - width: 100%; } +.icojam_comments:before { + content: "\e976"; } -.col-height { - display: table-cell; - float: none; - height: 100%; } +.icojam_compare_balance:before { + content: "\e977"; } -.col-top { - vertical-align: top; } +.icojam_compare_disbalance:before { + content: "\e978"; } -.col-middle { - vertical-align: middle; } +.icojam_download_1:before { + content: "\e979"; } -.col-bottom { - vertical-align: bottom; } +.icojam_download_2:before { + content: "\e97a"; } -@media (min-width: 480px) { - .row-xs-height { - display: table; - table-layout: fixed; - height: 100%; - width: 100%; } +.icojam_download_3:before { + content: "\e97b"; } - .col-xs-height { - display: table-cell; - float: none; - height: 100%; } +.icojam_download_4:before { + content: "\e97c"; } - .col-xs-top { - vertical-align: top; } +.icojam_download_5:before { + content: "\e97d"; } - .col-xs-middle { - vertical-align: middle; } +.icojam_firewall:before { + content: "\e97e"; } - .col-xs-bottom { - vertical-align: bottom; } } -@media (min-width: 768px) { - .row-sm-height { - display: table; - table-layout: fixed; - height: 100%; - width: 100%; } +.icojam_grid_01:before { + content: "\e97f"; } - .col-sm-height { - display: table-cell; - float: none; - height: 100%; } +.icojam_grid_02:before { + content: "\e980"; } - .col-sm-top { - vertical-align: top; } +.icojam_grid_03:before { + content: "\e981"; } - .col-sm-middle { - vertical-align: middle; } +.icojam_grid_04:before { + content: "\e982"; } - .col-sm-bottom { - vertical-align: bottom; } } -@media (min-width: 992px) { - .row-md-height { - display: table; - table-layout: fixed; - height: 100%; - width: 100%; } +.icojam_grid_05:before { + content: "\e983"; } - .col-md-height { - display: table-cell; - float: none; - height: 100%; } +.icojam_grid_06:before { + content: "\e984"; } - .col-md-top { - vertical-align: top; } +.icojam_grid_07:before { + content: "\e985"; } - .col-md-middle { - vertical-align: middle; } +.icojam_grid_08:before { + content: "\e986"; } - .col-md-bottom { - vertical-align: bottom; } } -@media (min-width: 1200px) { - .row-lg-height { - display: table; - table-layout: fixed; - height: 100%; - width: 100%; } +.icojam_grid_09:before { + content: "\e987"; } - .col-lg-height { - display: table-cell; - float: none; - height: 100%; } +.icojam_grid_10:before { + content: "\e988"; } - .col-lg-top { - vertical-align: top; } +.icojam_grid_11:before { + content: "\e989"; } - .col-lg-middle { - vertical-align: middle; } +.icojam_grid_12:before { + content: "\e98a"; } - .col-lg-bottom { - vertical-align: bottom; } } -/* Fenix - Inputs Component */ -/* remove x icon in IE 10+ */ -input[type=text]::-ms-clear { - display: none; } +.icojam_grid_13:before { + content: "\e98b"; } -/* Input Placeholder*/ -.form-control::-webkit-input-placeholder { - /* WebKit browsers */ - opacity: .5; } +.icojam_grid_14:before { + content: "\e98c"; } -.form-control:-moz-placeholder { - /* Mozilla Firefox 4 to 18 */ - opacity: .5; } +.icojam_grid_15:before { + content: "\e98d"; } -.form-control::-moz-placeholder { - /* Mozilla Firefox 19+ */ - opacity: .5; } +.icojam_grid_16:before { + content: "\e98e"; } -.form-control:-ms-input-placeholder { - /* Internet Explorer 10+ */ - opacity: .5; } +.icojam_grid_17:before { + content: "\e98f"; } -/* Fenix - Labels Component */ -label { - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +.icojam_grid_18:before { + content: "\e990"; } -/* Fenix - Legend Component */ -legend { - color: #666666; - cursor: pointer; - border: 0; - font-size: 12px; } - legend label { - font-size: 12px; - cursor: pointer; } +.icojam_grid_19:before { + content: "\e991"; } -/* Fenix - Modular Form Component */ -.fx-catalog-modular-form-holder { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background-color: white; - border-color: #D2D0D0; - border-image: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border-style: solid; - border-width: 1px 1px 2px; - margin: 10px 0 20px; - padding: 20px; - width: auto; - padding: 5px; - margin: 0; } +.icojam_grid_20:before { + content: "\e992"; } -.fx-catalog-modular-form-wrapper { - padding-right: 0; - /*overflow: hidden;*/ - min-height: 250px; - position: relative; - background-color: #f1f1f1; } +.icojam_grid_21:before { + content: "\e993"; } -.fx-catalog-modular-form-header { - position: relative; - height: 30px; } +.icojam_grid_22:before { + content: "\e994"; } -.fx-catalog-modular-form-handler { - position: absolute; - left: 7px; - top: 7px; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -15px 0; - background-size: 150px 30px; - cursor: pointer; } +.icojam_grid_23:before { + content: "\e995"; } -.fx-catalog-modular-form-close-btn { - position: absolute; - top: 7px; - right: 7px; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -45px 0; - background-size: 150px 30px; - cursor: pointer; } +.icojam_grid_24:before { + content: "\e996"; } -.fx-catalog-modular-form-resize-btn { - position: absolute; - top: 7px; - right: 28px; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -30px 0; - background-size: 150px 30px; - cursor: pointer; } +.icojam_grid_25:before { + content: "\e997"; } -.fx-catalog-modular-form-label { - position: absolute; - top: 4px; - left: 30px; - font-weight: 300; - color: #3e657f; } +.icojam_grid_26:before { + content: "\e998"; } -.fx-catalog-modular-form-content { - padding: 10px 10px 10px 10px; - height: 100px; } +.icojam_grid_27:before { + content: "\e999"; } -div[data-module] .fx-catalog-modular-form-content { - height: 173px; } +.icojam_grid_28:before { + content: "\e99a"; } -div[data-module="region"] .fx-catalog-modular-form-content { - height: 263px; } +.icojam_grid_29:before { + content: "\e99b"; } -div[data-module="referencePeriod"] .fx-catalog-modular-form-content { - height: 263px; } +.icojam_grid_30:before { + content: "\e99c"; } -div[data-module="sector"] .fx-catalog-modular-form-content { - height: 263px; } +.icojam_grid_31:before { + content: "\e99d"; } -/* Fenix - Navigation Component */ -.navbar { - border: 0; - border-width: 0; } +.icojam_grid_32:before { + content: "\e99e"; } -.nav .open > a, .nav .open > a:hover, .nav .open > a:focus { - border-color: #0f6eae; } +.icojam_grid_33:before { + content: "\e99f"; } -.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { - background-color: transparent; - color: #666666; } +.icojam_grid_34:before { + content: "\e9a0"; } -.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { - color: #0f6eae; } +.icojam_grid_35:before { + content: "\e9a1"; } -/* Fenix - Object Box Component */ -.obj-box, .obj-box-radius10, .obj-box-title { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background-color: white; - border-color: #D2D0D0; - border-image: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border-style: solid; - border-width: 1px 1px 2px; - margin: 10px 0 20px; - padding: 20px; - width: auto; } +.icojam_grid_36:before { + content: "\e9a2"; } -.obj-box-radius10 { - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - -ms-border-radius: 10px; - border-radius: 10px; } +.icojam_grid_37:before { + content: "\e9a3"; } -.obj-box-title { - padding-top: 5px; } - .obj-box-title h4 { - color: #0f6eae; - font: normal normal 300 11px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +.icojam_grid_38:before { + content: "\e9a4"; } -/* Fenix - Panel Component */ -.panel-group { - margin-bottom: 0px; } - .panel-group .panel { - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - background-color: transparent; - border: none; - border-bottom: 1px solid #D2D0D0; } - .panel-group .panel-default { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; } - .panel-group .panel-default:last-child { - border-bottom-width: 0px; } - .panel-group .panel-heading { - background-color: transparent; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - padding: 10px; } - .panel-group .panel-heading .panel-title { - font: normal normal 300 16px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } - .panel-group .panel-heading .panel-title a { - color: #666666; - text-transform: uppercase; } - .panel-group .panel-heading .panel-title a:hover { - text-decoration: none; } - .panel-group .panel-heading .panel-title a:active { - text-decoration: none; } - .panel-group .panel-heading .panel-title a:focus { - text-decoration: none; } - .panel-group .panel-heading.fx-active-panel .panel-title a { - color: #0f6eae; } - .panel-group .panel-body .btn { - background-color: transparent; - color: #666666; - border-color: transparent; - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - text-align: left; - position: relative; } - .panel-group .panel-body .btn:hover { - background-color: transparent; - color: #666666; - border-color: transparent; } - .panel-group .panel-body .btn:active { - background-color: transparent; - color: #666666; - border-color: transparent; - -webkit-box-shadow: 0 0 0 white; - -moz-box-shadow: 0 0 0 white; - box-shadow: 0 0 0 white; } - .panel-group .panel-body .btn span.fa { - margin-right: 10px; } +.icojam_grid_columns:before { + content: "\e9a5"; } -.fx-panel-plus, .fx-panel-minus, .fx-panel-required { - display: inline-block; - margin-right: 25px; } +.icojam_grid_layout:before { + content: "\e9a6"; } -.fx-panel-plus { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -90px 0; - background-size: 150px 30px; } +.icojam_grid_rows:before { + content: "\e9a7"; } -.fx-panel-minus { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -90px -15px; - background-size: 150px 30px; } +.icojam_grid_thumbnails:before { + content: "\e9a8"; } -.fx-panel-info { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat 0 0; - background-size: 150px 30px; - float: right; } +.icojam_headphones:before { + content: "\e9a9"; } -.fx-panel-required { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -15px -15px; - background-size: 150px 30px; } +.icojam_html_code:before { + content: "\e9aa"; } -.fx-panel-ok { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -45px -15px; - background-size: 150px 30px; } +.icojam_index_1:before { + content: "\e9ab"; } -.fx-panel-remove { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -60px -15px; - background-size: 150px 30px; } +.icojam_index_2:before { + content: "\e9ac"; } -.fx-panel-refresh { - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -75px -15px; - background-size: 150px 30px; } +.icojam_knob:before { + content: "\e9ad"; } -/* Fenix Popover Component */ -.popover { - width: 200px; } +.icojam_play:before { + content: "\e9ae"; } -/* Radio Buttons */ -input[type="radio"] { - display: none; } +.icojam_player_1:before { + content: "\e9af"; } -input[type="radio"] + label { - cursor: pointer; - margin: 0 7px; - font-size: 10px; - text-transform: uppercase; - font-weight: 500; } - input[type="radio"] + label:before { - content: ''; - display: inline-block; - height: 15px; - width: 15px; - background-color: #dddddd; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -ms-border-radius: 100%; - border-radius: 100%; - border: 0 solid #0f6eae; - position: relative; - top: 4px; - left: -4px; } - -input[type="radio"]:checked + label { - color: #0f6eae; } - input[type="radio"]:checked + label:before { - border-width: 5px; } +.icojam_player_2:before { + content: "\e9b0"; } -input[type="radio"] + label, -input[type="radio"]:checked + label { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } - input[type="radio"] + label:before, - input[type="radio"]:checked + label:before { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } +.icojam_preview_cover_flow:before { + content: "\e9b2"; } -/* Checkbox Buttons */ -input[type="checkbox"] { - display: none; } +.icojam_preview_fullscreen:before { + content: "\e9b3"; } -input[type="checkbox"] + label { - cursor: pointer; - margin: 0 7px; - font-size: 10px; - text-transform: uppercase; - font-weight: 500; } - input[type="checkbox"] + label:before { - content: ''; - display: inline-block; - height: 15px; - width: 15px; - background-color: #dddddd; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -ms-border-radius: 100%; - border-radius: 100%; - border: 0 solid #0f6eae; - position: relative; - top: 4px; - left: -4px; } +.icojam_preview_list:before { + content: "\e9b4"; } -input[type="checkbox"]:checked + label { - color: #0f6eae; } - input[type="checkbox"]:checked + label:before { - border-width: 5px; } +.icojam_preview_matrix:before { + content: "\e9b5"; } -input[type="checkbox"] + label, -input[type="checkbox"]:checked + label { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } - input[type="checkbox"] + label:before, - input[type="checkbox"]:checked + label:before { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } +.icojam_preview_presentation:before { + content: "\e9b6"; } -/* Fenix Range Slider */ -.ui-rangeSlider-innerBar { - height: 3px !important; - top: 7px !important; - background-color: #D2D0D0 !important; } +.icojam_preview_table:before { + content: "\e9b7"; } -.ui-rangeSlider-arrow.ui-rangeSlider-leftArrow { - background: url(img/arrow-left-on.svg) no-repeat !important; - width: 48px; - height: 48px; - background-position: -16px -15px !important; } +.icojam_preview_thumbnails:before { + content: "\e9b8"; } -.ui-rangeSlider-arrow.ui-rangeSlider-rightArrow { - background: url(img/arrow-right-on.svg) no-repeat !important; - width: 48px; - height: 48px; - background-position: 16px -15px !important; } +.icojam_quotes_1:before { + content: "\e9b9"; } -.ui-rangeSlider-label.ui-rangeSlider-rightLabel { - background-image: url("img/label.png") !important; - margin-bottom: 5px !important; } +.icojam_quotes_2:before { + content: "\e9ba"; } -.ui-rangeSlider-label.ui-rangeSlider-leftLabel { - background-image: url("img/label.png") !important; - margin-bottom: 5px !important; } +.icojam_send:before { + content: "\e9bb"; } -.ui-rangeSlider-label-value { - font-size: 12px; - font-weight: 500; } +.icojam_share:before { + content: "\e9bc"; } -.ui-rangeSlider-leftHandle, .ui-rangeSlider-rightHandle { - width: 20px !important; - height: 20px !important; - background-color: #0f6eae !important; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -ms-border-radius: 100%; - border-radius: 100%; } +.icojam_site_alert:before { + content: "\e9bd"; } -.ui-rangeSlider-bar { - background-color: #0f6eae !important; - margin-top: 8px !important; - height: 5px !important; } +.icojam_site_attention:before { + content: "\e9be"; } -/* Fenix - Resume Bar Component */ -.fx-resume-bar { - padding-right: 150px; - background-color: #f1f1f1; - position: relative; } +.icojam_site_back:before { + content: "\e9bf"; } -#fx-resume { - background-color: white; - padding-top: 20px; - min-height: 60px; } +.icojam_site_close:before { + content: "\e9c0"; } -.fx-resume-title { - color: #0f6eae; - padding-left: 15px; - padding-top: 5px; - font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - position: absolute; - top: 0; } +.icojam_site_close_tab:before { + content: "\e9c1"; } -.fx-resume-noitem { - padding-left: 15px; - position: absolute; - top: 15px; } +.icojam_site_favorite:before { + content: "\e9c2"; } -#fx-catalog-submit-btn { - color: white; - text-transform: uppercase; - background-color: #0f6eae; - width: 150px; - position: absolute; - bottom: 0; - right: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; } - #fx-catalog-submit-btn.disabled { - background-color: #f1f1f1; - opacity: 1; - border-color: #666666; - color: #666666; } +.icojam_site_foward:before { + content: "\e9c3"; } -.fx-resume-item-selected { - position: relative; - border-top: 5px solid white; - border-bottom: 5px solid white; } - .fx-resume-item-selected .fx-resume-module-title { - display: inline-block; - width: 20%; - padding-left: 15px; } - .fx-resume-item-selected .fx-resume-module-title em { - font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - color: #0f6eae; - font-size: 12px; - /* Not expected */ - position: absolute; - top: 0; } - .fx-resume-item-selected .fx-resume-module-list-holder { - display: inline-block; - max-width: 80%; - padding-right: 15px; } - .fx-resume-item-selected .fx-resume-module-list-holder .fx-resume-module-list { - display: inline-block; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border: 1px solid #D2D0D0; } +.icojam_site_new:before { + content: "\e9c4"; } -.fx-resume-obj-close { - display: inline-block; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -45px 0; - background-size: 150px 30px; - cursor: pointer; - position: relative; - top: 3px; } +.icojam_site_options:before { + content: "\e9c5"; } -.fx-resume-list-obj { - display: inline-block; } - .fx-resume-list-obj .fx-resume-obj-value { - display: inline; - margin-right: 7px; } +.icojam_site_ping:before { + content: "\e9c6"; } -/* Fenix Section Switcher */ -.fx-section-switcher { - list-style: none; - padding-left: 0; - margin-bottom: 0; } - .fx-section-switcher > li { - margin-bottom: 10px; - display: inline-block; } - .fx-section-switcher > li > a { - padding: 0 10px; - color: #666666; - font-weight: 500; - font-size: 12px; - text-transform: uppercase; - position: relative; } - .fx-section-switcher > li > a:first-child { - padding-left: 0; } - .fx-section-switcher > li > a:hover, .fx-section-switcher > li > a:active, .fx-section-switcher > li > a:focus { - text-decoration: none; } - .fx-section-switcher > li.active > a:before { - content: ''; - position: absolute; - width: calc(100% - 20px); - height: 2px; - background-color: #0f6eae; - left: 10px; - bottom: -2px; - pointer-events: none; } - .fx-section-switcher > li.active > a:first-child:before { - left: 0; - width: calc(100% - 10px); } +.icojam_site_refresh:before { + content: "\e9c7"; } -/* Fenix - Sidebar Component */ -.bs-docs-sidebar.affix { - position: static; } +.icojam_site_search:before { + content: "\e9c8"; } -.bs-docs-sidenav { - margin-bottom: 20px; - margin-top: 20px; } +.icojam_tablet:before { + content: "\e9c9"; } -.bs-docs-sidebar .nav > li > a { - color: #666666; - display: block; - padding: 4px 20px; - cursor: pointer; - border-left: 1px solid transparent; } +.icojam_text_center:before { + content: "\e9ca"; } -.bs-docs-sidebar .nav > li > a:hover, .bs-docs-sidebar .nav > li > a:focus { - background-color: transparent; - border-left: 1px solid #0f6eae; - color: #0f6eae; - text-decoration: none; } +.icojam_text_justify_all:before { + content: "\e9cb"; } -.bs-docs-sidebar .nav > .active > a, .bs-docs-sidebar .nav > .active:hover > a, .bs-docs-sidebar .nav > .active:focus > a { - background-color: transparent; - border-left: 1px solid #0f6eae; - color: #0f6eae; - font-weight: 700; } +.icojam_text_justify_centered:before { + content: "\e9cc"; } -.bs-docs-sidebar .nav .nav { - display: none; - padding-bottom: 10px; } +.icojam_text_justify_left:before { + content: "\e9cd"; } -.bs-docs-sidebar .nav .nav > li > a { - padding-bottom: 1px; - padding-left: 30px; - padding-top: 1px; } +.icojam_text_justify_right:before { + content: "\e9ce"; } -@media (min-width: 768px) { - .bs-docs-sidebar { - padding-left: 20px; } } -@media (min-width: 992px) { - .bs-docs-sidebar .nav > .active > ul { - display: block; } +.icojam_text_left_align:before { + content: "\e9cf"; } - .bs-docs-sidebar.affix, .bs-docs-sidebar.affix-bottom { - width: 213px; } +.icojam_text_right_align:before { + content: "\e9d0"; } - .bs-docs-sidebar.affix { - position: fixed; - top: 80px; } +.icojam_top_1:before { + content: "\e9d1"; } - .bs-docs-sidebar.affix-bottom { - position: absolute; } +.icojam_top_2:before { + content: "\e9d2"; } - .bs-docs-sidebar.affix-bottom .bs-docs-sidenav, .bs-docs-sidebar.affix .bs-docs-sidenav { - margin-bottom: 0; - margin-top: 0; } } -@media (min-width: 1200px) { - .bs-docs-sidebar.affix-bottom, .bs-docs-sidebar.affix { - width: 263px; } } -/*! - * Start Bootstrap - Simple Sidebar HTML Template (http://startbootstrap.com) - * Code licensed under the Apache License v2.0. - * For details, see http://www.apache.org/licenses/LICENSE-2.0. - */ -/* Toggle Styles */ -#wrapper { - padding-left: 0; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; } +.icojam_view_expand_1:before { + content: "\e9d3"; } -#wrapper.toggled { - padding-left: 250px; } +.icojam_view_expand_2:before { + content: "\e9d4"; } -#sidebar-wrapper { - z-index: 1000; - position: fixed; - left: 250px; - width: 0; - height: 100%; - margin-left: -250px; - overflow-y: auto; - background: #000; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; } +.icojam_view_full_screen:before { + content: "\e9d5"; } -#wrapper.toggled #sidebar-wrapper { - width: 250px; } +.icojam_view_maximize:before { + content: "\e9d6"; } -#page-content-wrapper { - width: 100%; - position: absolute; - padding: 15px; - overflow-x: hidden; } +.icojam_view_minimize:before { + content: "\e9d7"; } -#wrapper.toggled #page-content-wrapper { - position: absolute; - margin-right: -250px; } +.icojam_view_roll-up_1:before { + content: "\e9d8"; } -/* Sidebar Styles */ -.sidebar-nav { - position: absolute; - top: 0; - width: 250px; - margin: 0; - padding: 0; - list-style: none; } +.icojam_view_roll-up_2:before { + content: "\e9d9"; } -.sidebar-nav li { - text-indent: 20px; - line-height: 40px; } +.icojam_view_scale_1:before { + content: "\e9da"; } -.sidebar-nav li a { - display: block; - text-decoration: none; - color: #999999; } +.icojam_view_scale_2:before { + content: "\e9db"; } -.sidebar-nav li a:hover { - text-decoration: none; - color: #fff; - background: rgba(255, 255, 255, 0.2); } +.icojam_window2:before { + content: "\e9dc"; } -.sidebar-nav li a:active, -.sidebar-nav li a:focus { - text-decoration: none; } +.icojam_window_attention:before { + content: "\e9dd"; } -.sidebar-nav > .sidebar-brand { - height: 65px; - font-size: 18px; - line-height: 60px; } +.icojam_window_close_1:before { + content: "\e9de"; } -.sidebar-nav > .sidebar-brand a { - color: #999999; } +.icojam_window_close_2:before { + content: "\e9df"; } -.sidebar-nav > .sidebar-brand a:hover { - color: #fff; - background: none; } +.icojam_window_favorite:before { + content: "\e9e0"; } -@media (min-width: 768px) { - #wrapper { - padding-left: 250px; } +.icojam_window_new:before { + content: "\e9e1"; } - #wrapper.toggled { - padding-left: 0; } +.icojam_window_next:before { + content: "\e9e2"; } - #sidebar-wrapper { - width: 250px; } +.icojam_window_open:before { + content: "\e9e3"; } - #wrapper.toggled #sidebar-wrapper { - width: 0; } +.icojam_window_options:before { + content: "\e9e4"; } - #page-content-wrapper { - padding: 20px; - position: relative; } +.icojam_window_previous:before { + content: "\e9e5"; } - #wrapper.toggled #page-content-wrapper { - position: relative; - margin-right: 0; } } -/* Tabs component */ -.fx-tabs .nav-tabs { - -ms-transform: translateX(-10px); - -webkit-transform: translateX(-10px); - transform: translateX(-10px); } - .fx-tabs .nav-tabs > li { - margin-bottom: 10px; } - .fx-tabs .nav-tabs > li > a { - padding: 0 10px; - color: #666666; - font-weight: 500; - font-size: 12px; - text-transform: uppercase; } - .fx-tabs .nav-tabs > li > a:before { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; - content: ''; - position: absolute; - width: 100%; - height: 2px; - background-color: #0f6eae; - left: 0; - bottom: -2px; - pointer-events: none; - -ms-transform: scaleX(0); - -webkit-transform: scaleX(0); - transform: scaleX(0); } - .fx-tabs .nav-tabs > li.active > a { - color: #0f6eae; } - .fx-tabs .nav-tabs > li.active > a:before { - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; - -ms-transform: scaleX(0.8); - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); } -.fx-tabs .tab-content { - padding-top: 10px; } - .fx-tabs .tab-content > div { - padding: 0; } -.fx-tabs li { - margin: 12px 0; } +.icojam_window_refresh:before { + content: "\e9e6"; } -/* Fenix - Top Menu Component */ -.navbar ul { - list-style: outside none none; - padding-left: 0; } +.icojam_window_search:before { + content: "\e9e7"; } -.navbar .container { - position: relative; } +.icojam_window_stop:before { + content: "\e9e8"; } -.nav-pills li a { - color: #666666; } +.icojam_bird_1:before { + content: "\e9e9"; } -.navbar-brand { - background-position: 0 3px; - background-repeat: no-repeat; - background-size: 100% 100%; - display: block; } +.icojam_bird_2:before { + content: "\e9ea"; } -.navbar .lang_picker { - text-transform: uppercase; } +.icojam_blink:before { + content: "\e9eb"; } -.navbar .lang_picker li { - cursor: pointer; } +.icojam_blood:before { + content: "\e9ec"; } -.navbar .lang_picker li a, .navbar .lang_picker li a:hover { - text-align: center; - text-decoration: none; } +.icojam_brain:before { + content: "\e9ed"; } -.navbar .lang_picker li:last-child { - border-right: medium none; } +.icojam_cardiogram_1:before { + content: "\e9ee"; } -/* Fenix Upload Component */ -.fx-uploader-container .fx-uploader-header { - padding: 10px 0; - border-bottom: 1px solid #D2D0D0; } -.fx-uploader-container #fx-uploader-input { - display: none; } -.fx-uploader-container .fx-widget-icons { - cursor: pointer; } +.icojam_cardiogram_2:before { + content: "\e9ef"; } -.fx-uploader-item { - margin-top: 15px; - position: relative; } - .fx-uploader-item .uploader-item-header { - background-color: #f1f1f1; - padding: 15px; } - .fx-uploader-item .item-title { - display: inline-block; - font-weight: 300; - font-size: 16px; - margin-top: 0; } - .fx-uploader-item .file-type { - position: relative; - top: -2px; - left: 5px; - text-transform: uppercase; - font-weight: 300; } - .fx-uploader-item .file-description { - color: #999999; } +.icojam_chicken2:before { + content: "\e9f0"; } + +.icojam_DNA_1:before { + content: "\e9f1"; } + +.icojam_DNA_2:before { + content: "\e9f2"; } + +.icojam_DNA_3:before { + content: "\e9f3"; } + +.icojam_doctor:before { + content: "\e9f4"; } + +.icojam_dog:before { + content: "\e9f5"; } + +.icojam_drugs:before { + content: "\e9f6"; } + +.icojam_ear:before { + content: "\e9f7"; } + +.icojam_eye_1:before { + content: "\e9f8"; } + +.icojam_eye_2:before { + content: "\e9f9"; } + +.icojam_eye_3:before { + content: "\e9fa"; } + +.icojam_eye_4:before { + content: "\e9fb"; } + +.icojam_eye_5:before { + content: "\e9fc"; } + +.icojam_eye_6:before { + content: "\e9fd"; } + +.icojam_eye_7:before { + content: "\e9fe"; } + +.icojam_eyelash:before { + content: "\e9ff"; } + +.icojam_fish2:before { + content: "\ea00"; } + +.icojam_fist:before { + content: "\ea01"; } + +.icojam_heart:before { + content: "\ea02"; } + +.icojam_hostpital:before { + content: "\ea03"; } + +.icojam_injection:before { + content: "\ea04"; } + +.icojam_kidney:before { + content: "\ea05"; } + +.icojam_lips:before { + content: "\ea06"; } + +.icojam_liver:before { + content: "\ea07"; } + +.icojam_LSD:before { + content: "\ea08"; } + +.icojam_lungs:before { + content: "\ea09"; } + +.icojam_medicine_chest:before { + content: "\ea0a"; } + +.icojam_microscope_1:before { + content: "\ea0b"; } + +.icojam_microscope_2:before { + content: "\ea0c"; } + +.icojam_monkey:before { + content: "\ea0d"; } + +.icojam_nose_1:before { + content: "\ea0e"; } + +.icojam_nose_2:before { + content: "\ea0f"; } + +.icojam_nurse:before { + content: "\ea10"; } + +.icojam_patch_1:before { + content: "\ea11"; } + +.icojam_patch_2:before { + content: "\ea12"; } + +.icojam_pill_1:before { + content: "\ea13"; } + +.icojam_pill_2:before { + content: "\ea14"; } + +.icojam_pill_3:before { + content: "\ea15"; } + +.icojam_pill_4:before { + content: "\ea16"; } + +.icojam_pill_5:before { + content: "\ea17"; } + +.icojam_pill_6:before { + content: "\ea18"; } + +.icojam_pill_7:before { + content: "\ea19"; } + +.icojam_pill_8:before { + content: "\ea1a"; } + +.icojam_pill_drugs:before { + content: "\ea1b"; } + +.icojam_red_cross:before { + content: "\ea1c"; } + +.icojam_skull:before { + content: "\ea1d"; } + +.icojam_skull_and_bones:before { + content: "\ea1e"; } + +.icojam_sleep_1:before { + content: "\ea1f"; } + +.icojam_sleep_2:before { + content: "\ea20"; } + +.icojam_sleep_3:before { + content: "\ea21"; } + +.icojam_smoke:before { + content: "\ea22"; } + +.icojam_snake:before { + content: "\ea23"; } + +.icojam_stomach:before { + content: "\ea24"; } + +.icojam_syringe:before { + content: "\ea25"; } + +.icojam_test-tube_1:before { + content: "\ea26"; } + +.icojam_test-tube_2:before { + content: "\ea27"; } + +.icojam_test-tube_3:before { + content: "\ea28"; } + +.icojam_test-tube_4:before { + content: "\ea29"; } + +.icojam_test-tube_5:before { + content: "\ea2a"; } + +.icojam_thermometer:before { + content: "\ea2b"; } + +.icojam_tooth:before { + content: "\ea2c"; } + +.icojam_anchor:before { + content: "\ea2d"; } + +.icojam_axis_3d:before { + content: "\ea2e"; } + +.icojam_book:before { + content: "\ea2f"; } + +.icojam_categories:before { + content: "\ea30"; } + +.icojam_cloud:before { + content: "\ea31"; } + +.icojam_cloud_connect:before { + content: "\ea32"; } + +.icojam_cloud_delete:before { + content: "\ea33"; } + +.icojam_cloud_download:before { + content: "\ea34"; } + +.icojam_cloud_new:before { + content: "\ea35"; } + +.icojam_cloud_ok:before { + content: "\ea36"; } + +.icojam_cloud_upload:before { + content: "\ea37"; } + +.icojam_compas_1:before { + content: "\ea38"; } + +.icojam_compas_2:before { + content: "\ea39"; } + +.icojam_cup_12:before { + content: "\ea3a"; } + +.icojam_cup_22:before { + content: "\ea3b"; } + +.icojam_eye_12:before { + content: "\ea3d"; } + +.icojam_eye_22:before { + content: "\ea3e"; } + +.icojam_feather:before { + content: "\ea3f"; } + +.icojam_flash:before { + content: "\ea40"; } + +.icojam_food_1:before { + content: "\ea41"; } + +.icojam_food_2:before { + content: "\ea42"; } + +.icojam_food_3:before { + content: "\ea43"; } + +.icojam_geo:before { + content: "\ea44"; } + +.icojam_goal:before { + content: "\ea45"; } + +.icojam_goal_1:before { + content: "\ea46"; } + +.icojam_inbox_1:before { + content: "\ea47"; } + +.icojam_inbox_mail:before { + content: "\ea48"; } + +.icojam_inbox_receive:before { + content: "\ea49"; } + +.icojam_inbox_send:before { + content: "\ea4a"; } + +.icojam_inbox_sent:before { + content: "\ea4b"; } + +.icojam_info_1:before { + content: "\ea4c"; } + +.icojam_info_2:before { + content: "\ea4d"; } + +.icojam_info_3:before { + content: "\ea4e"; } + +.icojam_languages:before { + content: "\ea4f"; } + +.icojam_link_2:before { + content: "\ea51"; } + +.icojam_link_3:before { + content: "\ea52"; } + +.icojam_link_close_1:before { + content: "\ea53"; } + +.icojam_link_close_2:before { + content: "\ea54"; } + +.icojam_link_delete_1:before { + content: "\ea55"; } + +.icojam_link_delete_2:before { + content: "\ea56"; } + +.icojam_link_new_1:before { + content: "\ea57"; } + +.icojam_link_new_2:before { + content: "\ea58"; } + +.icojam_location_1:before { + content: "\ea59"; } + +.icojam_location_2:before { + content: "\ea5a"; } + +.icojam_location_3:before { + content: "\ea5b"; } + +.icojam_location_4:before { + content: "\ea5c"; } + +.icojam_location_5:before { + content: "\ea5d"; } + +.icojam_location_current:before { + content: "\ea5e"; } + +.icojam_location_delete:before { + content: "\ea5f"; } + +.icojam_location_favorite:before { + content: "\ea60"; } + +.icojam_location_new:before { + content: "\ea61"; } + +.icojam_location_remove:before { + content: "\ea62"; } + +.icojam_map_1:before { + content: "\ea63"; } + +.icojam_map_2:before { + content: "\ea64"; } + +.icojam_map_3:before { + content: "\ea65"; } + +.icojam_map_4:before { + content: "\ea66"; } + +.icojam_map_location:before { + content: "\ea67"; } + +.icojam_options:before { + content: "\ea68"; } + +.icojam_patch:before { + content: "\ea69"; } + +.icojam_plane:before { + content: "\ea6a"; } + +.icojam_present2:before { + content: "\ea6b"; } + +.icojam_radio_1:before { + content: "\ea6c"; } + +.icojam_radio_2:before { + content: "\ea6d"; } + +.icojam_script:before { + content: "\ea6e"; } + +.icojam_speed_1:before { + content: "\ea6f"; } + +.icojam_speed_2:before { + content: "\ea70"; } + +.icojam_switch_off:before { + content: "\ea71"; } + +.icojam_switch_off_1:before { + content: "\ea72"; } + +.icojam_switch_on:before { + content: "\ea73"; } + +.icojam_switch_on_1:before { + content: "\ea74"; } + +.icojam_tag_1:before { + content: "\ea75"; } + +.icojam_tag_2:before { + content: "\ea76"; } + +.icojam_tag_delete:before { + content: "\ea77"; } + +.icojam_tag_favorite:before { + content: "\ea78"; } + +.icojam_tag_new:before { + content: "\ea79"; } + +.icojam_tag_ready:before { + content: "\ea7a"; } + +.icojam_tag_remove:before { + content: "\ea7b"; } + +.icojam_tags_1:before { + content: "\ea7c"; } + +.icojam_tags_2:before { + content: "\ea7d"; } + +.icojam_target:before { + content: "\ea7e"; } + +.icojam_target_1:before { + content: "\ea7f"; } + +.icojam_toggle_down_slide:before { + content: "\ea80"; } + +.icojam_toggle_left_slide:before { + content: "\ea81"; } + +.icojam_toggle_right_slide:before { + content: "\ea82"; } + +.icojam_toggle_up_slide:before { + content: "\ea83"; } + +.icojam_water:before { + content: "\ea84"; } + +.icojam_airdrop:before { + content: "\ea85"; } + +.icojam_application_delete:before { + content: "\ea86"; } + +.icojam_application_favorite:before { + content: "\ea87"; } + +.icojam_application_new:before { + content: "\ea88"; } + +.icojam_application_ready:before { + content: "\ea89"; } + +.icojam_application_remove:before { + content: "\ea8a"; } + +.icojam_battery_1:before { + content: "\ea8b"; } + +.icojam_battery_2:before { + content: "\ea8c"; } + +.icojam_battery_3:before { + content: "\ea8d"; } + +.icojam_battery_empty:before { + content: "\ea8e"; } + +.icojam_battery_full:before { + content: "\ea8f"; } + +.icojam_bell2:before { + content: "\ea90"; } + +.icojam_bucket_tool:before { + content: "\ea91"; } + +.icojam_bug:before { + content: "\ea92"; } + +.icojam_cards:before { + content: "\ea93"; } + +.icojam_chart_1:before { + content: "\ea94"; } + +.icojam_chart_2:before { + content: "\ea95"; } + +.icojam_chart_3:before { + content: "\ea96"; } + +.icojam_chart_4:before { + content: "\ea97"; } + +.icojam_chess:before { + content: "\ea98"; } + +.icojam_connect_1:before { + content: "\ea99"; } + +.icojam_connect_2:before { + content: "\ea9a"; } + +.icojam_contrast:before { + content: "\ea9b"; } + +.icojam_crop:before { + content: "\ea9c"; } + +.icojam_crop_2:before { + content: "\ea9d"; } + +.icojam_dropper_pipette:before { + content: "\ea9e"; } + +.icojam_filter:before { + content: "\ea9f"; } + +.icojam_folder_close:before { + content: "\eaa0"; } + +.icojam_folder_open:before { + content: "\eaa1"; } + +.icojam_font:before { + content: "\eaa2"; } + +.icojam_glasses:before { + content: "\eaa3"; } + +.icojam_graph_tools:before { + content: "\eaa4"; } + +.icojam_grid:before { + content: "\eaa5"; } + +.icojam_hang:before { + content: "\eaa6"; } + +.icojam_layer_order_1:before { + content: "\eaa7"; } + +.icojam_layer_order_2:before { + content: "\eaa8"; } + +.icojam_megaphone:before { + content: "\eaa9"; } + +.icojam_mirror_horizontal:before { + content: "\eaaa"; } + +.icojam_mirror_vertical:before { + content: "\eaab"; } + +.icojam_mixer2:before { + content: "\eaac"; } + +.icojam_movie_1:before { + content: "\eaad"; } + +.icojam_movie_2:before { + content: "\eaae"; } + +.icojam_movie_3:before { + content: "\eaaf"; } + +.icojam_movie_4:before { + content: "\eab0"; } + +.icojam_music_1:before { + content: "\eab1"; } + +.icojam_music_2:before { + content: "\eab2"; } + +.icojam_news_1:before { + content: "\eab3"; } + +.icojam_news_2:before { + content: "\eab4"; } + +.icojam_news_3:before { + content: "\eab5"; } + +.icojam_news_newspaper_1:before { + content: "\eab6"; } + +.icojam_news_newspaper_2:before { + content: "\eab7"; } + +.icojam_options2:before { + content: "\eab8"; } + +.icojam_palette:before { + content: "\eab9"; } + +.icojam_pattern_tool:before { + content: "\eaba"; } + +.icojam_pen2:before { + content: "\eabb"; } + +.icojam_pen_felt:before { + content: "\eabc"; } + +.icojam_pencil2:before { + content: "\eabd"; } + +.icojam_phone_1:before { + content: "\eabe"; } + +.icojam_phone_2:before { + content: "\eabf"; } + +.icojam_photo_reel:before { + content: "\eac0"; } + +.icojam_picture_portrait:before { + content: "\eac1"; } + +.icojam_pitchfork:before { + content: "\eac2"; } + +.icojam_radar_satellite_antenna:before { + content: "\eac3"; } + +.icojam_rocket:before { + content: "\eac4"; } + +.icojam_saturn:before { + content: "\eac5"; } + +.icojam_signal:before { + content: "\eac6"; } + +.icojam_signal_3:before { + content: "\eac7"; } + +.icojam_speaker_1:before { + content: "\eac8"; } + +.icojam_speaker_2:before { + content: "\eac9"; } + +.icojam_speaker_3:before { + content: "\eaca"; } + +.icojam_speaker_mute:before { + content: "\eacb"; } + +.icojam_sputnik:before { + content: "\eacc"; } + +.icojam_stamp:before { + content: "\eacd"; } + +.icojam_terminal2:before { + content: "\eace"; } + +.icojam_terminal_application:before { + content: "\eacf"; } + +.icojam_text_align_center:before { + content: "\ead0"; } + +.icojam_text_align_left:before { + content: "\ead1"; } + +.icojam_text_align_right:before { + content: "\ead2"; } + +.icojam_video_add:before { + content: "\ead3"; } + +.icojam_video_delete:before { + content: "\ead4"; } + +.icojam_video_favorite:before { + content: "\ead5"; } + +.icojam_video_pause:before { + content: "\ead6"; } + +.icojam_video_play:before { + content: "\ead7"; } + +.icojam_video_record:before { + content: "\ead8"; } + +.icojam_video_remove:before { + content: "\ead9"; } + +.icojam_video_stop:before { + content: "\eada"; } + +.icojam_video_uploaded:before { + content: "\eadb"; } + +.icojam_wi-fi_2:before { + content: "\eadc"; } + +.icojam_wi-fi_3:before { + content: "\eadd"; } + +.icojam_wi-fi_4:before { + content: "\eade"; } + +.icojam_wi-fi_5:before { + content: "\eadf"; } + +.icojam_zoom_in:before { + content: "\eae0"; } + +.icojam_zoom_out:before { + content: "\eae1"; } + +.icojam_alert:before { + content: "\eae2"; } + +.icojam_baby_boy:before { + content: "\eae3"; } + +.icojam_baby_child:before { + content: "\eae4"; } + +.icojam_baby_girl:before { + content: "\eae5"; } + +.icojam_children:before { + content: "\eae6"; } + +.icojam_couple_1:before { + content: "\eae7"; } + +.icojam_couple_2:before { + content: "\eae8"; } + +.icojam_disabled:before { + content: "\eae9"; } + +.icojam_escalator:before { + content: "\eaea"; } + +.icojam_exit_1:before { + content: "\eaeb"; } + +.icojam_exit_2:before { + content: "\eaec"; } + +.icojam_father_daughter_1:before { + content: "\eaed"; } + +.icojam_father_daughter_2:before { + content: "\eaee"; } + +.icojam_father_son_1:before { + content: "\eaef"; } + +.icojam_father_son_2:before, .icojam_NODA:before, .icojam_ODA_GNI:before, .icojam_NET_ODA_REC:before, .icojam_NET_ODA_REC_PC:before, .icojam_DT_ODA_ODAT_GN_ZS:before { + content: "\eaf0"; } + +.icojam_female:before { + content: "\eaf1"; } + +.icojam_fire_extinguisher:before { + content: "\eaf2"; } + +.icojam_firehose:before { + content: "\eaf3"; } + +.icojam_fountain_1:before { + content: "\eaf4"; } + +.icojam_human:before { + content: "\eaf5"; } + +.icojam_lift_1:before { + content: "\eaf6"; } + +.icojam_lift_2:before { + content: "\eaf7"; } + +.icojam_lift_service:before { + content: "\eaf8"; } + +.icojam_male:before { + content: "\eaf9"; } + +.icojam_mens:before { + content: "\eafa"; } + +.icojam_mother_child:before { + content: "\eafb"; } + +.icojam_mother_daughter_1:before { + content: "\eafc"; } + +.icojam_mother_daughter_2:before { + content: "\eafd"; } + +.icojam_mother_son_1:before { + content: "\eafe"; } + +.icojam_mother_son_2:before { + content: "\eaff"; } + +.icojam_parking_1:before { + content: "\eb00"; } + +.icojam_parking_2:before { + content: "\eb01"; } + +.icojam_people_crowd:before { + content: "\eb02"; } + +.icojam_pharmacy:before { + content: "\eb03"; } + +.icojam_pram:before { + content: "\eb04"; } + +.icojam_pregnant:before { + content: "\eb05"; } + +.icojam_pump_1:before { + content: "\eb06"; } + +.icojam_pump_2:before { + content: "\eb07"; } + +.icojam_registration:before { + content: "\eb08"; } + +.icojam_run_evacuation:before { + content: "\eb09"; } + +.icojam_run_exit_1:before { + content: "\eb0a"; } + +.icojam_run_exit_2:before { + content: "\eb0b"; } + +.icojam_sos:before { + content: "\eb0c"; } + +.icojam_trash_1:before { + content: "\eb0d"; } + +.icojam_trash_2:before { + content: "\eb0e"; } + +.icojam_wc_1:before { + content: "\eb0f"; } + +.icojam_wc_2:before { + content: "\eb10"; } + +.icojam_wet_floor:before { + content: "\eb11"; } + +.icojam_woman:before { + content: "\eb12"; } + +.icojam_womans:before { + content: "\eb13"; } + +.icojam_action_redo_1:before { + content: "\eb14"; } + +.icojam_action_redo_2:before { + content: "\eb15"; } + +.icojam_action_undo_1:before { + content: "\eb16"; } + +.icojam_action_undo_2:before { + content: "\eb17"; } + +.icojam_arrow_down:before { + content: "\eb18"; } + +.icojam_arrow_down-left:before { + content: "\eb19"; } + +.icojam_arrow_down-right:before { + content: "\eb1a"; } + +.icojam_arrow_left:before { + content: "\eb1b"; } + +.icojam_arrow_right:before { + content: "\eb1c"; } + +.icojam_arrow_up:before { + content: "\eb1d"; } + +.icojam_arrow_up-left:before { + content: "\eb1e"; } + +.icojam_arrow_up-right:before { + content: "\eb1f"; } + +.icojam_button_backward_1:before { + content: "\eb20"; } + +.icojam_button_backward_2:before { + content: "\eb21"; } + +.icojam_button_check_1:before { + content: "\eb22"; } + +.icojam_button_check_2:before { + content: "\eb23"; } + +.icojam_button_delete_1:before { + content: "\eb24"; } + +.icojam_button_delete_2:before { + content: "\eb25"; } + +.icojam_document_text:before { + content: "\eb26"; } + +.icojam_button_foward_2:before { + content: "\eb27"; } + +.icojam_button_minus_1:before { + content: "\eb28"; } + +.icojam_button_minus_2:before { + content: "\eb29"; } + +button_new_2:before { + content: "\eb2b"; } + +.icojam_button_pause_1:before { + content: "\eb2c"; } + +.icojam_button_pause_2:before { + content: "\eb2d"; } + +.icojam_button_play_1:before { + content: "\eb2e"; } + +.icojam_button_play_2:before { + content: "\eb2f"; } + +.icojam_button_record_1:before { + content: "\eb30"; } + +.icojam_button_record_2:before { + content: "\eb31"; } + +.icojam_button_stop_1:before { + content: "\eb32"; } + +.icojam_button_stop_2:before { + content: "\eb33"; } + +.icojam_move_1:before { + content: "\eb34"; } + +.icojam_move_2:before { + content: "\eb35"; } + +.icojam_play_consistently:before { + content: "\eb36"; } + +.icojam_play_ping_pong:before { + content: "\eb37"; } + +.icojam_play_repeat:before { + content: "\eb38"; } + +.icojam_play_repeat_all:before { + content: "\eb39"; } + +.icojam_play_shuffle:before { + content: "\eb3a"; } + +.icojam_refresh_1:before { + content: "\eb3b"; } + +.icojam_refresh_2:before { + content: "\eb3c"; } + +.icojam_rotateccw_1:before { + content: "\eb3d"; } + +.icojam_rotate_1:before { + content: "\eb3e"; } + +.icojam_rotate_2:before { + content: "\eb3f"; } + +.icojam_rotate_3:before { + content: "\eb40"; } + +.icojam_rotate_4:before { + content: "\eb41"; } + +.icojam_rotate_ccw_2:before { + content: "\eb42"; } + +.icojam_rotate_cw_1:before { + content: "\eb43"; } + +.icojam_rotate_cw_2:before { + content: "\eb44"; } + +.icojam_swap_horizontal_1:before { + content: "\eb45"; } + +.icojam_swap_vertical_1:before { + content: "\eb46"; } + +.icojam_symbol_backward:before { + content: "\eb47"; } + +.icojam_symbol_foward:before { + content: "\eb48"; } + +.icojam_symbol_pause_1:before { + content: "\eb49"; } + +.icojam_symbol_play_1:before { + content: "\eb4a"; } + +.icojam_symbol_record_1:before { + content: "\eb4b"; } + +.icojam_symbol_stop_1:before { + content: "\eb4c"; } + +.icojam_window_close:before { + content: "\eb4d"; } + +.icojam_window_fullscreen_1:before { + content: "\eb4e"; } + +.icojam_window_fullscreen_2:before { + content: "\eb4f"; } + +.icojam_attention_1:before { + content: "\eb50"; } + +.icojam_attention_2:before { + content: "\eb51"; } + +.icojam_attention_3:before { + content: "\eb52"; } + +.icojam_bomb:before { + content: "\eb53"; } + +.icojam_bonus:before { + content: "\eb54"; } + +.icojam_cancel_1:before { + content: "\eb55"; } + +.icojam_cancel_2:before { + content: "\eb56"; } + +.icojam_cord_1:before { + content: "\eb57"; } + +.icojam_cord_2:before { + content: "\eb58"; } + +.icojam_flash2:before { + content: "\eb59"; } + +.icojam_flower_1:before { + content: "\eb5a"; } + +.icojam_flower_2:before { + content: "\eb5b"; } + +.icojam_flower_3:before { + content: "\eb5c"; } + +.icojam_help_1:before { + content: "\eb5d"; } + +.icojam_help_2:before { + content: "\eb5e"; } + +.icojam_hierarchy_12:before { + content: "\eb5f"; } + +.icojam_hierarchy_22:before { + content: "\eb60"; } + +.icojam_magnet:before { + content: "\eb61"; } + +.icojam_moon:before { + content: "\eb62"; } + +.icojam_peace:before { + content: "\eb63"; } + +.icojam_pie_chart:before { + content: "\eb64"; } + +.icojam_radiation:before { + content: "\eb65"; } + +.icojam_shape_bonus:before { + content: "\eb66"; } + +.icojam_shape_circle:before { + content: "\eb67"; } + +.icojam_shape_ellipse:before { + content: "\eb68"; } + +.icojam_shape_heptagon:before { + content: "\eb69"; } + +.icojam_shape_hexagon:before { + content: "\eb6a"; } + +.icojam_shape_hexagonal_rounded:before { + content: "\eb6b"; } + +.icojam_shape_hexagonal_star:before { + content: "\eb6c"; } + +.icojam_shape_octagon:before { + content: "\eb6d"; } + +.icojam_shape_octagonal_rounded:before { + content: "\eb6e"; } + +.icojam_shape_octagonal_star:before { + content: "\eb6f"; } + +.icojam_shape_pentagon:before { + content: "\eb70"; } + +.icojam_shape_rectangle:before { + content: "\eb71"; } + +.icojam_shape_rounded:before { + content: "\eb72"; } + +.icojam_shape_seven_rounded:before { + content: "\eb73"; } + +.icojam_shape_seven_star:before { + content: "\eb74"; } + +.icojam_shape_square:before { + content: "\eb75"; } + +.icojam_shape_star:before { + content: "\eb76"; } + +.icojam_shape_triangle:before { + content: "\eb77"; } + +.icojam_stop_1:before { + content: "\eb78"; } + +.icojam_stop_2:before { + content: "\eb79"; } + +.icojam_sun2:before { + content: "\eb7a"; } + +.icojam_switcher_1:before { + content: "\eb7b"; } + +.icojam_switcher_2:before { + content: "\eb7c"; } + +.icojam_air_baloon_1:before { + content: "\eb7d"; } + +.icojam_air_baloon_2:before { + content: "\eb7e"; } + +.icojam_air_baloon_3:before { + content: "\eb7f"; } + +.icojam_airliner:before { + content: "\eb80"; } + +.icojam_ambulance:before { + content: "\eb81"; } + +.icojam_bicycle:before { + content: "\eb82"; } + +.icojam_boat:before { + content: "\eb83"; } + +.icojam_bus_1:before { + content: "\eb84"; } + +.icojam_bus_2:before { + content: "\eb85"; } + +.icojam_bus_london:before { + content: "\eb86"; } + +.icojam_cruise_ship:before { + content: "\eb87"; } + +.icojam_fighter:before { + content: "\eb88"; } + +.icojam_gas_tanker:before { + content: "\eb89"; } + +.icojam_helicopter:before { + content: "\eb8a"; } + +.icojam_motocycle:before { + content: "\eb8b"; } + +.icojam_plane2:before { + content: "\eb8c"; } + +.icojam_plane_landing:before { + content: "\eb8d"; } + +.icojam_plane_takeoff:before { + content: "\eb8e"; } + +.icojam_police_1:before { + content: "\eb8f"; } + +.icojam_police_2:before { + content: "\eb90"; } + +.icojam_railroad:before { + content: "\eb91"; } + +.icojam_rocket_1:before { + content: "\eb92"; } + +.icojam_rocket_2:before { + content: "\eb93"; } + +.icojam_ship_1:before { + content: "\eb94"; } + +.icojam_ship_2:before { + content: "\eb95"; } + +.icojam_ship_3:before { + content: "\eb96"; } + +.icojam_shuttle:before { + content: "\eb97"; } + +.icojam_sign_bus:before { + content: "\eb98"; } + +.icojam_sign_car:before { + content: "\eb99"; } + +.icojam_sign_train_1:before { + content: "\eb9a"; } + +.icojam_sign_train_2:before { + content: "\eb9b"; } + +.icojam_sign_train_3:before { + content: "\eb9c"; } + +.icojam_sign_tramway:before { + content: "\eb9d"; } + +.icojam_sign_trolley_bus:before { + content: "\eb9e"; } + +.icojam_sign_water_transport:before { + content: "\eb9f"; } + +.icojam_tank_1:before { + content: "\eba0"; } + +.icojam_tank_2:before { + content: "\eba1"; } + +.icojam_tanker:before { + content: "\eba2"; } + +.icojam_taxi:before { + content: "\eba3"; } + +.icojam_trailer:before { + content: "\eba4"; } + +.icojam_tramway:before { + content: "\eba5"; } + +.icojam_transport:before { + content: "\eba6"; } + +.icojam_trolley_bus:before { + content: "\eba7"; } + +.icojam_truck_1:before { + content: "\eba8"; } + +.icojam_truck_2:before { + content: "\eba9"; } + +.icojam_truck_3:before { + content: "\ebaa"; } + +.icojam_ufo:before { + content: "\ebab"; } + +.icojam_add_friend:before { + content: "\ebac"; } + +.icojam_best_friends:before { + content: "\ebad"; } + +.icojam_couple:before { + content: "\ebae"; } + +.icojam_delete_profile:before { + content: "\ebaf"; } + +.icojam_forefinger_down:before { + content: "\ebb0"; } + +.icojam_forefinger_left:before { + content: "\ebb1"; } + +.icojam_forefinger_right:before { + content: "\ebb2"; } + +.icojam_forefinger_up:before { + content: "\ebb3"; } + +.icojam_friends:before, .icojam_POP_TOT:before, .icojam_RUR_POP_PERC:before { + content: "\ebb4"; } + +.icojam_group:before { + content: "\ebb5"; } + +.icojam_hand_stop_1:before { + content: "\ebb6"; } + +.icojam_hand_stop_2:before { + content: "\ebb7"; } + +.icojam_man:before { + content: "\ebb8"; } + +.icojam_registered_user:before { + content: "\ebb9"; } + +.icojam_remove_friend:before { + content: "\ebba"; } + +.icojam_user:before { + content: "\ebbb"; } + +.icojam_vote_no:before { + content: "\ebbc"; } + +.icojam_vote_yes:before { + content: "\ebbd"; } + +.icojam_woman2:before { + content: "\ebbe"; } + +.icojam_cloud2:before { + content: "\ebbf"; } + +.icojam_cold:before { + content: "\ebc0"; } + +.icojam_day_cloudy:before { + content: "\ebc1"; } + +.icojam_day_lot_clouds:before { + content: "\ebc2"; } + +.icojam_day_partly_cloudy:before { + content: "\ebc3"; } + +.icojam_day_rain:before { + content: "\ebc4"; } + +.icojam_day_sunny:before { + content: "\ebc5"; } + +.icojam_flood:before { + content: "\ebc6"; } + +.icojam_fog:before { + content: "\ebc7"; } + +.icojam_hail:before { + content: "\ebc8"; } + +.icojam_hail_heavy:before { + content: "\ebc9"; } + +.icojam_hail_light:before { + content: "\ebca"; } + +.icojam_lightning:before { + content: "\ebcb"; } + +.icojam_night_cloudy:before { + content: "\ebcc"; } + +.icojam_night_lot_clouds:before { + content: "\ebcd"; } + +.icojam_night_moon:before { + content: "\ebce"; } + +.icojam_night_partly_cloudy:before { + content: "\ebcf"; } + +.icojam_night_rain:before { + content: "\ebd0"; } + +.icojam_rain:before { + content: "\ebd1"; } + +.icojam_rain_heavy:before { + content: "\ebd2"; } + +.icojam_rain_light:before { + content: "\ebd3"; } + +.icojam_rain_lightning:before { + content: "\ebd4"; } + +.icojam_snow:before { + content: "\ebd5"; } + +.icojam_snow_heavy:before { + content: "\ebd6"; } + +.icojam_snow_light:before { + content: "\ebd7"; } + +.icojam_snow_rain:before { + content: "\ebd8"; } + +.icojam_thermometer2:before { + content: "\ebd9"; } + +.icojam_thunder:before { + content: "\ebda"; } + +.icojam_tornado:before { + content: "\ebdb"; } + +.icojam_umbrella2:before { + content: "\ebdc"; } + +.icojam_water2:before { + content: "\ebdd"; } + +.icojam_wet:before { + content: "\ebde"; } + +.icojam_attach_1:before { + content: "\ebdf"; } + +.icojam_attach_2:before { + content: "\ebe0"; } + +.icojam_bag_1:before { + content: "\ebe1"; } + +.icojam_bag_2:before { + content: "\ebe2"; } + +.icojam_bag_3:before { + content: "\ebe3"; } + +.icojam_bag_4:before { + content: "\ebe4"; } + +.icojam_bag_5:before { + content: "\ebe5"; } + +.icojam_calendar_1:before { + content: "\ebe6"; } + +.icojam_calendar_2:before { + content: "\ebe7"; } + +.icojam_calendar_3:before { + content: "\ebe8"; } + +.icojam_calendar_4:before { + content: "\ebe9"; } + +.icojam_calendar_5:before { + content: "\ebea"; } + +.icojam_calendar_6:before { + content: "\ebeb"; } + +.icojam_clipboard_1:before { + content: "\ebec"; } + +.icojam_clipboard_2:before { + content: "\ebed"; } + +.icojam_clipboard_3:before { + content: "\ebee"; } + +.icojam_copy:before { + content: "\ebef"; } + +.icojam_count_delete:before { + content: "\ebf0"; } + +.icojam_count_finish:before { + content: "\ebf1"; } + +.icojam_count_new:before { + content: "\ebf2"; } + +.icojam_count_pause:before { + content: "\ebf3"; } + +.icojam_count_play:before { + content: "\ebf4"; } + +.icojam_count_remove:before { + content: "\ebf5"; } + +.icojam_count_stop:before { + content: "\ebf6"; } + +.icojam_cursor:before { + content: "\ebf7"; } + +.icojam_cut:before { + content: "\ebf8"; } + +.icojam_document_1:before { + content: "\ebf9"; } + +.icojam_document_2:before { + content: "\ebfa"; } + +.icojam_document_check:before { + content: "\ebfb"; } + +.icojam_document_delete:before { + content: "\ebfc"; } + +.icojam_document_favorite:before { + content: "\ebfd"; } + +.icojam_document_new:before { + content: "\ebfe"; } + +.icojam_document_remove:before { + content: "\ebff"; } + +.icojam_document_search:before { + content: "\ec00"; } + +.icojam_document_text2:before { + content: "\ec01"; } + +.icojam_enter:before { + content: "\ec02"; } + +.icojam_erase:before { + content: "\ec03"; } + +.icojam_eraser:before { + content: "\ec04"; } + +.icojam_exit:before { + content: "\ec05"; } + +.icojam_factory:before { + content: "\ec06"; } + +.icojam_folder:before { + content: "\ec07"; } + +.icojam_folder_1:before { + content: "\ec08"; } + +.icojam_folder_1_open:before { + content: "\ec09"; } + +.icojam_folder_2:before { + content: "\ec0a"; } + +.icojam_folder_2_open:before { + content: "\ec0b"; } + +.icojam_folder_check:before { + content: "\ec0c"; } + +.icojam_folder_delete:before { + content: "\ec0d"; } + +.icojam_folder_favorite:before { + content: "\ec0e"; } + +.icojam_folder_new:before { + content: "\ec0f"; } + +.icojam_folder_remove:before { + content: "\ec10"; } + +.icojam_folder_search:before { + content: "\ec11"; } + +.icojam_join_1:before { + content: "\ec12"; } + +.icojam_join_2:before { + content: "\ec13"; } + +.icojam_mail:before { + content: "\ec14"; } + +.icojam_paste:before { + content: "\ec15"; } + +.icojam_pen3:before { + content: "\ec16"; } + +.icojam_pencil3:before { + content: "\ec17"; } + +.icojam_pencil_write:before { + content: "\ec18"; } + +.icojam_portfolio:before { + content: "\ec19"; } + +.icojam_profile_1:before { + content: "\ec1a"; } + +.icojam_profile_2:before { + content: "\ec1b"; } + +.icojam_time:before { + content: "\ec1c"; } + +.icojam_time_favorite:before { + content: "\ec1d"; } + +/* Roboto */ +/* Roboto Import */ +/* Roboto Regular */ +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_regular/Roboto-Regular-webfont.svg#RobotoRegular") format("svg"); + font-weight: 400; + font-style: normal; } +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_bold/Roboto-Bold-webfont.svg#RobotoBold") format("svg"); + font-weight: 700; + font-style: normal; } +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_thin/Roboto-Thin-webfont.svg#RobotoThin") format("svg"); + font-weight: 100; + font-style: normal; } +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_light/Roboto-Light-webfont.svg#RobotoLight") format("svg"); + font-weight: 300; + font-style: normal; } +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_medium/Roboto-Medium-webfont.svg#RobotoMedium") format("svg"); + font-weight: 500; + font-style: normal; } +@font-face { + font-family: 'Roboto'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-reg/roboto_black/Roboto-Black-webfont.svg#RobotoBold") format("svg"); + font-weight: 900; + font-style: normal; } +/* Roboto Condensed */ +@font-face { + font-family: 'Roboto Condensed'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_condensed/RobotoCondensed-Regular-webfont.svg#RobotoRegular") format("svg"); + font-weight: 400; + font-style: normal; } +@font-face { + font-family: 'Roboto Condensed'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_lightcondensed/RobotoCondensed-Light-webfont.svg#RobotoRegular") format("svg"); + font-weight: 300; + font-style: normal; } +@font-face { + font-family: 'Roboto Condensed'; + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.eot"); + src: url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.woff") format("woff"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.ttf") format("truetype"), url("http://fenixrepo.fao.org/cdn/css/fenix-ui-common/css/fonts/roboto/sources/roboto-condensed/roboto_boldcondensed/RobotoCondensed-Bold-webfont.svg#RobotoRegular") format("svg"); + font-weight: 700; + font-style: normal; } +/* Font Awesome */ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* It is a CDN - Read the readme file in sources directory */ +/* It is a CDN - Read the readme file in sources directory */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?v=4.2.0"); + src: url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"), url("//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg"); + font-weight: normal; + font-style: normal; } +.fa, .gt-hd-icon.gt-hd-asc, .gt-hd-icon, .gt-hd-icon.gt-hd-desc { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -15%; } + +.fa-2x { + font-size: 2em; } + +.fa-3x { + font-size: 3em; } + +.fa-4x { + font-size: 4em; } + +.fa-5x { + font-size: 5em; } + +.fa-fw { + width: 1.28571em; + text-align: center; } + +.fa-ul { + padding-left: 0; + margin-left: 2.14286em; + list-style-type: none; } + .fa-ul > li { + position: relative; } + +.fa-li { + position: absolute; + left: -2.14286em; + width: 2.14286em; + top: 0.14286em; + text-align: center; } + .fa-li.fa-lg { + left: -1.85714em; } + +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eee; + border-radius: .1em; } + +.pull-right { + float: right; } + +.pull-left { + float: left; } + +.fa.pull-left, .pull-left.gt-hd-icon { + margin-right: .3em; } +.fa.pull-right, .pull-right.gt-hd-icon { + margin-left: .3em; } + +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; } + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; } + +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.fa-stack-1x, .fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.fa-stack-1x { + line-height: inherit; } + +.fa-stack-2x { + font-size: 2em; } + +.fa-inverse { + color: #fff; } + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-search:before { + content: ""; } + +.fa-th:before { + content: ""; } + +.fa-th-list:before { + content: ""; } + +.fa-home:before { + content: ""; } + +.fa-clock-o:before { + content: ""; } + +.fa-refresh:before { + content: ""; } + +.fa-lock:before { + content: ""; } + +.fa-barcode:before { + content: ""; } + +.fa-map-marker:before { + content: ""; } + +.fa-calendar:before { + content: ""; } + +.fa-twitter-square:before { + content: ""; } + +.fa-facebook-square:before { + content: ""; } + +.fa-globe:before { + content: ""; } + +.fa-wrench:before { + content: ""; } + +.fa-google-plus-square:before { + content: ""; } + +.fa-google-plus:before { + content: ""; } + +.fa-caret-down:before, .gt-hd-icon.gt-hd-desc:before { + content: ""; } + +.fa-caret-up:before, .gt-hd-icon.gt-hd-asc:before { + content: ""; } + +.fa-caret-left:before { + content: ""; } + +.fa-caret-right:before { + content: ""; } + +.fa-sort:before, .gt-hd-icon:before { + content: ""; } + +.fa-rss-square:before { + content: ""; } + +.fa-slack:before { + content: ""; } + +.fa-database:before { + content: ""; } + +/* Fenix Typography */ +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +/* Fenix - Reset */ +/* Components */ +/* Fenix - Components Index */ +/* Fenix - Buttons Component */ +/** avoid dotted lines when clicking on button**/ +input[type="button"] { + outline: none; } + +button:focus { + outline: 0; + outline: none; } + +button:active { + outline: 0; + outline: none; } + +.btn:focus, .btn:active, .btn:active:focus { + outline: none; } + +input[type="button"]::-moz-focus-inner { + border: 0; } + +/** end of **/ +.btn-round { + padding: 3px; + height: 24px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; } + .btn-round:last-child:not(:first-child), .btn-round:not(:first-child) { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; } + +/* Visualization Box btns */ +.btn-default.meta-btn { + background-color: #999999; + font-size: 11px; + color: white; + padding: 1px 5px; + border-color: transparent; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; } + .btn-default.meta-btn:hover { + background-color: #b3b3b3; + border-color: transparent; } + +/* Fenix UI Catalog */ +.fx-catalog-welcome { + text-align: center; + max-width: 300px; + position: absolute; + left: 50%; + top: 50%; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } + .fx-catalog-welcome .catalog-ico { + height: 50px; + width: 50px; } + .fx-catalog-welcome h1 { + margin-top: 10px; } + +/* Packery */ +.fx-catalog-form-module { + width: 50%; + border: 10px solid #f1f1f1; } + +.fx-catalog-form-module.fit { + width: 100%; } + +.fx_result_description_title { + text-transform: uppercase; + display: inline; } + +.fx_result_description_source { + display: inline; + color: #999999; } + +.fx_result_description_source:before { + content: "-"; } + +.fx_result_description_baseperiod { + font-style: italic; + font-size: 10px; } + +.fenix-result { + width: 100%; + background-color: white; + border: 1px solid #D2D0D0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + margin-bottom: 20px; + padding: 19px 0 16px 19px; } + +/*========= HEADER =========*/ +.fx-catalog-header { + text-align: center; + background-color: #f1f1f1; } + .fx-catalog-header em { + font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + +.fx-catalog-header-btn { + cursor: pointer; } + +/*========= FILTER CONTAINER =========*/ +.fx-catalog-modular-filter-container { + background-color: #f1f1f1; + min-height: 250px; + overflow: hidden; } + +/*========= MODULAR MENU =========*/ +.fx-catalog-modular-menu-container { + background-color: #f1f1f1; + padding: 0; + min-height: 250px; } + +.fx-catalog-modular-menu-category-plus { + position: absolute; + top: 0; + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -90px 0; + background-size: 150px 30px; } + +.fx-catalog-mod-timerseries { + top: 25px; } + +.region-css { + height: 100%; + position: relative; } + +.jstree-holder { + height: 209px; + overflow-y: auto; } + +.fx_result_icon { + font-size: 30px; } + +/*========= RESULTS */ +/*========= COMMONS =========*/ +.fx_horegon { + display: inline; } + +.fx_result_icon_img { + width: 42px; } + +#fx-catalog-results { + margin-top: 20px; } + +.fx-analysis-page-title { + font-weight: 100; + color: #333333; } + +.fx-analysis-page-description { + color: #333333; } + +.well { + background-color: transparent; + border: none; + -webkit-box-shadow: 0 0 0 white; + -moz-box-shadow: 0 0 0 white; + box-shadow: 0 0 0 white; } + +.fx-catalog-toolbar { + color: #333333; } + .fx-catalog-toolbar .fx-widget-stack-btns { + text-align: right; } + .fx-catalog-toolbar .fx-widget-stack-btns em { + font-style: normal; + background-color: #333333; + width: 30px; + height: 20px; + display: inline-block; + color: white; + text-align: center; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; } + .fx-catalog-toolbar .fx-widget-stack-btns input { + margin-left: 33px; } + +/* Fenix - Circle Number Component */ +.fx-circle-number { + color: white; + display: inline-block; + font: normal normal 500 14px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + height: 20px; + width: 20px; + line-height: 20px; + text-align: center; + background-color: #2686ba; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + -ms-border-radius: 100%; + border-radius: 100%; + -ms-transform: translate(0, -50%); + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); } + +/* Fenix Color Reference */ +.color-main { + background-color: #2686ba; } + +.color-main-light-10 { + background-color: #3ca1d7; } + +/* Fenix Datepicker - Components */ +.datepicker { + font-size: 12px; } + .datepicker .datepicker-days .day { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; } + .datepicker .datepicker-days .day.active { + background-color: #2686ba; } + .datepicker .datepicker-days .day.today:before { + border-bottom-color: #2686ba; } + .datepicker .datepicker-days .day.active.today:before { + border-bottom-color: white; } + +.dropdown-submenu { + position: relative; } + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px; + border-radius: 0 6px 6px 6px; } + +.dropdown-submenu:hover > .dropdown-menu { + display: block; } + +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + margin-top: 5px; + margin-right: -10px; } + +.dropdown-submenu:hover > a:after { + border-left-color: #fff; } + +.dropdown-submenu.pull-left { + float: none; } + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; } + +/* Fenix - Fieldset Component */ +fieldset { + border: 0; } + fieldset .fx-fieldset-subtitle label { + font-size: 12px; } + +/* Fenix Filter Tab */ +[data-plugin="filter"] .btn { + width: 150px; } +[data-plugin="filter"] .fx-catalog-modular-form-holder { + border-color: transparent; + position: relative; } + [data-plugin="filter"] .fx-catalog-modular-form-holder:before { + content: ''; + height: 1px; + width: calc(100% + 30px); + display: block; + background-color: #dddddd; + position: relative; + top: -13px; + left: -23px; } +[data-plugin="filter"] .jstree-holder { + height: 100px; } +[data-plugin="filter"] .fx-catalog-modular-form-label { + font-size: 14px; + left: 0; } +[data-plugin="filter"] input[type="search"] { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + height: 20px; + margin-bottom: 3px; + position: absolute; + top: -27px; + width: 70%; + right: 25px; + background-color: transparent; + border: 1px solid #D2D0D0; } +[data-plugin="filter"] form { + position: relative; } + [data-plugin="filter"] form:before { + content: "\e003"; + font-family: 'Glyphicons Halflings'; + position: absolute; + top: -23px; + left: calc(100% - 17px); + display: inline-block; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + color: #D2D0D0; } +[data-plugin="filter"] .fx-filter-form-module.fit { + width: 100%; } + +.inside-full-height { + /* + // if you want to give content full height give him height: 100%; + // with content full height you can't apply margins to the content + // content full height does not work in ie http://stackoverflow.com/questions/27384433/ie-display-table-cell-child-ignores-height-100 + */ + height: 100%; + margin-top: 0; + margin-bottom: 0; } + +.content { + padding: 12px 3px; } + +/* columns of same height styles */ +.row-height { + display: table; + table-layout: fixed; + height: 100%; + width: 100%; } + +.col-height { + display: table-cell; + float: none; + height: 100%; } + +.col-top { + vertical-align: top; } + +.col-middle { + vertical-align: middle; } + +.col-bottom { + vertical-align: bottom; } + +@media (min-width: 480px) { + .row-xs-height { + display: table; + table-layout: fixed; + height: 100%; + width: 100%; } + + .col-xs-height { + display: table-cell; + float: none; + height: 100%; } + + .col-xs-top { + vertical-align: top; } + + .col-xs-middle { + vertical-align: middle; } + + .col-xs-bottom { + vertical-align: bottom; } } +@media (min-width: 768px) { + .row-sm-height { + display: table; + table-layout: fixed; + height: 100%; + width: 100%; } + + .col-sm-height { + display: table-cell; + float: none; + height: 100%; } + + .col-sm-top { + vertical-align: top; } + + .col-sm-middle { + vertical-align: middle; } + + .col-sm-bottom { + vertical-align: bottom; } } +@media (min-width: 992px) { + .row-md-height { + display: table; + table-layout: fixed; + height: 100%; + width: 100%; } + + .col-md-height { + display: table-cell; + float: none; + height: 100%; } + + .col-md-top { + vertical-align: top; } + + .col-md-middle { + vertical-align: middle; } + + .col-md-bottom { + vertical-align: bottom; } } +@media (min-width: 1200px) { + .row-lg-height { + display: table; + table-layout: fixed; + height: 100%; + width: 100%; } + + .col-lg-height { + display: table-cell; + float: none; + height: 100%; } + + .col-lg-top { + vertical-align: top; } + + .col-lg-middle { + vertical-align: middle; } + + .col-lg-bottom { + vertical-align: bottom; } } +/* Fenix Icons */ +.fx-icon, [data-selector-time] [data-action="previous"] span, [data-selector-time] [data-action="next"] span { + height: 15px; + width: 15px; + display: inline-block; + background-image: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg"); + background-repeat: no-repeat; + background-size: 150px 30px; } + +.fx-icon-close { + background-position: 0 -15px; } + +/* Fenix - Inputs Component */ +/* remove x icon in IE 10+ */ +input[type=text]::-ms-clear { + display: none; } + +/* Input Placeholder*/ +.form-control::-webkit-input-placeholder { + /* WebKit browsers */ + opacity: .5; } + +.form-control:-moz-placeholder { + /* Mozilla Firefox 4 to 18 */ + opacity: .5; } + +.form-control::-moz-placeholder { + /* Mozilla Firefox 19+ */ + opacity: .5; } + +.form-control:-ms-input-placeholder { + /* Internet Explorer 10+ */ + opacity: .5; } + +/*iOS switch like */ +.toggle-wrapper .toggle-text { + display: inline-block; + color: #999999; + font-size: 10px; + margin: 0; + position: relative; + top: -5px; + left: 2px; } +.toggle-wrapper input[data-type="switch"] + label { + display: inline-block; + position: relative; + box-shadow: inset 0 0 0px 1px #d5d5d5; + text-indent: -5000px; + height: 15px; + width: 25px; + border-radius: 15px; } +.toggle-wrapper input[data-type="switch"] + label:before { + content: ""; + position: absolute; + display: block; + height: 15px; + width: 15px; + top: 0; + left: 0; + border-radius: 15px; + background: rgba(19, 191, 17, 0); + -moz-transition: .25s ease-in-out; + -webkit-transition: .25s ease-in-out; + transition: .25s ease-in-out; } +.toggle-wrapper input[data-type="switch"] + label:after { + content: ""; + position: absolute; + display: block; + height: 15px; + width: 15px; + top: 0; + left: 0px; + border-radius: 15px; + background: white; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-transition: .25s ease-in-out; + -webkit-transition: .25s ease-in-out; + transition: .25s ease-in-out; } +.toggle-wrapper input[data-type="switch"]:checked + label:before { + width: 20px; + background: #13bf11; + border-width: 0; } +.toggle-wrapper input[data-type="switch"]:checked + label:after { + left: 10px; + box-shadow: inset 0 0 0 1px #13bf11, 0 2px 4px rgba(0, 0, 0, 0.2); } + +/* Fenix - Labels Component */ +label { + font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + +/* Fenix - Legend Component */ +legend { + color: #333333; + cursor: pointer; + border: 0; + font-size: 12px; } + legend label { + font-size: 12px; + cursor: pointer; } + +/* Metadata Viewer */ +.fx-md-viewer-wrapper { + font-size: 12px; } + .fx-md-viewer-wrapper .fx-md-viewer-title { + margin-top: 10px; + margin-bottom: 20px; + font-size: 18px; } + .fx-md-viewer-wrapper .fx-md-viewer-container { + width: 100%; } + .fx-md-viewer-wrapper th, .fx-md-viewer-wrapper td { + border-bottom: 1px solid #e5e5e5; + height: 25px; + padding: 5px 0; } + .fx-md-viewer-wrapper .treegrid-expander { + top: 3px; + cursor: pointer; } + .fx-md-viewer-wrapper .metadata-viewer-title { + width: 30%; + font-size: 12px; + font-weight: 500; + padding-right: 25px; + cursor: pointer; } + .fx-md-viewer-wrapper .metadata-viewer-title .fx-md-viewer-description { + top: 3px; + cursor: pointer; + opacity: 0; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + .fx-md-viewer-wrapper .metadata-viewer-title:hover .fx-md-viewer-description { + opacity: 1; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + .fx-md-viewer-wrapper .metadata-viewer-value { + width: 70%; + font-size: 12px; } + .fx-md-viewer-wrapper .popover-title { + background-color: transparent; } + .fx-md-viewer-wrapper .popover-title .text-info { + color: #2686ba; } + +/* Fenix - Modular Form Component */ +.fx-catalog-modular-form-holder { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background-color: white; + border-color: #D2D0D0; + border-image: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + border-style: solid; + border-width: 1px 1px 2px; + margin: 10px 0 20px; + padding: 20px; + width: auto; + padding: 5px; + margin: 0; } + +.fx-catalog-modular-form-wrapper { + padding-right: 0; + /*overflow: hidden;*/ + min-height: 250px; + position: relative; + background-color: #f1f1f1; } + +.fx-catalog-modular-form-header { + position: relative; + height: 30px; } + +.fx-catalog-modular-form-handler { + position: absolute; + left: 7px; + top: 7px; + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -15px 0; + background-size: 150px 30px; + cursor: pointer; } + +.fx-catalog-modular-form-close-btn { + position: absolute; + top: 7px; + right: 7px; + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -45px 0; + background-size: 150px 30px; + cursor: pointer; } + +.fx-catalog-modular-form-resize-btn { + position: absolute; + top: 7px; + right: 28px; + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -30px 0; + background-size: 150px 30px; + cursor: pointer; } + +.fx-catalog-modular-form-label { + position: absolute; + top: 4px; + left: 30px; + font-weight: 300; + color: #5e7582; } + +.fx-catalog-modular-form-content { + padding: 10px 10px 10px 10px; + height: 100px; } + +div[data-module] .fx-catalog-modular-form-content { + height: 173px; } + +div[data-module="region"] .fx-catalog-modular-form-content { + height: 263px; } + +div[data-module="referencePeriod"] .fx-catalog-modular-form-content { + height: 263px; } + +div[data-module="sector"] .fx-catalog-modular-form-content { + height: 263px; } + +/* Fenix - Navigation Component */ +.navbar { + border: 0; + border-width: 0; } + +.nav .open > a, .nav .open > a:hover, .nav .open > a:focus { + border-color: #2686ba; } + +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { + background-color: transparent; + color: #333333; } + +.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + color: #2686ba; } + +/* Fenix - Object Box Component */ +.obj-box, .obj-box-radius10, .obj-box-title { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background-color: white; + border-color: #D2D0D0; + border-image: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + border-style: solid; + border-width: 1px 1px 2px; + margin: 10px 0 20px; + padding: 20px; + width: auto; } + +.obj-box-radius10 { + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + border-radius: 10px; } + +.obj-box-title { + padding-top: 5px; } + .obj-box-title h4 { + color: #2686ba; + font: normal normal 300 11px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + +/* Fenix - Panel Component */ +.panel-group { + margin-bottom: 0px; } + .panel-group .panel { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + background-color: transparent; + border: none; + border-bottom: 1px solid #D2D0D0; } + .panel-group .panel-default { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } + .panel-group .panel-default:last-child { + border-bottom-width: 0px; } + .panel-group .panel-heading { + background-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + padding: 10px; } + .panel-group .panel-heading .panel-title { + font: normal normal 300 16px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + .panel-group .panel-heading .panel-title a { + color: #333333; + text-transform: uppercase; } + .panel-group .panel-heading .panel-title a:hover { + text-decoration: none; } + .panel-group .panel-heading .panel-title a:active { + text-decoration: none; } + .panel-group .panel-heading .panel-title a:focus { + text-decoration: none; } + .panel-group .panel-heading.fx-active-panel .panel-title a { + color: #2686ba; } + .panel-group .panel-body .btn { + background-color: transparent; + color: #333333; + border-color: transparent; + font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + text-align: left; + position: relative; } + .panel-group .panel-body .btn:hover { + background-color: transparent; + color: #333333; + border-color: transparent; } + .panel-group .panel-body .btn:active { + background-color: transparent; + color: #333333; + border-color: transparent; + -webkit-box-shadow: 0 0 0 white; + -moz-box-shadow: 0 0 0 white; + box-shadow: 0 0 0 white; } + .panel-group .panel-body .btn span.fa, .panel-group .panel-body .btn span.gt-hd-icon { + margin-right: 10px; } + +.fx-panel-plus, .fx-panel-minus, .fx-panel-required { + display: inline-block; + margin-right: 25px; } + +.fx-panel-plus { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -90px 0; + background-size: 150px 30px; } + +.fx-panel-minus { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -90px -15px; + background-size: 150px 30px; } + +.fx-panel-info { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat 0 0; + background-size: 150px 30px; + float: right; } + +.fx-panel-required { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -15px -15px; + background-size: 150px 30px; } + +.fx-panel-ok { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -45px -15px; + background-size: 150px 30px; } + +.fx-panel-remove { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -60px -15px; + background-size: 150px 30px; } + +.fx-panel-refresh { + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -75px -15px; + background-size: 150px 30px; } + +.metadata-container .btn { + min-width: 0; + border-color: transparent; } + .metadata-container .btn:link, .metadata-container .btn:visited, .metadata-container .btn:hover, .metadata-container .btn:focus, .metadata-container .btn:active { + border-color: transparent; } +.metadata-container .form-control { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; } +.metadata-container .btn-success, .metadata-container .btn-warning { + border-color: #2686ba; } + +/* Fenix Popover Component */ +.popover { + width: 200px; } + +/* Radio Buttons */ +input[type="radio"] { + display: none; } + +input[type="radio"] + label { + cursor: pointer; + margin: 0 7px; + font-weight: normal; } + input[type="radio"] + label:before { + content: ''; + display: inline-block; + height: 15px; + width: 15px; + background-color: #bdbdbd; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + -ms-border-radius: 100%; + border-radius: 100%; + border: 0 solid #2686ba; + position: relative; + top: 2px; + left: -4px; } + +input[type="radio"]:checked + label { + color: #2686ba; } + input[type="radio"]:checked + label:before { + border-width: 5px; } + +input[type="radio"] + label:before, +input[type="radio"]:checked + label:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + +/* Checkbox Buttons */ +input[type="checkbox"] { + display: none; } + +input[type="checkbox"] + label { + cursor: pointer; + margin: 0 7px; + font-weight: normal; } + input[type="checkbox"] + label:before { + content: ''; + display: inline-block; + height: 15px; + width: 15px; + background-color: #bdbdbd; + border: 0 solid #2686ba; + position: relative; + top: 2px; + left: -4px; } + +input[type="checkbox"]:checked + label { + color: #2686ba; } + input[type="checkbox"]:checked + label:before { + border-width: 5px; } + +input[type="checkbox"] + label:before, +input[type="checkbox"]:checked + label:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + +/* Disabled */ +input[type="checkbox"]:disabled + label, +input[type="radio"]:disabled + label { + cursor: no-drop; + opacity: 0.4; } + input[type="checkbox"]:disabled + label:before, + input[type="radio"]:disabled + label:before { + cursor: no-drop; + opacity: 0.4; } + +/* Fenix Range Slider */ +.ui-rangeSlider-innerBar { + height: 3px !important; + top: 7px !important; + background-color: #D2D0D0 !important; } + +.ui-rangeSlider-arrow.ui-rangeSlider-leftArrow { + background: url(img/arrow-left-on.svg) no-repeat !important; + width: 48px; + height: 48px; + background-position: -16px -15px !important; } + +.ui-rangeSlider-arrow.ui-rangeSlider-rightArrow { + background: url(img/arrow-right-on.svg) no-repeat !important; + width: 48px; + height: 48px; + background-position: 16px -15px !important; } + +.ui-rangeSlider-label.ui-rangeSlider-rightLabel { + background-image: url("img/label.png") !important; + margin-bottom: 5px !important; } + +.ui-rangeSlider-label.ui-rangeSlider-leftLabel { + background-image: url("img/label.png") !important; + margin-bottom: 5px !important; } + +.ui-rangeSlider-label-value { + font-size: 12px; + font-weight: 500; } + +.ui-rangeSlider-leftHandle, .ui-rangeSlider-rightHandle { + width: 20px !important; + height: 20px !important; + background-color: #2686ba !important; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + -ms-border-radius: 100%; + border-radius: 100%; } + +.ui-rangeSlider-bar { + background-color: #2686ba !important; + margin-top: 8px !important; + height: 5px !important; } + +/* Fenix - Resume Bar Component */ +.fx-resume-bar { + padding-right: 150px; + background-color: #f1f1f1; + position: relative; } + +#fx-resume { + background-color: white; + padding-top: 20px; + min-height: 60px; } + +.fx-resume-title { + color: #2686ba; + padding-left: 15px; + padding-top: 5px; + font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + position: absolute; + top: 0; } + +.fx-resume-noitem { + padding-left: 15px; + position: absolute; + top: 15px; } + +#fx-catalog-submit-btn { + color: white; + text-transform: uppercase; + background-color: #2686ba; + width: 150px; + position: absolute; + bottom: 0; + right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; } + #fx-catalog-submit-btn.disabled { + background-color: #f1f1f1; + opacity: 1; + border-color: #333333; + color: #333333; } + +.fx-resume-item-selected { + position: relative; + border-top: 5px solid white; + border-bottom: 5px solid white; } + .fx-resume-item-selected .fx-resume-module-title { + display: inline-block; + width: 20%; + padding-left: 15px; } + .fx-resume-item-selected .fx-resume-module-title em { + font: normal normal 400 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + color: #2686ba; + font-size: 12px; + /* Not expected */ + position: absolute; + top: 0; } + .fx-resume-item-selected .fx-resume-module-list-holder { + display: inline-block; + max-width: 80%; + padding-right: 15px; } + .fx-resume-item-selected .fx-resume-module-list-holder .fx-resume-module-list { + display: inline-block; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + border: 1px solid #D2D0D0; } + +.fx-resume-obj-close { + display: inline-block; + height: 15px; + width: 15px; + background: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg") no-repeat -45px 0; + background-size: 150px 30px; + cursor: pointer; + position: relative; + top: 3px; } + +.fx-resume-list-obj { + display: inline-block; } + .fx-resume-list-obj .fx-resume-obj-value { + display: inline; + margin-right: 7px; } + +/* Fenix Section Switcher */ +.fx-section-switcher { + list-style: none; + padding-left: 0; + margin-bottom: 0; } + .fx-section-switcher > li { + margin-bottom: 10px; + display: inline-block; } + .fx-section-switcher > li > a { + padding: 0 10px; + color: #333333; + font-weight: 500; + font-size: 12px; + text-transform: uppercase; + position: relative; } + .fx-section-switcher > li > a:first-child { + padding-left: 0; } + .fx-section-switcher > li > a:hover, .fx-section-switcher > li > a:active, .fx-section-switcher > li > a:focus { + text-decoration: none; } + .fx-section-switcher > li.active > a:before { + content: ''; + position: absolute; + width: calc(100% - 20px); + height: 2px; + background-color: #2686ba; + left: 10px; + bottom: -2px; + pointer-events: none; } + .fx-section-switcher > li.active > a:first-child:before { + left: 0; + width: calc(100% - 10px); } + +/* Fenix - Sidebar Component */ +.bs-docs-sidebar.affix { + position: static; } + +.bs-docs-sidenav { + margin-bottom: 20px; + margin-top: 20px; } + +.bs-docs-sidebar .nav > li > a { + color: #333333; + display: block; + padding: 4px 20px; + cursor: pointer; + border-left: 1px solid transparent; } + +.bs-docs-sidebar .nav > li > a:hover, .bs-docs-sidebar .nav > li > a:focus { + background-color: transparent; + border-left: 1px solid #2686ba; + color: #2686ba; + text-decoration: none; } + +.bs-docs-sidebar .nav > .active > a, .bs-docs-sidebar .nav > .active:hover > a, .bs-docs-sidebar .nav > .active:focus > a { + background-color: transparent; + border-left: 1px solid #2686ba; + color: #2686ba; + font-weight: 700; } + +.bs-docs-sidebar .nav .nav { + display: none; + padding-bottom: 10px; } + +.bs-docs-sidebar .nav .nav > li > a { + padding-bottom: 1px; + padding-left: 30px; + padding-top: 1px; } + +@media (min-width: 768px) { + .bs-docs-sidebar { + padding-left: 20px; } } +@media (min-width: 992px) { + .bs-docs-sidebar .nav > .active > ul { + display: block; } + + .bs-docs-sidebar.affix, .bs-docs-sidebar.affix-bottom { + width: 213px; } + + .bs-docs-sidebar.affix { + position: fixed; + top: 80px; } + + .bs-docs-sidebar.affix-bottom { + position: absolute; } + + .bs-docs-sidebar.affix-bottom .bs-docs-sidenav, .bs-docs-sidebar.affix .bs-docs-sidenav { + margin-bottom: 0; + margin-top: 0; } } +@media (min-width: 1200px) { + .bs-docs-sidebar.affix-bottom, .bs-docs-sidebar.affix { + width: 263px; } } +/*! + * Start Bootstrap - Simple Sidebar HTML Template (http://startbootstrap.com) + * Code licensed under the Apache License v2.0. + * For details, see http://www.apache.org/licenses/LICENSE-2.0. + */ +/* Toggle Styles */ +#wrapper { + padding-left: 0; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; } + +#wrapper.toggled { + padding-left: 250px; } + +#sidebar-wrapper { + z-index: 1000; + position: fixed; + left: 250px; + width: 0; + height: 100%; + margin-left: -250px; + overflow-y: auto; + background: #000; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; } + +#wrapper.toggled #sidebar-wrapper { + width: 250px; } + +#page-content-wrapper { + width: 100%; + position: absolute; + padding: 15px; + overflow-x: hidden; } + +#wrapper.toggled #page-content-wrapper { + position: absolute; + margin-right: -250px; } + +/* Sidebar Styles */ +.sidebar-nav { + position: absolute; + top: 0; + width: 250px; + margin: 0; + padding: 0; + list-style: none; } + +.sidebar-nav li { + text-indent: 20px; + line-height: 40px; } + +.sidebar-nav li a { + display: block; + text-decoration: none; + color: #999999; } + +.sidebar-nav li a:hover { + text-decoration: none; + color: #fff; + background: rgba(255, 255, 255, 0.2); } + +.sidebar-nav li a:active, +.sidebar-nav li a:focus { + text-decoration: none; } + +.sidebar-nav > .sidebar-brand { + height: 65px; + font-size: 18px; + line-height: 60px; } + +.sidebar-nav > .sidebar-brand a { + color: #999999; } + +.sidebar-nav > .sidebar-brand a:hover { + color: #fff; + background: none; } + +@media (min-width: 768px) { + #wrapper { + padding-left: 250px; } + + #wrapper.toggled { + padding-left: 0; } + + #sidebar-wrapper { + width: 250px; } + + #wrapper.toggled #sidebar-wrapper { + width: 0; } + + #page-content-wrapper { + padding: 20px; + position: relative; } + + #wrapper.toggled #page-content-wrapper { + position: relative; + margin-right: 0; } } +/* Tabs component */ +.fx-tabs .nav-tabs { + border: 0; } + .fx-tabs .nav-tabs > li > a { + color: #333333; + border-color: transparent; } + .fx-tabs .nav-tabs > li > a:hover, .fx-tabs .nav-tabs > li > a:focus { + border-color: transparent; + background-color: transparent; + color: #2686ba; } + .fx-tabs .nav-tabs > li > a:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; + content: ''; + position: absolute; + width: 100%; + height: 2px; + background-color: #2686ba; + left: 0; + bottom: 5px; + pointer-events: none; + -ms-transform: scaleX(0); + -webkit-transform: scaleX(0); + transform: scaleX(0); } + .fx-tabs .nav-tabs > li.active > a { + color: #2686ba; } + .fx-tabs .nav-tabs > li.active > a:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; + -ms-transform: scaleX(0.8); + -webkit-transform: scaleX(0.8); + transform: scaleX(0.8); } + .fx-tabs .nav-tabs > li.active > a:hover, .fx-tabs .nav-tabs > li.active > a:focus { + border-color: transparent; + background-color: transparent; + color: #2686ba; } +.fx-tabs li { + margin: 12px 0; } + +/* Fenix - Top Menu Component */ +.navbar ul { + list-style: outside none none; + padding-left: 0; } + +.navbar .container { + position: relative; } + +.nav-pills li a { + color: #333333; } + +.navbar-brand { + background-position: 0 3px; + background-repeat: no-repeat; + background-size: 100% 100%; + display: block; } + +.navbar .lang_picker { + text-transform: uppercase; } + +.navbar .lang_picker li { + cursor: pointer; } + +.navbar .lang_picker li a, .navbar .lang_picker li a:hover { + text-align: center; + text-decoration: none; } + +.navbar .lang_picker li:last-child { + border-right: medium none; } + +/* Fenix Upload Component */ +.fx-uploader-container .fx-uploader-header { + padding: 10px 0; + border-bottom: 1px solid #D2D0D0; } +.fx-uploader-container #fx-uploader-input { + display: none; } +.fx-uploader-container .fx-widget-icons { + cursor: pointer; } + +.fx-uploader-item { + margin-top: 15px; + position: relative; } + .fx-uploader-item .uploader-item-header { + background-color: #f1f1f1; + padding: 15px; } + .fx-uploader-item .item-title { + display: inline-block; + font-weight: 300; + font-size: 16px; + margin-top: 0; } + .fx-uploader-item .file-type { + position: relative; + top: -2px; + left: 5px; + text-transform: uppercase; + font-weight: 300; } + .fx-uploader-item .file-description { + color: #999999; } .fx-uploader-item .fx-uploader-item-remove { position: absolute; - right: 15px; - top: 15px; - cursor: pointer; } - .fx-uploader-item .fx-uploader-item-list-container { - height: 20px; - overflow: hidden; - padding-bottom: 15px; - background-color: #f1f1f1; - border-top: 1px solid #D2D0D0; - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } - .fx-uploader-item .fx-uploader-item-list-container[data-status="error"] { - background-color: red; - color: white; } - .fx-uploader-item .fx-uploader-item-list-container[data-status="done"] { - background-color: green; - color: white; } - .fx-uploader-item .fx-uploader-item-list-container ul { - position: relative; - -webkit-transition: all 0.3s ease 0s; - -moz-transition: all 0.3s ease 0s; - -ms-transition: all 0.3s ease 0s; - -o-transition: all 0.3s ease 0s; - transition: all 0.3s ease 0s; } - .fx-uploader-item .fx-uploader-item-list-container ul li { - height: 20px; - padding: 0 15px; - line-height: 20px; } - .fx-uploader-item .fx-uploader-item-list-container ul li .step-icon { - margin-right: 5px; } + right: 15px; + top: 15px; + cursor: pointer; } + .fx-uploader-item .fx-uploader-item-list-container { + height: 20px; + overflow: hidden; + padding-bottom: 15px; + background-color: #f1f1f1; + border-top: 1px solid #D2D0D0; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + .fx-uploader-item .fx-uploader-item-list-container[data-status="error"] { + background-color: red; + color: white; } + .fx-uploader-item .fx-uploader-item-list-container[data-status="done"] { + background-color: green; + color: white; } + .fx-uploader-item .fx-uploader-item-list-container ul { + position: relative; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + .fx-uploader-item .fx-uploader-item-list-container ul li { + height: 20px; + padding: 0 15px; + line-height: 20px; } + .fx-uploader-item .fx-uploader-item-list-container ul li .step-icon { + margin-right: 5px; } + +/* Fenix - Well Component */ +.well { + background-color: transparent; + border: none; + -webkit-box-shadow: 0 0 0 white; + -moz-box-shadow: 0 0 0 white; + box-shadow: 0 0 0 white; } + +/* Fenix - Widgets Component */ +/* + +.fx-visualization-box{ + min-height: 450px; + padding: 22px 10px 10px 10px; + + [data-control="remove"]{ + position: relative; + top: -31px; + right: -5px; + color: $fenix-text; + cursor: pointer; + + + + &:hover, &:active, &:focus{ + text-decoration: none; + color: $fx-cool-blue; + } + + span.fx-widget-icons{ + font-size: 16px; + } + + } + + +} + + +.fx-olap-holder * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.fx-widget{ + + + + [data-role="pivot-container"] *{ + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + + + &.loading{ + + } + background-color: white; + padding: 5px 10px 10px 10px; + @include fx-border-radius($fx-border-radius); + border: 1px solid $fenix-hr; + border-bottom: 3px solid $fenix-hr; + position: relative; + + + .nav-tabs { + border-bottom: none; + + >li{ + + position: relative; + + >a{ + padding:6px 3px 6px 3px; + border-color: transparent; + cursor: pointer; + color: $fenix-text; + + + &:hover, &:active, &:focus, &:visited{ + border-color: transparent; + + background-color: transparent; + color: $fx-cool-blue; + } + + + + + } + + + + } + + + >li.active{ + + >a{ + + &:hover, &:active, &:focus, &:visited{ + border-color: transparent; + background-color: transparent; + } + + color: $fx-cool-blue; + + + } + + &:before{ + content: ''; + width: 100%; + height: 3px; + background-color: $fx-cool-blue; + position: absolute; + bottom:-7px; + } + + + + } + + + + + } + + + + +} + + +.fx-dataset-details-container{ + position: absolute; + top: 0; + right:10px; + background-color: white; + height: 35px; + width: calc(100% - 59px); + @include fx-border-radius($fx-border-radius); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border: 1px solid $fenix-hr; + padding: 3px 10px; + + + .fx-dataset-details{ + width: 100%; + display:inline-block; + text-transform: uppercase; + font-weight: 700; + font-size:11px; + color: $fx-secondary-color; + } + + +} + + + +.fx-widget:before{ + content: ""; + height: 1px; + background-color: $fenix-hr; + width: 100%; + position: absolute; + top: 42px; + left: 0px; +} + +.fx-widget-chart-container{ + position: relative; + width: 500px; + height: 350px; +} + + + +.fx-icon{ + width: 35px; + height: 35px; + display: inline-block; +} + + +.fx-handle{ + cursor: move; + position: absolute; + top: 0; + background-color: white; + height: 35px; + width: 40px; + @include fx-border-radius($fx-border-radius); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border: 1px solid $fenix-hr; + + &:before{ + content:''; + position: absolute; + @include fx-small-icons(-15px, 0); + top:3px; + left:12px; + } + + + +} + +.widget-grid-container{ + padding: 8px 10px; +} + +.tab-content{ + padding-top: 10px; +} + +.fx-widget-icons{ + font-size: 24px; +} + + +.small-icons-analysis{ + .pull-right{ + span{ + font-size: 18px; + position: relative; + top: -33px; + left: 5px; + } + } +}*/ +/* Fenix - Widgets Stack Component */ +#fx-widgets-stack { + z-index: 2 !important; } + +#fx-sessionstore-base { + overflow-x: hidden; + position: absolute; + width: 280px; } + +.fx-widgetstack-title-container { + height: 120px; } + +/* Panel */ +.extruder { + position: fixed; + cursor: default; + color: #333333; } + +.extruder .content { + display: none; } + +.extruder.right { + height: 100%; + overflow-x: hidden; } + .extruder.right .text { + width: 100% !important; + overflow: visible !important; + overflow-x: hidden !important; } + +.extruder-content { + border: 0 !important; + border-left: 1px solid #D2D0D0 !important; + background-color: rgba(255, 255, 255, 0.9) !important; } + +.extruder.right .ext_wrapper { + height: 100%; + right: 0; + top: 51px; + position: fixed !important; } + +.flap { + display: none; } + +.fx-closepanel-container { + border-bottom: 1px solid #2686ba; + padding: 5px 10px; } + .fx-closepanel-container .fx-widget-icons { + color: #2686ba; + margin-right: 5px; + cursor: pointer; } + .fx-closepanel-container #fx-ws-close-btn { + text-transform: uppercase; + color: #2686ba; + cursor: pointer; + line-height: 1; + display: inline-block; + -ms-transform: translate(0px, -6px); + -webkit-transform: translate(0px, -6px); + transform: translate(0px, -6px); } + +.ext_wrapper .content .text { + width: 100% !important; } + +#fx-sessionstore-title { + padding: 5px 10px; } + +#fx-sessionstore-ul-container { + position: relative; + overflow-x: hidden; } + +#fx-ws-list { + padding-left: 0px; } + +#fx-ws-list li { + list-style-type: none; + padding: 16px 16px 35px 16px; + position: relative; + border-bottom: 1px solid #2686ba; } + +.fx-sessionstore-item-title { + text-transform: uppercase; + font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + +.fx-sessionstore-item-info { + min-height: 50px; + padding-left: 70px; } + +.fx-sessionstore-item-movemetodesk { + float: left; + text-transform: uppercase; + font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + cursor: pointer; + margin-top: 10px; + position: relative; } + +.fx-sessionstore-item-removeme { + float: right; + text-transform: uppercase; + font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + cursor: pointer; + margin-top: 10px; + position: relative; } + +/* Vendor */ +/* Fenix - Facebook Patch */ +#fb-root { + display: none; } + +/* To fill the container and nothing else */ +.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe[style] { + width: 100% !important; } + +/* Fenix - Intro Js */ +.introjs-helperNumberLayer { + background: none; + color: white; + display: inline-block; + font: normal normal 500 14px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + height: 20px; + width: 20px; + line-height: 20px; + text-align: center; + background-color: #2686ba; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + -ms-border-radius: 100%; + border-radius: 100%; + -ms-transform: translate(0, -50%); + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; + border: 0; + padding: 0; + left: -25px; + top: 0; } + +.introjs-button:hover, .introjs-button:active, .introjs-button:focus { + text-shadow: none; + color: #2686ba; + text-decoration: none; } + +/* Fenix - JQwidgets */ +.jqx-widget { + font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + +.jqx-widget-content { + color: #333333; + text-shadow: none; + border-color: #D2D0D0; + background: white; } + +.jqx-widget-header, .jqx-grid .jqx-widget-header { + color: #333333; + text-shadow: none; + border-color: transparent; + background-color: #c3e2f3; + background-image: -moz-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -ms-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -o-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -webkit-gradient(linear, center top, center bottom, from(#c3e2f3), to(#c3e2f3)); + background-image: -webkit-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(to bottom, #c3e2f3, #c3e2f3); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-grid-column-menubutton, .jqx-widget.jqx-grid-column-menubutton { + border-color: transparent; } + +.jqx-grid-cell, .jqx-widget .jqx-grid-cell { + background-color: white; + text-shadow: none; + font-weight: inherit; + font-size: 12px; } + +.jqx-fill-state-normal { + color: #333333; + text-shadow: none; + border-color: transparent; + background-color: transparent; + background-image: -moz-linear-gradient(top, transparent, transparent); + background-image: -ms-linear-gradient(top, transparent, transparent); + background-image: -o-linear-gradient(top, transparent, transparent); + background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); + background-image: -webkit-linear-gradient(top, transparent, transparent); + background-image: linear-gradient(top, transparent, transparent); + background-image: linear-gradient(to bottom, transparent, transparent); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-button { + color: #333333; + text-shadow: none; + border-color: transparent; + background-color: transparent; + background-image: -moz-linear-gradient(top, transparent, transparent); + background-image: -ms-linear-gradient(top, transparent, transparent); + background-image: -o-linear-gradient(top, transparent, transparent); + background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); + background-image: -webkit-linear-gradient(top, transparent, transparent); + background-image: linear-gradient(top, transparent, transparent); + background-image: linear-gradient(to bottom, transparent, transparent); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-grid-selectionarea { + border-color: #D2D0D0; + background-color: #dddddd; } + +.jqx-widget .jqx-grid-cell-sort, .jqx-widget .jqx-grid-cell-filter, .jqx-widget .jqx-grid-cell-pinned, .jqx-grid-cell-sort, .jqx-grid-cell-filter, .jqx-grid-cell-pinned { + background-color: #999999; + color: #333333; + text-shadow: none; } + +.jqx-widget .jqx-grid-cell-alt, .jqx-widget .jqx-grid-cell-sort-alt, .jqx-widget .jqx-grid-cell-pinned-alt, .jqx-widget .jqx-grid-cell-filter-alt, .jqx-grid-cell-alt, .jqx-grid-cell-sort-alt, .jqx-grid-cell-filter-alt { + background-color: white; + color: #333333; + text-shadow: none; } + +.jqx-fill-state-hover, .jqx-widget .jqx-grid-cell-hover { + color: #333333; + text-shadow: none; + border-color: transparent; + background-color: #c3e2f3; + background-image: -moz-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -ms-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -o-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -webkit-gradient(linear, center top, center bottom, from(#c3e2f3), to(#c3e2f3)); + background-image: -webkit-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(to bottom, #c3e2f3, #c3e2f3); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-fill-state-pressed, .jqx-widget .jqx-grid-cell-selected { + color: #333333; + text-shadow: none; + border-color: #c3e2f3; + background-color: #c3e2f3; + background-image: -moz-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -ms-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -o-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: -webkit-gradient(linear, center top, center bottom, from(#c3e2f3), to(#c3e2f3)); + background-image: -webkit-linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(top, #c3e2f3, #c3e2f3); + background-image: linear-gradient(to bottom, #c3e2f3, #c3e2f3); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-switchbutton-label-on { + color: #333333; + text-shadow: none; + border-color: #333333; + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-tabs-title-selected-top, .jqx-tabs-selection-tracker-top { + color: #333333; + text-shadow: none; + border-color: #D2D0D0; + border-bottom: 1px solid white; + background-image: none; + background-color: white; } + +.jqx-tabs-title-selected-bottom, .jqx-tabs-selection-tracker-bottom { + color: #333333; + text-shadow: none; + border-color: #D2D0D0; + border-top: 1px solid white; + background-image: none; + background-color: white; } + +.jqx-splitter-splitbar-hover { + background: #D2D0D0; } + +.jqx-splitter-splitbar-vertical, .jqx-splitter-splitbar-horizontal, .jqx-slider-track-horizontal, .jqx-slider-track-vertical { + background: #D2D0D0; } + +.jqx-splitter-collapse-button-horizontal, .jqx-splitter-collapse-button-vertical, .jqx-slider-rangebar { + background: #dddddd; } + +.jqx-scrollbar-state-normal { + background-color: white; + border-color: transparent; } + +.jqx-grid-bottomright, .jqx-panel-bottomright, .jqx-listbox-bottomright { + background-color: white; } + +.jqx-scrollbar-thumb-state-normal { + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-thumb-state-normal-horizontal { + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-thumb-state-hover { + background-color: #999999; + background-image: -moz-linear-gradient(top, #999999, #999999); + background-image: -ms-linear-gradient(top, #999999, #999999); + background-image: -o-linear-gradient(top, #999999, #999999); + background-image: -webkit-gradient(linear, center top, center bottom, from(#999999), to(#999999)); + background-image: -webkit-linear-gradient(top, #999999, #999999); + background-image: linear-gradient(top, #999999, #999999); + background-image: linear-gradient(to bottom, #999999, #999999); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-thumb-state-hover-horizontal { + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-thumb-state-pressed { + border-color: #dddddd; + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-thumb-state-pressed-horizontal { + background-color: #dddddd; + background-image: -moz-linear-gradient(top, #dddddd, #dddddd); + background-image: -ms-linear-gradient(top, #dddddd, #dddddd); + background-image: -o-linear-gradient(top, #dddddd, #dddddd); + background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); + background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(top, #dddddd, #dddddd); + background-image: linear-gradient(to bottom, #dddddd, #dddddd); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-button-state-normal { + background-color: transparent; + background-image: -moz-linear-gradient(top, transparent, transparent); + background-image: -ms-linear-gradient(top, transparent, transparent); + background-image: -o-linear-gradient(top, transparent, transparent); + background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); + background-image: -webkit-linear-gradient(top, transparent, transparent); + background-image: linear-gradient(top, transparent, transparent); + background-image: linear-gradient(to bottom, transparent, transparent); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-button-state-hover { + background-color: transparent; + background-image: -moz-linear-gradient(top, transparent, transparent); + background-image: -ms-linear-gradient(top, transparent, transparent); + background-image: -o-linear-gradient(top, transparent, transparent); + background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); + background-image: -webkit-linear-gradient(top, transparent, transparent); + background-image: linear-gradient(top, transparent, transparent); + background-image: linear-gradient(to bottom, transparent, transparent); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-scrollbar-button-state-pressed { + background-color: transparent; + background-image: -moz-linear-gradient(top, transparent, transparent); + background-image: -ms-linear-gradient(top, transparent, transparent); + background-image: -o-linear-gradient(top, transparent, transparent); + background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); + background-image: -webkit-linear-gradient(top, transparent, transparent); + background-image: linear-gradient(top, transparent, transparent); + background-image: linear-gradient(to bottom, transparent, transparent); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; } + +.jqx-radiobutton-check-checked { + background: #333333; + width: 7px; + height: 7px; + margin-left: 2px; + margin-top: 2px; + border-width: 1px; + border-style: solid; } + +.jqx-rc-tl { + -moz-border-radius-topleft: 0; + -webkit-border-radius-topleft: 0; + border-radius-topleft: 0; } + +.jqx-rc-tr { + -moz-border-radius-topright: 0; + -webkit-border-radius-topright: 0; + border-radius-topright: 0; } + +.jqx-rc-bl { + -moz-border-radius-bottomleft: 0; + -webkit-border-radius-bottomleft: 0; + border-radius-bottomleft: 0; } + +.jqx-rc-br { + -moz-border-radius-bottomright: 0; + -webkit-border-radius-bottomright: 0; + border-radius-bottomright: 0; } + +.jqx-rc-t { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; } + +.jqx-rc-b { + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; } + +.jqx-rc-r { + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; } + +.jqx-rc-l { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; } + +.jqx-radiobutton-default, .jqx-radiobutton, .jqx-radiobutton-check-checked, .jqx-radiobutton-hover, .jqx-radiobutton-check-indeterminate, .jqx-radiobutton-check-indeterminate-disabled, .jqx-slider-button { + -moz-border-radius: 100% !important; + -webkit-border-radius: 100% !important; + border-radius: 100% !important; } + +.jqx-rc-all, .jqx-tooltip, .jqx-tooltip-text, .jqx-tooltip-main { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; } + +.jqx-menu-vertical { + background: white; } + +.jqx-widget .jqx-grid-column-header, .jqx-widget .jqx-grid-cell, .jqx-widget .jqx-grid-group-cell, .jqx-grid-cell { + border-color: #e5e5e5; } + +.jqx-tooltip, .jqx-tooltip-main { + color: #333333; + text-shadow: none; + border-color: #aaa; + background-color: #dddddd; } + +.jqx-combobox-content, .jqx-input { + color: #333333; + text-shadow: none; + border-color: #D2D0D0; + background-color: white; } + +.jqx-combobox-input { + color: #333333; + text-shadow: none; } + +.jqx-input-content { + color: #333333; + text-shadow: none; + background-color: white; } + +.jqx-fill-state-focus, .jqx-popup .jqx-fill-state-focus { + border-color: #333333; } + +.jqx-popup.jqx-listbox, .jqx-popup.jqx-calendar, .jqx-menu-dropdown, .jqx-popup.jqx-dropdownbutton-popup { + color: #333333; + text-shadow: none; + border-color: #333333; + background-color: white; } + +/* Fenix - Js tree */ +.jstree-default .jstree-search { + color: #333333; + font-weight: 300; + font-style: normal; } +.jstree-default .jstree-node:not(.jstree-open) { + position: relative; } + .jstree-default .jstree-node:not(.jstree-open) .jstree-wholerow { + height: 100%; } + +.jstree-default .jstree-themeicon { + display: none; + /* It hides folder icon */ } + +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-image: url("../../submodules/fenix-ui-common//css/img/treejs-32px.svg"); } + +.jstree-default .jstree-wholerow-clicked { + background: none; + background-color: #c3e2f3; } + +.jstree-default .jstree-wholerow-hovered { + background: none; + background-color: #c3e2f3; } + +.jstree-default .jstree-disabled.jstree-clicked { + background: none; + background-color: #c3e2f3; } + +.jstree-container-ul .jstree-anchor { + white-space: normal; + height: auto; + width: 90%; } +.jstree-container-ul [role="group"].jstree-children [role='treeitem'] { + position: relative; } + +li[role="treeitem"]:nth-child(odd) { + background-color: #f2f2f2 !important; } + +ul[role="group"] { + background-color: white; } + +/* Packery _ Fenix */ +/* clearfix */ +#fx-ana-result-container:after { + content: ' '; + display: block; + clear: both; } + +.fx-analysis-item { + width: 50%; + height: 450px; + padding: 22px 10px 10px 10px; + z-index: 200; + /* Veify correct z.index */ } + .fx-analysis-item.fit { + width: 100%; } + +.fx-analysis-item .fx-widget .tab-content { + height: 350px; + overflow-y: auto; + overflow-x: hidden; } + +.grid-sizer { + width: 50%; } + +/* Leaflet */ +/* Fenix Leaflet Import */ +/* Fenix Leaflet Zoom control 0.7.3*/ +/* Base */ +/* Default Styles */ +.container { + background-color: white; } + +.website-title { + font-size: 24px; + color: black; } + +.fit-height { + height: 100%; } + +/* Compare Result */ +.fixed-height { + height: 350px; } + +h1 { + color: #333; } + +h2 { + color: #2686ba; } + +.obj-box-header { + z-index: 1; + padding: 5px 15px; + border: 1px solid #C2C2C2; + background: #fafafa; + box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); + -webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); } + .obj-box-header .btn-default { + position: absolute; + right: 25px; + top: 6px; } + .obj-box-header h1 { + margin: 0; } + .obj-box-header p { + margin: 0; } + +.obj-box, .obj-box-radius10, .obj-box-title { + margin-top: 0; + position: relative; } + +.adam-entry-point { + position: relative; } + .adam-entry-point:nth-child(odd) .adam-entry-point-content:before { + content: ''; + display: block; + position: absolute; + bottom: 0; + width: 80%; + left: 10%; + height: 1px; + background-color: #dfdfdf; } + .adam-entry-point:nth-child(odd) .adam-entry-point-content:after { + content: ''; + display: block; + position: absolute; + right: 0; + width: 1px; + top: 10%; + height: 80%; + background-color: #dfdfdf; } + .adam-entry-point:nth-child(even) .adam-entry-point-content:before { + content: ''; + display: block; + position: absolute; + bottom: 0; + width: 80%; + left: 10%; + height: 1px; + background-color: #dfdfdf; } + .adam-entry-point:last-child .adam-entry-point-content { + margin-bottom: 100px; } + .adam-entry-point .adam-entry-point-content { + padding: 35px; } + .adam-entry-point h2 { + font-size: 16px; + color: #333333; } + .adam-entry-point p.title { + color: #ec6e00; + font-size: 28px; } + .adam-entry-point p.text-justify { + color: #999999; } -/* Fenix - Well Component */ -.well { +.tree-holder { + height: 150px; + overflow-y: auto; } + +.fx-arrow-time { + position: absolute; + top: 55px; + left: 0; + width: 100%; + display: block; } + .fx-arrow-time:before { + content: ''; + position: absolute; + top: 3px; + width: 100%; + height: 1px; + display: block; + background-color: #999999; } + .fx-arrow-time:after { + content: ''; + width: 0; + height: 0; + display: block; + right: -1px; + position: absolute; + border-style: solid; + border-width: 4px 0 4px 8px; + border-color: transparent transparent transparent #999999; } + +#browse-top-link-fixed { + position: fixed; + left: -150px; + bottom: 100px; + opacity: 0; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + +#browse-top-link-fixed.affix { + left: 15px; + opacity: 1; + z-index: 2; } + +a { + color: #2686ba; } + a:focus { + outline: none; } + a:active { + outline: none; } + +.dropdown-menu > li > a { + font-weight: 300; + color: #333333; } + +h1 { + font: normal normal 300 18px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + color: #2686ba; } + +h2 { + font: normal normal 300 16px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + color: #487c98; } + +h3 { + font: normal normal 500 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + color: #5e7582; } + +h4 { + font: normal normal 300 11px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; + color: #707070; } + +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { + font-family: Roboto; + font-weight: 700; + color: #2686ba; + text-transform: uppercase; + font-size: 12px; } + +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +/* BreadCrumbs */ +#breadcumb_container { + height: 35px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.breadcrumb { background-color: transparent; - border: none; - -webkit-box-shadow: 0 0 0 white; - -moz-box-shadow: 0 0 0 white; - box-shadow: 0 0 0 white; } + font-size: 12px; + font-weight: bold; + padding: 8px 0; + margin-bottom: 0; } + .breadcrumb li a { + color: #333333; + text-transform: uppercase; } -/* Fenix - Widgets Component */ -.fx-visualization-box { - min-height: 450px; - padding: 22px 10px 10px 10px; } - .fx-visualization-box [data-control="remove"] { +.breadcrumb > li + li:before { + content: '|'; + color: #333333; } + +/* FAO Like Footer */ +footer.fao-footer { + background-color: #0d6cac; + padding-top: 15px; + padding-bottom: 15px; + color: white; } + footer.fao-footer li { + margin-bottom: 10px; } + footer.fao-footer h4 { + color: white; + font-size: 14px; } + footer.fao-footer a:link, + footer.fao-footer a:visited, + footer.fao-footer a:hover, + footer.fao-footer a:focus, + footer.fao-footer a:active { + color: white; } + footer.fao-footer .device-image { + padding-right: 10px; + float: left; } + footer.fao-footer .fao-social-holder { + display: inline-block; + width: 19%; + padding: 3px 2px; } + +/*//////////////////////////////////////////// Navbar Media queries */ +/* Ipad */ +@media (min-width: 768px) and (max-width: 990px) { + footer.fao-footer .device-image { + margin-bottom: 10px; } + footer.fao-footer .fao-social-holder { + display: inline-block; + width: 20%; + padding: 3px 2px; } } +/* Iphone */ +@media (max-width: 767px) { + footer.fao-footer { + text-align: center; } + footer.fao-footer .device-image { + margin-bottom: 10px; + float: none; } + footer.fao-footer .fao-social-holder { + display: inline-block; + width: 15%; + margin: 3px; } + + /* End of the iPhone media query*/ } +/* FAO Like Top Menu */ +/* Bootstrap reset */ +.navbar-brand { + display: none; } + +/* Item on the right fix */ +.fx-menu .navbar-nav.navbar-right { + margin: 0; } + .fx-menu .navbar-nav.navbar-right li a { + border-right: 0; } + +/* Header */ +.container.fao-header { + height: 90px; + position: relative; + background-color: #0d6cac; } + .container.fao-header .fao-logo { + width: 300px; + height: auto; position: relative; - top: -18px; - right: -5px; - color: #666666; - cursor: pointer; } - .fx-visualization-box [data-control="remove"]:hover, .fx-visualization-box [data-control="remove"]:active, .fx-visualization-box [data-control="remove"]:focus { - text-decoration: none; - color: #0f6eae; } - .fx-visualization-box [data-control="remove"] span.fx-widget-icons { - font-size: 16px; } + top: 5px; } + .container.fao-header ul li { + border-right: 1px solid white; } + .container.fao-header ul li:last-child { + border-right: none; } + .container.fao-header ul li a { + color: white; } + .container.fao-header ul li a:hover { + text-decoration: none; } -.fx-olap-holder * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; } +/* Menu */ +.topmenu { + padding-top: 30px; } + .topmenu .navbar-collapse { + background-color: white; + background-image: -moz-linear-gradient(top, white, #efefef); + background-image: -ms-linear-gradient(top, white, #efefef); + background-image: -o-linear-gradient(top, white, #efefef); + background-image: -webkit-gradient(linear, center top, center bottom, from(white), to(#efefef)); + background-image: -webkit-linear-gradient(top, white, #efefef); + background-image: linear-gradient(top, white, #efefef); + background-image: linear-gradient(to bottom, white, #efefef); + -moz-background-clip: padding; + background-clip: padding-box; + -webkit-background-clip: padding-box; + background-repeat: no-repeat; + border: 1px solid #D2D0D0; } -.fx-widget { - background-color: white; - padding: 5px 10px 10px 10px; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border: 1px solid #D2D0D0; - border-bottom: 3px solid #D2D0D0; - position: relative; } - .fx-widget [data-role="pivot-container"] * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; } - .fx-widget .nav-tabs { - border-bottom: none; } - .fx-widget .nav-tabs > li { - position: relative; } - .fx-widget .nav-tabs > li > a { - padding: 3px 3px 6px 3px; - border-color: transparent; - cursor: pointer; - color: #666666; } - .fx-widget .nav-tabs > li > a:hover, .fx-widget .nav-tabs > li > a:active, .fx-widget .nav-tabs > li > a:focus, .fx-widget .nav-tabs > li > a:visited { - border-color: transparent; - background-color: transparent; - color: #0f6eae; } - .fx-widget .nav-tabs > li.active > a { - color: #0f6eae; } - .fx-widget .nav-tabs > li.active > a:hover, .fx-widget .nav-tabs > li.active > a:active, .fx-widget .nav-tabs > li.active > a:focus, .fx-widget .nav-tabs > li.active > a:visited { - border-color: transparent; - background-color: transparent; } - .fx-widget .nav-tabs > li.active:before { - content: ''; - width: 100%; - height: 3px; - background-color: #0f6eae; - position: absolute; - bottom: -7px; } +.topmenu-buttons-holder { + padding-left: 0; + padding-right: 0; } + +.navbar-default { + background-color: transparent; + min-height: 40px; + margin-bottom: 0; } + .navbar-default .navbar-nav > li { + /* Home icon as fao website */ } + .navbar-default .navbar-nav > li > a { + height: 40px; + overflow: hidden; + padding-bottom: 10px; + padding-top: 10px; + border-right: 1px solid #D2D0D0; } + .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + color: #ec6e00; + background-color: white; } + .navbar-default .navbar-nav > li.active a, + .navbar-default .navbar-nav > li.active a:link, + .navbar-default .navbar-nav > li.active a:visited, + .navbar-default .navbar-nav > li.active a:hover, + .navbar-default .navbar-nav > li.active a:focus, + .navbar-default .navbar-nav > li.active a:active { + border-bottom-color: transparent; + color: #ec6e00; } + .navbar-default .navbar-nav > li.home-menu-item { + width: 40px; } + .navbar-default .navbar-nav > li.home-menu-item.active a { + background-image: url(../../src/images/home-h.png); } + .navbar-default .navbar-nav > li.home-menu-item a { + background-image: url(../../src/images/home.png); + background-size: 20px 16px; + background-position: 50% 50%; + background-repeat: no-repeat; } + .navbar-default .navbar-nav > li.home-menu-item a:hover, .navbar-default .navbar-nav > li.home-menu-item a:focus { + background-image: url(../../src/images/home-h.png); } + +/* Open/Close button in mobile mode */ +.navbar-default .navbar-toggle { + border-color: transparent; } + .navbar-default .navbar-toggle:link, .navbar-default .navbar-toggle:visited, .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus, .navbar-default .navbar-toggle:active { + background-color: transparent; } + +.navbar-collapse { + border-top: 0; } + .navbar-collapse .navbar-nav { + margin-top: 0; } + +/*//////////////////////////////////////////// Navbar Media queries */ +/* Ipad */ +/* Iphone */ +@media (max-width: 767px) { + .container.fao-header { + height: 140px; } + .container.fao-header .fao-header-menu { + margin-top: 15px; + text-align: center; + line-height: 20px; } + .container.fao-header .fao-header-menu ul li a { + /* Expand the item space in the mobile version */ + margin: 5px; } + + .topmenu { + padding-top: 30px; } + .topmenu .navbar-collapse { + background: none; + background-color: white; + border-color: transparent; } + + .navbar-default .navbar-nav > li { + /* Home icon as fao website */ } + .navbar-default .navbar-nav > li > a { + border-right-color: transparent; } + .navbar-default .navbar-nav > li.active a, + .navbar-default .navbar-nav > li.active a:link, + .navbar-default .navbar-nav > li.active a:visited, + .navbar-default .navbar-nav > li.active a:hover, + .navbar-default .navbar-nav > li.active a:focus, + .navbar-default .navbar-nav > li.active a:active { + border-bottom-color: transparent; + color: #ec6e00 !important; } + .navbar-default .navbar-nav > li.home-menu-item { + width: 100%; } + .navbar-default .navbar-nav > li.home-menu-item a { + background-position: 15px 50%; } + + /* End of the iPhone media query*/ } +/*Form */ +.form-control { + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; + outline: none; + background-color: #ededed; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-color: transparent; + -webkit-border-radius: 5; + -moz-border-radius: 5; + -ms-border-radius: 5; + border-radius: 5; + font-weight: 500; + padding: 3px 12px; + font-size: 12px; + height: 28px; } + .form-control:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: none; + border-color: #2ab896; } + +.input-group-btn .btn { + border-left: 0; } + .input-group-btn .btn:hover { + border-color: transparent; } + +/* Indicator Icon Definition */ +.indicators-icons { + font-size: 20px; + position: absolute; } + +/* DASHBOARD */ +.display-box-header { + font-size: 14px; } + +/* Jstree Mood */ +/* Preload CSS */ +.loading { + display: inline-block; + border: 0 solid rgba(215, 215, 215, 0.25); + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; } + +.loading:before { + content: ''; + display: block; + border: 0 solid transparent; + border-top-color: #bebebe; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; + -webkit-animation: loading 1s ease infinite; + -moz-animation: loading 1s ease infinite; + -ms-animation: loading 1s ease infinite; + -o-animation: loading 1s ease infinite; + animation: loading 1s ease infinite; } + +/***************************************/ +/* LOADING */ +/***************************************/ +.loading-16 { + width: 12px; + height: 12px; + border-width: 2px; } + +.loading-16:before { + width: 12px; + height: 12px; + border-width: 2px; + margin: -2px 0 0 -2px; } + +.loading-24 { + width: 18px; + height: 18px; + border-width: 3px; } + +.loading-24:before { + width: 18px; + height: 18px; + border-width: 3px; + margin: -3px 0 0 -3px; } + +.loading-32 { + width: 26px; + height: 26px; + border-width: 4px; } + +.loading-32:before { + width: 26px; + height: 26px; + border-width: 4px; + margin: -4px 0 0 -4px; } + +.loading-48 { + width: 38px; + height: 38px; + border-width: 5px; } + +.loading-48:before { + width: 38px; + height: 38px; + border-width: 5px; + margin: -5px 0 0 -5px; } + +@-webkit-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); } } +@-moz-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); } } +@-ms-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); } } +@-o-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); } } +@keyframes loading { + 100% { + transform: rotate(360deg); } } +/* Typo3 */ +/* Typo3 FAO Compatibility */ +body { + color: black; + background: none; + background-color: #f0f0f0; } + +a:-webkit-any-link { + cursor: pointer; } + +footer h4 { + color: white; } + +#content #maincontent .fx-sandbox { + padding: 0 5px; + font-size: 11px !important; } + #content #maincontent .fx-sandbox .compare-wrapper { + border-color: #d2d0d0; } + #content #maincontent .fx-sandbox div.main-internal { + padding: 0; } + #content #maincontent .fx-sandbox h1 { + font-size: 14px; + margin-bottom: 0; } + #content #maincontent .fx-sandbox h2 { + border-color: transparent; + margin-bottom: 0px; + margin-top: 10px; + font-size: 12px; } + #content #maincontent .fx-sandbox h1.flude-analysis-title { + color: black; + font-size: 18px; } + #content #maincontent .fx-sandbox .flude-analysis-title-results { + margin-top: 0; + color: #5191C8; + margin-bottom: 10px; } + #content #maincontent .fx-sandbox .obj-box-header { + height: 30px; + padding: 6px 15px; } + #content #maincontent .fx-sandbox .obj-box-header .whole-btn { + top: 2px; + color: white; } + #content #maincontent .fx-sandbox #flude-download-btn { + color: white; } + #content #maincontent .fx-sandbox .highcharts-legend-item text { + font-size: 11px !important; } + #content #maincontent .fx-sandbox .flude-topic-selector { + width: calc(100% - 250px) !important; } -.fx-dataset-details-container { - position: absolute; - top: 0; - right: 10px; - background-color: white; - height: 35px; - width: calc(100% - 59px); - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - border: 1px solid #D2D0D0; - padding: 3px 10px; } - .fx-dataset-details-container .fx-dataset-details { +/* Pages */ +/* Home */ +[data-page="home"] .breadcrumb { + opacity: 0; } + +.welcome-container { + position: relative; } + .welcome-container img { width: 100%; - display: inline-block; - text-transform: uppercase; - font-weight: 700; - font-size: 11px; - color: #3e657f; } + height: auto; } + .welcome-container .welcome-content { + position: absolute; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); + padding: 25px 25px 50px 25px; } + .welcome-container .welcome-content h1 { + font-size: 32px; + color: white; } + .welcome-container .welcome-content p { + font-size: 16px; + color: white; } -.fx-widget:before { - content: ""; - height: 1px; - background-color: #D2D0D0; - width: 100%; - position: absolute; - top: 42px; - left: 0px; } +#side-faostat { + display: none; } -.fx-widget-chart-container { - position: relative; - width: 500px; - height: 350px; } +.factsheets { + margin-bottom: 15px; } + .factsheets h1 { + margin-top: 0; } + .factsheets .ad-home-select { + width: 100%; } -.fx-icon { - width: 35px; - height: 35px; +.home-topic-container { + text-align: center; + border-right: 1px solid #eeeeee; + padding: 0 30px; + margin: 25px 0; } + .home-topic-container h2 { + margin-top: 0; } + .home-topic-container:last-child { + border: none; } + +/* Analyze Data */ +.compare-title { display: inline-block; } -.fx-handle { - cursor: move; - position: absolute; - top: 0; - background-color: white; - height: 35px; - width: 40px; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - border: 1px solid #D2D0D0; } - .fx-handle:before { - content: ''; - position: absolute; - height: 15px; - width: 15px; - background: url("../../submodules/fenix-ui-common/css/img/fenix-catalog-sprite-small.svg") no-repeat -15px 0; - background-size: 150px 30px; - top: 3px; - left: 12px; } +.analyze-compare-selectors .tab-content { + padding-top: 0; } +.analyze-compare-selectors .fx-tabs .nav-tabs > li { + margin: 0; + margin-bottom: 5px; } +.analyze-compare-selectors .first-row { + border-top-color: transparent; } +.analyze-compare-selectors .col-sm-height { + border-bottom: 1px solid #eeeeee; + border-right-color: transparent; } + .analyze-compare-selectors .col-sm-height:nth-child(3) { + border-right-color: transparent; } +.analyze-compare-selectors [data-role="clear"] { + margin-bottom: 15px; } +.analyze-compare-selectors .col-year-container { + padding-bottom: 15px; } -.widget-grid-container { - padding: 8px 10px; } +.fx-tabs .nav-tabs { + border-color: transparent; } -.tab-content { - padding-top: 10px; } +.selector-content { + margin-bottom: 10px; } + .selector-content [data-role="filter"] { + margin-bottom: 7px; } -.fx-widget-icons { - font-size: 24px; } +[data-selector="country-country"] .selector-content, [data-selector="country-region"] .selector-content, [data-selector="regional-aggregation"] .selector-content { + margin-top: 0; } -/* Fenix - Widgets Stack Component */ -#fx-widgets-stack { - z-index: 2 !important; } +[data-selector="delivery"] .selector-content, [data-selector="sector"] .selector-content, [data-selector="sub-sector"] .selector-content { + margin-top: 10px; } -#fx-sessionstore-base { - overflow-x: hidden; - position: absolute; - width: 280px; } +.year-select { + font-size: 24px; + position: relative; + top: 47px; + left: 10px; + color: #999999; } -.fx-widgetstack-title-container { - height: 120px; } +.compare-collapse-btn { + color: #333333; + cursor: pointer; + margin-left: 15px; } + .compare-collapse-btn span { + font-size: 18px; + margin-left: 5px; + position: relative; + top: 3px; } + .compare-collapse-btn:hover { + color: #333333; + text-decoration: none; } -/* Panel */ -.extruder { - position: fixed; - cursor: default; - color: #666666; } +.collapse-bar { + margin-top: 20px; } + .collapse-bar .toggle-wrapper { + margin-top: 4px; } -.extruder .content { - display: none; } +.compare-selector { + position: relative; } + .compare-selector:before { + content: ''; + display: block; + position: absolute; + top: -1px; + left: -1px; + width: calc(100% + 2px); + height: calc(100% + 2px); + border-style: solid; + border-width: 0; + border-color: #91cae8; + pointer-events: none; } + .compare-selector.selector-focused:before { + border-width: 2px; } + +.selector-mandatory:after { + content: 'MANDATORY'; + position: relative; + bottom: 33px; + font-size: 10px; + color: red; } -.extruder.right { - height: 100%; - overflow-x: hidden; } - .extruder.right .text { - width: 100% !important; - overflow: visible !important; - overflow-x: hidden !important; } +/* DANI */ +.fx-result { + position: relative; } + .fx-result [data-content] { + display: none; } + .fx-result [data-content] .loading { + position: absolute; + left: 50%; + top: 45%; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } + .fx-result [data-content] .status-label { + position: absolute; + left: 50%; + top: 50%; + text-align: center; + -ms-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #bebebe; + font-size: 16px; } + .fx-result[data-status="ready"] [data-content="ready"] { + display: block; } + .fx-result[data-status="error"] [data-content="error"] { + display: block; } + .fx-result[data-status="loading"] [data-content="loading"] { + display: block; } + .fx-result[data-status="empty"] [data-content="empty"] { + display: block; } -.extruder-content { - border: 0 !important; - border-left: 1px solid #D2D0D0 !important; - background-color: rgba(255, 255, 255, 0.9) !important; } +[data-content="ready"] .tab-content { + height: 380px !important; } +[data-content="ready"]:before { + content: ""; + height: 1px; + background-color: #D2D0D0; + width: 100%; + position: absolute; + top: 42px; + left: 0px; } +[data-content="ready"] .tab-content { + margin-top: 8px; } + [data-content="ready"] .tab-content [data-container="table"] .gt-grid { + height: 290px !important; } + [data-content="ready"] .tab-content [data-container="table"] .gt-grid .gt-viewport { + height: 250px !important; } + [data-content="ready"] .tab-content [data-container="table"] .gt-grid .gt-viewport .gt-body-div { + height: 225px !important; } + [data-content="ready"] .tab-content .selection-info { + margin-top: 10px; } -.extruder.right .ext_wrapper { - height: 100%; - right: 0; - top: 51px; - position: fixed !important; } +.small-icons-analysis .fx-widget-icons.icojam_download_1 { + position: absolute; + top: -26px; + left: auto; + right: 15px; } -.flap { - display: none; } +.fx-analysis-item { + padding: 22px 0 0 0; + margin-bottom: 25px; } -.fx-closepanel-container { - border-bottom: 1px solid #0f6eae; - padding: 5px 10px; } - .fx-closepanel-container .fx-widget-icons { - color: #0f6eae; - margin-right: 5px; +.fx-dataset-details-container { + right: 0; + width: 100%; } + .fx-dataset-details-container .fx-widget-icons { + position: absolute; + font-size: 18px; + right: 6px; + top: 1px; cursor: pointer; } - .fx-closepanel-container #fx-ws-close-btn { - text-transform: uppercase; - color: #0f6eae; - cursor: pointer; - line-height: 1; - display: inline-block; - -ms-transform: translate(0px, -6px); - -webkit-transform: translate(0px, -6px); - transform: translate(0px, -6px); } -.ext_wrapper .content .text { - width: 100% !important; } +/* FINE DANI*/ +[data-container="chart"] [data-role="content"] { + height: 100%; } -#fx-sessionstore-title { - padding: 5px 10px; } +.analyze-compare-results .fx-widget:before { + display: none; } -#fx-sessionstore-ul-container { - position: relative; - overflow-x: hidden; } +/* Extra small devices (phones, less than 768px) */ +/* No media query since this is the default in Bootstrap */ +/* Small devices (tablets, 768px and up) */ +@media (min-width: 768px) { + .analyze-compare-selectors .first-row { + border-top: 1px solid #eeeeee; } + .analyze-compare-selectors .col-sm-height { + border-right: 1px solid #eeeeee; } + .analyze-compare-selectors .col-sm-height:nth-child(3) { + border-right-color: transparent; } } +/* Medium devices (desktops, 992px and up) */ +/* Large devices (large desktops, 1200px and up) */ +/* Browse Data */ +#fx-filter-grid_filter-browse.container-fluid { + padding-left: 0; + padding-right: 0; } + #fx-filter-grid_filter-browse.container-fluid .fx-filter-grid-module { + padding-left: 0; + padding-right: 0; } -#fx-ws-list { - padding-left: 0px; } +.fx-filter-range-from-holder { + width: 40%; + float: left; } -#fx-ws-list li { - list-style-type: none; - padding: 16px 16px 35px 16px; +.filter-container .fx-arrow-time { position: relative; - border-bottom: 1px solid #0f6eae; } + display: block; + width: 10%; + margin: 0 5%; + top: 25px; + height: 5px; + float: left; } -.fx-sessionstore-item-title { - text-transform: uppercase; - font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +.fx-filter-range-to-holder { + width: 40%; + float: left; } -.fx-sessionstore-item-info { - min-height: 50px; - padding-left: 70px; } +.fx-title-bar { + background-color: white; + padding-top: 10px; + min-height: 60px; } -.fx-sessionstore-item-movemetodesk { - float: left; - text-transform: uppercase; - font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - cursor: pointer; - margin-top: 10px; - position: relative; } +#fx-title { + padding-left: 15px; } -.fx-sessionstore-item-removeme { - float: right; - text-transform: uppercase; - font: normal normal 700 10px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - cursor: pointer; - margin-top: 10px; - position: relative; } +.fx-filter-icon { + padding-left: 5px; } -/* Vendor */ -/* Fenix - Facebook Patch */ -#fb-root { - display: none; } +.current-sel-element:after { + content: ' /'; + color: #999; + position: relative; + right: -3px; } -/* To fill the container and nothing else */ -.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe[style] { - width: 100% !important; } +.indicator-name .name { + padding-left: 30px; } -/* Fenix - Intro Js */ -.introjs-helperNumberLayer { - background: none; - color: white; - display: inline-block; - font: normal normal 500 14px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; - height: 20px; - width: 20px; - line-height: 20px; - text-align: center; - background-color: #0f6eae; - -webkit-border-radius: 100%; - -moz-border-radius: 100%; - -ms-border-radius: 100%; - border-radius: 100%; - -ms-transform: translate(0, -50%); - -webkit-transform: translate(0, -50%); - transform: translate(0, -50%); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - text-shadow: none; - border: 0; - padding: 0; - left: -25px; - top: 0; } +.indicator-value { + font-weight: bold; + font-size: 18px; + color: #aab5b7; + padding-left: 0; } -.introjs-button:hover, .introjs-button:active, .introjs-button:focus { - text-shadow: none; - color: #0f6eae; - text-decoration: none; } +.adam-entry-point-content .anchor { + position: relative; + left: 2px; } + +/* Fenix Common CSS */ +/*#0076ff*/ +/* Boostrap Queries */ +/* Fenix Typography */ +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +/* Tabs component */ +.fx-tabs .nav-tabs { + border: 0; } + .fx-tabs .nav-tabs > li > a { + color: #333; + border-color: transparent; } + .fx-tabs .nav-tabs > li > a:hover, .fx-tabs .nav-tabs > li > a:focus { + border-color: transparent; + background-color: transparent; + color: #0076ff; } + .fx-tabs .nav-tabs > li > a:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; + content: ''; + position: absolute; + width: 100%; + height: 2px; + background-color: #0076ff; + left: 0; + bottom: 5px; + pointer-events: none; + -ms-transform: scaleX(0); + -webkit-transform: scaleX(0); + transform: scaleX(0); } + .fx-tabs .nav-tabs > li.active > a { + color: #0076ff; } + .fx-tabs .nav-tabs > li.active > a:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; + -ms-transform: scaleX(0.8); + -webkit-transform: scaleX(0.8); + transform: scaleX(0.8); } + .fx-tabs .nav-tabs > li.active > a:hover, .fx-tabs .nav-tabs > li.active > a:focus { + border-color: transparent; + background-color: transparent; + color: #0076ff; } +.fx-tabs li { + margin: 12px 0; } -/* Fenix - JQwidgets */ -.jqx-widget { - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } +/* Fenix - Buttons Component */ +/** avoid dotted lines when clicking on button**/ +input[type="button"] { + outline: none; } -.jqx-widget-content { - color: #666666; - text-shadow: none; - border-color: #D2D0D0; - background: white; } +button:focus { + outline: 0; + outline: none; } -.jqx-widget-header, .jqx-grid .jqx-widget-header { - color: #666666; - text-shadow: none; - border-color: transparent; - background-color: #9dd2f7; - background-image: -moz-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -ms-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -o-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -webkit-gradient(linear, center top, center bottom, from(#9dd2f7), to(#9dd2f7)); - background-image: -webkit-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(to bottom, #9dd2f7, #9dd2f7); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +button:active { + outline: 0; + outline: none; } -.jqx-grid-column-menubutton, .jqx-widget.jqx-grid-column-menubutton { - border-color: transparent; } +.btn:focus, .btn:active, .btn:active:focus { + outline: none; } -.jqx-grid-cell, .jqx-widget .jqx-grid-cell { - background-color: white; - text-shadow: none; - font-weight: inherit; - font-size: 12px; } +input[type="button"]::-moz-focus-inner { + border: 0; } -.jqx-fill-state-normal { - color: #666666; - text-shadow: none; +/** end of **/ +.btn-round { + padding: 3px; + height: 24px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; } + .btn-round:last-child:not(:first-child), .btn-round:not(:first-child) { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; } + +/* Visualization Box btns */ +.btn-default.meta-btn { + background-color: #999999; + font-size: 11px; + color: white; + padding: 1px 5px; border-color: transparent; - background-color: transparent; - background-image: -moz-linear-gradient(top, transparent, transparent); - background-image: -ms-linear-gradient(top, transparent, transparent); - background-image: -o-linear-gradient(top, transparent, transparent); - background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); - background-image: -webkit-linear-gradient(top, transparent, transparent); - background-image: linear-gradient(top, transparent, transparent); - background-image: linear-gradient(to bottom, transparent, transparent); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; } + .btn-default.meta-btn:hover { + background-color: #b3b3b3; + border-color: transparent; } -.jqx-button { - color: #666666; - text-shadow: none; - border-color: transparent; - background-color: transparent; - background-image: -moz-linear-gradient(top, transparent, transparent); - background-image: -ms-linear-gradient(top, transparent, transparent); - background-image: -o-linear-gradient(top, transparent, transparent); - background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); - background-image: -webkit-linear-gradient(top, transparent, transparent); - background-image: linear-gradient(top, transparent, transparent); - background-image: linear-gradient(to bottom, transparent, transparent); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +/* Fenix Icons */ +.fx-icon, [data-selector-time] [data-action="previous"] span, [data-selector-time] [data-action="next"] span { + height: 15px; + width: 15px; + display: inline-block; + background-image: url("../../submodules/fenix-ui-common//css/img/fenix-catalog-sprite-small.svg"); + background-repeat: no-repeat; + background-size: 150px 30px; } -.jqx-grid-selectionarea { - border-color: #D2D0D0; - background-color: #dddddd; } +.fx-icon-close { + background-position: 0 -15px; } -.jqx-widget .jqx-grid-cell-sort, .jqx-widget .jqx-grid-cell-filter, .jqx-widget .jqx-grid-cell-pinned, .jqx-grid-cell-sort, .jqx-grid-cell-filter, .jqx-grid-cell-pinned { - background-color: #999999; - color: #666666; - text-shadow: none; } +/* Fenix - Js tree */ +.jstree-default .jstree-search { + color: #333; + font-weight: 300; + font-style: normal; } +.jstree-default .jstree-node:not(.jstree-open) { + position: relative; } + .jstree-default .jstree-node:not(.jstree-open) .jstree-wholerow { + height: 100%; } -.jqx-widget .jqx-grid-cell-alt, .jqx-widget .jqx-grid-cell-sort-alt, .jqx-widget .jqx-grid-cell-pinned-alt, .jqx-widget .jqx-grid-cell-filter-alt, .jqx-grid-cell-alt, .jqx-grid-cell-sort-alt, .jqx-grid-cell-filter-alt { - background-color: white; - color: #666666; - text-shadow: none; } +.jstree-default .jstree-themeicon { + display: none; + /* It hides folder icon */ } -.jqx-fill-state-hover, .jqx-widget .jqx-grid-cell-hover { - color: #666666; - text-shadow: none; - border-color: transparent; - background-color: #9dd2f7; - background-image: -moz-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -ms-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -o-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -webkit-gradient(linear, center top, center bottom, from(#9dd2f7), to(#9dd2f7)); - background-image: -webkit-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(to bottom, #9dd2f7, #9dd2f7); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +.jstree-default .jstree-node, +.jstree-default .jstree-icon { + background-image: url("../../submodules/fenix-ui-common//css/img/treejs-32px.svg"); } -.jqx-fill-state-pressed, .jqx-widget .jqx-grid-cell-selected { - color: #666666; - text-shadow: none; - border-color: #9dd2f7; - background-color: #9dd2f7; - background-image: -moz-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -ms-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -o-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: -webkit-gradient(linear, center top, center bottom, from(#9dd2f7), to(#9dd2f7)); - background-image: -webkit-linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(top, #9dd2f7, #9dd2f7); - background-image: linear-gradient(to bottom, #9dd2f7, #9dd2f7); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +.jstree-default .jstree-wholerow-clicked { + background: none; + background-color: #cce4ff; } -.jqx-switchbutton-label-on { - color: #666666; - text-shadow: none; - border-color: #666666; - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +.jstree-default .jstree-wholerow-hovered { + background: none; + background-color: #e6f1ff; } -.jqx-tabs-title-selected-top, .jqx-tabs-selection-tracker-top { - color: #666666; - text-shadow: none; - border-color: #D2D0D0; - border-bottom: 1px solid white; - background-image: none; - background-color: white; } +.jstree-default .jstree-disabled.jstree-clicked { + background: none; + background-color: #cce4ff; } -.jqx-tabs-title-selected-bottom, .jqx-tabs-selection-tracker-bottom { - color: #666666; - text-shadow: none; - border-color: #D2D0D0; - border-top: 1px solid white; - background-image: none; +.jstree-container-ul .jstree-anchor { + white-space: normal; + height: auto; + width: 90%; } +.jstree-container-ul [role="group"].jstree-children [role='treeitem'] { + position: relative; } + +li[role="treeitem"]:nth-child(odd) { + background-color: #f2f2f2 !important; } + +ul[role="group"] { background-color: white; } -.jqx-splitter-splitbar-hover { - background: #D2D0D0; } +/* Radio Buttons */ +input[type="radio"] { + display: none; } -.jqx-splitter-splitbar-vertical, .jqx-splitter-splitbar-horizontal, .jqx-slider-track-horizontal, .jqx-slider-track-vertical { - background: #D2D0D0; } +input[type="radio"] + label { + cursor: pointer; + margin: 0 7px; + font-weight: normal; } + input[type="radio"] + label:before { + content: ''; + display: inline-block; + height: 15px; + width: 15px; + background-color: #bdbdbd; + -webkit-border-radius: 100%; + -moz-border-radius: 100%; + -ms-border-radius: 100%; + border-radius: 100%; + border: 0 solid #0076ff; + position: relative; + top: 2px; + left: -4px; } -.jqx-splitter-collapse-button-horizontal, .jqx-splitter-collapse-button-vertical, .jqx-slider-rangebar { - background: #dddddd; } +input[type="radio"]:checked + label { + color: #0076ff; } + input[type="radio"]:checked + label:before { + border-width: 5px; } -.jqx-scrollbar-state-normal { - background-color: white; - border-color: transparent; } +input[type="radio"] + label:before, +input[type="radio"]:checked + label:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } -.jqx-grid-bottomright, .jqx-panel-bottomright, .jqx-listbox-bottomright { - background-color: white; } +/* Checkbox Buttons */ +input[type="checkbox"] { + display: none; } -.jqx-scrollbar-thumb-state-normal { - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +input[type="checkbox"] + label { + cursor: pointer; + margin: 0 7px; + font-weight: normal; } + input[type="checkbox"] + label:before { + content: ''; + display: inline-block; + height: 15px; + width: 15px; + background-color: #bdbdbd; + border: 0 solid #0076ff; + position: relative; + top: 2px; + left: -4px; } -.jqx-scrollbar-thumb-state-normal-horizontal { - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +input[type="checkbox"]:checked + label { + color: #0076ff; } + input[type="checkbox"]:checked + label:before { + border-width: 5px; } -.jqx-scrollbar-thumb-state-hover { - background-color: #999999; - background-image: -moz-linear-gradient(top, #999999, #999999); - background-image: -ms-linear-gradient(top, #999999, #999999); - background-image: -o-linear-gradient(top, #999999, #999999); - background-image: -webkit-gradient(linear, center top, center bottom, from(#999999), to(#999999)); - background-image: -webkit-linear-gradient(top, #999999, #999999); - background-image: linear-gradient(top, #999999, #999999); - background-image: linear-gradient(to bottom, #999999, #999999); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +input[type="checkbox"] + label:before, +input[type="checkbox"]:checked + label:before { + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } -.jqx-scrollbar-thumb-state-hover-horizontal { - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +/* Disabled */ +input[type="checkbox"]:disabled + label, +input[type="radio"]:disabled + label { + cursor: no-drop; + opacity: 0.4; } + input[type="checkbox"]:disabled + label:before, + input[type="radio"]:disabled + label:before { + cursor: no-drop; + opacity: 0.4; } + +/* Filter */ +.fx-selector.hideSwitch .fx-selector-title { + margin-right: 30px; + /* Small devices (tablets, 768px and up) */ + /* Medium devices (desktops, 992px and up) */ + /* Large devices (large desktops, 1200px and up) */ } + @media (min-width: 992px) { + .fx-selector.hideSwitch .fx-selector-title { + margin-right: 30px; } } + +.fx-selector.hideRemoveButton .fx-selector-title { + margin-right: 30px; + /* Small devices (tablets, 768px and up) */ + /* Medium devices (desktops, 992px and up) */ + /* Large devices (large desktops, 1200px and up) */ } + @media (min-width: 992px) { + .fx-selector.hideRemoveButton .fx-selector-title { + margin-right: 80px; } } + +.fx-selector.hideSwitch.hideRemoveButton .fx-selector-title { + margin-right: 0; + /* Small devices (tablets, 768px and up) */ + /* Medium devices (desktops, 992px and up) */ + /* Large devices (large desktops, 1200px and up) */ } + @media (min-width: 992px) { + .fx-selector.hideSwitch.hideRemoveButton .fx-selector-title { + margin-right: 0; } } + +[data-selector], [data-semantic] { + /* Focused */ + /* Mandatory */ + /* Disabled */ + /* Hovered */ } + [data-selector] .controller, [data-semantic] .controller { + position: absolute; + right: 0; + top: 17px; } + [data-selector] .controller input[type="checkbox"] + label:before, [data-semantic] .controller input[type="checkbox"] + label:before { + -webkit-border-radius: 50% !important; + -moz-border-radius: 50% !important; + -ms-border-radius: 50% !important; + border-radius: 50% !important; } + [data-selector] .controller .btn-round, [data-semantic] .controller .btn-round { + -webkit-border-radius: 50% !important; + -moz-border-radius: 50% !important; + -ms-border-radius: 50% !important; + border-radius: 50% !important; } + [data-selector] .disabled, [data-semantic] .disabled { + cursor: no-drop; + opacity: 0.4; } + @media screen and (max-width: 480px) { + [data-selector] .controller, [data-semantic] .controller { + opacity: 1; + pointer-events: auto; } } + @media screen and (min-width: 768px) { + [data-selector] .controller, [data-semantic] .controller { + opacity: 0; + pointer-events: none; + -webkit-transition: all 0.3s ease 0.2s; + -moz-transition: all 0.3s ease 0.2s; + -ms-transition: all 0.3s ease 0.2s; + -o-transition: all 0.3s ease 0.2s; + transition: all 0.3s ease 0.2s; } + [data-selector]:hover .controller, [data-semantic]:hover .controller { + opacity: 1; + pointer-events: auto; } } + +.selector-header { + padding: 10px 0; + position: relative; } -.jqx-scrollbar-thumb-state-pressed { - border-color: #dddddd; - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +.fx-selector-title { + margin-right: 50px; + /* Small devices (tablets, 768px and up) */ + /* Medium devices (desktops, 992px and up) */ + /* Large devices (large desktops, 1200px and up) */ } + @media (min-width: 992px) { + .fx-selector-title { + margin-right: 105px; } } + +.filter-enabled-label { + width: 10px; + font-size: 0; + /* Small devices (tablets, 768px and up) */ + /* Medium devices (desktops, 992px and up) */ + /* Large devices (large desktops, 1200px and up) */ } + @media (min-width: 992px) { + .filter-enabled-label { + width: auto; + font-size: inherit; } } + +.selector-footer [data-role="summary"] { + margin: 0; } -.jqx-scrollbar-thumb-state-pressed-horizontal { - background-color: #dddddd; - background-image: -moz-linear-gradient(top, #dddddd, #dddddd); - background-image: -ms-linear-gradient(top, #dddddd, #dddddd); - background-image: -o-linear-gradient(top, #dddddd, #dddddd); - background-image: -webkit-gradient(linear, center top, center bottom, from(#dddddd), to(#dddddd)); - background-image: -webkit-linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(top, #dddddd, #dddddd); - background-image: linear-gradient(to bottom, #dddddd, #dddddd); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +[data-code] { + display: inline-block; + cursor: pointer; + margin: 0 3px 3px 0; + padding: 1px 3px; + background-color: #efefef; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; } + +.code-brk { + font-family: "Lucida Console", Monaco, monospace; + font-size: 10px; + color: #999999; } -.jqx-scrollbar-button-state-normal { - background-color: transparent; - background-image: -moz-linear-gradient(top, transparent, transparent); - background-image: -ms-linear-gradient(top, transparent, transparent); - background-image: -o-linear-gradient(top, transparent, transparent); - background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); - background-image: -webkit-linear-gradient(top, transparent, transparent); - background-image: linear-gradient(top, transparent, transparent); - background-image: linear-gradient(to bottom, transparent, transparent); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +/* Buttons */ +.btn-default { + color: #333; } -.jqx-scrollbar-button-state-hover { - background-color: transparent; - background-image: -moz-linear-gradient(top, transparent, transparent); - background-image: -ms-linear-gradient(top, transparent, transparent); - background-image: -o-linear-gradient(top, transparent, transparent); - background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); - background-image: -webkit-linear-gradient(top, transparent, transparent); - background-image: linear-gradient(top, transparent, transparent); - background-image: linear-gradient(to bottom, transparent, transparent); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +[data-role="remove"].btn-round { + position: relative; + top: -2px; } -.jqx-scrollbar-button-state-pressed { - background-color: transparent; - background-image: -moz-linear-gradient(top, transparent, transparent); - background-image: -ms-linear-gradient(top, transparent, transparent); - background-image: -o-linear-gradient(top, transparent, transparent); - background-image: -webkit-gradient(linear, center top, center bottom, from(transparent), to(transparent)); - background-image: -webkit-linear-gradient(top, transparent, transparent); - background-image: linear-gradient(top, transparent, transparent); - background-image: linear-gradient(to bottom, transparent, transparent); - -moz-background-clip: padding; - background-clip: padding-box; - -webkit-background-clip: padding-box; - background-repeat: no-repeat; } +/* Tree */ +.tree-holder { + height: 150px; + overflow: auto; } -.jqx-radiobutton-check-checked { - background: #666666; - width: 7px; - height: 7px; - margin-left: 2px; - margin-top: 2px; - border-width: 1px; - border-style: solid; } +.fx-tree-search { + margin-bottom: 5px; } -.jqx-rc-tl { - -moz-border-radius-topleft: 0; - -webkit-border-radius-topleft: 0; - border-radius-topleft: 0; } +.fx-tree-buttons { + margin-bottom: 5px; } -.jqx-rc-tr { - -moz-border-radius-topright: 0; - -webkit-border-radius-topright: 0; - border-radius-topright: 0; } +.jstree-anchor, .jstree-anchor:link, .jstree-anchor:visited, .jstree-anchor:hover, .jstree-anchor:active { + color: #333; } -.jqx-rc-bl { - -moz-border-radius-bottomleft: 0; - -webkit-border-radius-bottomleft: 0; - border-radius-bottomleft: 0; } +/* Range Slider */ +.irs-bar, .irs-bar-edge, .irs-line { + height: 5px; + top: 37px; } -.jqx-rc-br { - -moz-border-radius-bottomright: 0; - -webkit-border-radius-bottomright: 0; - border-radius-bottomright: 0; } +.irs-bar { + border-top: 1px solid #0076ff; + border-bottom: 1px solid #0076ff; } -.jqx-rc-t { - -moz-border-radius-topleft: 0; - -webkit-border-top-left-radius: 0; - border-top-left-radius: 0; - -moz-border-radius-topright: 0; - -webkit-border-top-right-radius: 0; - border-top-right-radius: 0; } +.irs-bar-edge { + border: 1px solid #0076ff; } -.jqx-rc-b { - -moz-border-radius-bottomleft: 0; - -webkit-border-bottom-left-radius: 0; - border-bottom-left-radius: 0; - -moz-border-radius-bottomright: 0; - -webkit-border-bottom-right-radius: 0; - border-bottom-right-radius: 0; } +.irs-bar, .irs-bar-edge { + background: #0076ff; } -.jqx-rc-r { - -moz-border-radius-topright: 0; - -webkit-border-top-right-radius: 0; - border-top-right-radius: 0; - -moz-border-radius-bottomright: 0; - -webkit-border-bottom-right-radius: 0; - border-bottom-right-radius: 0; } +.irs-line { + background: #bdbdbd; + border-color: transparent; } -.jqx-rc-l { - -moz-border-radius-topleft: 0; - -webkit-border-top-left-radius: 0; - border-top-left-radius: 0; - -moz-border-radius-bottomleft: 0; - -webkit-border-bottom-left-radius: 0; - border-bottom-left-radius: 0; } +.irs-slider { + background: white; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } + +.irs-from, .irs-to, .irs-single { + background: transparent; + color: #0076ff; } + +/* Time */ +.time-selector-icon { + font-size: 20px; } + +[data-selector-time] .day.active { + background-color: #0076ff; } + [data-selector-time] .day.active:hover { + background-color: #407bbf; } +[data-selector-time] .day.today:before { + border-bottom-color: #0076ff; } +[data-selector-time] .month.active { + background-color: #0076ff; } +[data-selector-time] .year.active { + background-color: #0076ff; } +[data-selector-time] .fx-time-addon { + font-size: 24px; + padding: 2px 8px; + color: #0076ff; } +[data-selector-time] [data-action="incrementHours"], [data-selector-time] [data-action="decrementHours"], [data-selector-time] [data-action="incrementMinutes"], [data-selector-time] [data-action="decrementMinutes"] { + font-size: 24px; + color: #0076ff; } +[data-selector-time] [data-action="previous"] span:before, [data-selector-time] [data-action="next"] span:before { + content: none; } +[data-selector-time] [data-action="next"] span { + background-position: -135px 0; } +[data-selector-time] [data-action="previous"] span { + background-position: -135px -15px; } +[data-selector-time] [data-action="togglePicker"] { + padding: 0; } + [data-selector-time] [data-action="togglePicker"] span { + font-size: 24px; + color: #0076ff; + line-height: 35px !important; + height: auto !important; } + +/* Sortable */ +.filter-sortable-list .list-item { + cursor: pointer; + margin: 3px; + padding: 1px 3px; + background-color: #efefef; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; } + +[data-group] ul { + min-height: 50px; + padding: 6px 12px; + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + border-radius: 4px; + background-color: white; + background-image: none; + border: 1px solid #d8d8d8; } -.jqx-radiobutton-default, .jqx-radiobutton, .jqx-radiobutton-check-checked, .jqx-radiobutton-hover, .jqx-radiobutton-check-indeterminate, .jqx-radiobutton-check-indeterminate-disabled, .jqx-slider-button { - -moz-border-radius: 100% !important; - -webkit-border-radius: 100% !important; - border-radius: 100% !important; } +/* Analysis */ +.fx-grid-item { + padding: 5px; } -.jqx-rc-all, .jqx-tooltip, .jqx-tooltip-text, .jqx-tooltip-main { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; } +.fx-grid-item[data-size="full"] { + width: 100%; } -.jqx-menu-vertical { - background: white; } +.fx-grid-item[data-size="half"] { + width: 50%; } -.jqx-widget .jqx-grid-column-header, .jqx-widget .jqx-grid-cell, .jqx-widget .jqx-grid-group-cell, .jqx-grid-cell { - border-color: #e5e5e5; } +.courtesy-img { + width: 140px; + height: 129px; + background-image: url("../../submodules/fenix-ui-common//css/img/mascot-01-gray.svg"); + background-size: contain; + background-repeat: no-repeat; + margin: 25px auto; } -.jqx-tooltip, .jqx-tooltip-main { - color: #666666; - text-shadow: none; - border-color: #aaa; - background-color: #dddddd; } +.pulse-button { + font-size: 20px; + display: inline-block; + color: white; + position: relative; + overflow: hidden; + z-index: 2; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #0076ff; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; + cursor: pointer; + vertical-align: middle; + margin: 10px; + box-shadow: 0 0 0 0 rgba(0, 118, 255, 0.7); + -webkit-animation: pulse 1.25s infinite cubic-bezier(0.66, 0, 0, 1); + -moz-animation: pulse 1.25s infinite cubic-bezier(0.66, 0, 0, 1); + -ms-animation: pulse 1.25s infinite cubic-bezier(0.66, 0, 0, 1); + animation: pulse 1.25s infinite cubic-bezier(0.66, 0, 0, 1); } + .pulse-button span { + position: relative; + left: 1px; } + .pulse-button:hover, .pulse-button:focus, .pulse-button:active, .pulse-button:visited, .pulse-button.first-init { + color: white; + -webkit-animation: none; + -moz-animation: none; + -ms-animation: none; + animation: none; } + +@-webkit-keyframes pulse { + to { + box-shadow: 0 0 0 45px rgba(0, 118, 255, 0); } } +@-moz-keyframes pulse { + to { + box-shadow: 0 0 0 45px rgba(0, 118, 255, 0); } } +@-ms-keyframes pulse { + to { + box-shadow: 0 0 0 45px rgba(0, 118, 255, 0); } } +@keyframes pulse { + to { + box-shadow: 0 0 0 45px rgba(0, 118, 255, 0); } } +/* Visualization Box Style */ +.fx-box { + height: 450px; + /* Hovered */ } + .fx-box [data-content] { + display: none; + height: 450px; + position: relative; } + .fx-box [data-content] .loading { + position: absolute; + top: 45%; } + .fx-box .front-content, .fx-box .back-content { + height: 424px; + overflow: hidden; } + .fx-box [data-content="error"], .fx-box [data-content="loading"], .fx-box [data-content="empty"], .fx-box [data-content="huge"] { + border: 1px solid #e0e0e0; } + .fx-box .box-title { + margin-left: 85px; + margin-right: 192px; } + .fx-box .toolbar-cmd-left, .fx-box .toolbar-cmd-right { + opacity: 1; + pointer-events: auto; } + @media screen and (min-width: 768px) { + .fx-box .front-toolbar .toolbar-cmd-left, .fx-box .front-toolbar .toolbar-cmd-right { + opacity: 0; + pointer-events: none; + -webkit-transition: all 0.3s ease 0.2s; + -moz-transition: all 0.3s ease 0.2s; + -ms-transition: all 0.3s ease 0.2s; + -o-transition: all 0.3s ease 0.2s; + transition: all 0.3s ease 0.2s; } + .fx-box .front-toolbar .box-title { + margin-left: 15px; + margin-right: 15px; + -webkit-transition: all 0.3s ease 0.2s; + -moz-transition: all 0.3s ease 0.2s; + -ms-transition: all 0.3s ease 0.2s; + -o-transition: all 0.3s ease 0.2s; + transition: all 0.3s ease 0.2s; } + .fx-box:hover .front-toolbar .toolbar-cmd-left, .fx-box:hover .front-toolbar .toolbar-cmd-right { + opacity: 1; + pointer-events: auto; } + .fx-box:hover .front-toolbar .box-title { + margin-left: 85px; + margin-right: 192px; } } + .fx-box[data-status="ready"] [data-content="ready"] { + display: block; } + .fx-box[data-status="error"] [data-content="error"] { + display: block; } + .fx-box[data-status="loading"] [data-content="loading"] { + display: block; } + .fx-box[data-status="empty"] [data-content="empty"] { + display: block; } + .fx-box[data-status="huge"] [data-content="huge"] { + display: block; } + .fx-box [data-content="ready"] [data-section] { + display: none; } + .fx-box [data-content="ready"][data-tab="chart"] [data-section="chart"] { + display: block; } + .fx-box [data-content="ready"][data-tab="table"] [data-section="table"] { + display: block; } + .fx-box [data-content="ready"][data-tab="map"] [data-section="map"] { + display: block; } + .fx-box [data-content="ready"][data-tab="blank"] [data-section="blank"] { + display: block; } + .fx-box [data-content="ready"][data-tab="metadata"] [data-section="metadata"] { + display: block; } + .fx-box [data-content="ready"][data-tab="download"] [data-section="download"] { + display: block; } -.jqx-combobox-content, .jqx-input { - color: #666666; - text-shadow: none; - border-color: #D2D0D0; - background-color: white; } +.vb-toolbar { + background-color: white; + border-bottom: 1px solid #e0e0e0; } + .vb-toolbar .meta-btn { + margin-top: 2px; } + .vb-toolbar .toolbar-cmd-left { + width: 85px; + position: absolute; + top: 0; + left: 0; } + .vb-toolbar .toolbar-cmd-right { + width: 192px; + position: absolute; + top: 0; + right: 0; + text-align: right; + font-size: 0; + /* Avoid space between elements with display inline */ } + .vb-toolbar .toolbar-cmd-right button { + float: none; + /* Avoid 1px bug on the right in md resolution */ + margin-left: 0 !important; + /* Avoid 1px bug of the bootstrap's btn-group */ + display: inline-block; } + .vb-toolbar .toolbar-cmd-right button[data-action="flip"] { + background-color: #e0e0e0; } + .vb-toolbar .toolbar-cmd-right button:last-child { + margin-right: 0; + /* Remove margin from the last child of btn-group */ } + .vb-toolbar button { + border: 0; + background-color: transparent; + font-size: 16px; + padding: 1px 10px 0 10px; + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; } + .vb-toolbar button[disabled] { + background-color: transparent; + border: 0; + opacity: 1; } + .vb-toolbar button[disabled] span { + opacity: 0.35; } + .vb-toolbar button:hover { + border: 0; + border-color: transparent; + background-color: #e0e0e0; + color: #0076ff; } + .vb-toolbar .box-title { + color: #0076ff; + margin-top: 5px; + margin-bottom: 5px; } + +/*Flip effect */ +/* entire container, keeps perspective */ +.flip-container { + perspective: 1000; + height: 450px; } + +/* flip the pane when hovered*/ +.flip-container.flipped .flipper { + transform: rotateY(180deg); } + +/* flip speed goes here */ +.flipper { + transition: 0.6s; + transform-style: preserve-3d; + height: 100%; + position: relative; } -.jqx-combobox-input { - color: #666666; - text-shadow: none; } +/* hide back of pane during swap */ +.front, .back { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + width: 100%; + position: absolute; + top: 0; + left: 0; + border: 1px solid #e0e0e0; } -.jqx-input-content { - color: #666666; - text-shadow: none; +/* FRONT pane, placed above back */ +.front { + z-index: 2; + /* for firefox 31 */ + transform: rotateY(0deg); background-color: white; } + .front .tab-item-content[id^="metadata"] { + padding: 0 15px; + overflow-y: scroll; + overflow-x: hidden; } -.jqx-fill-state-focus, .jqx-popup .jqx-fill-state-focus { - border-color: #666666; } +.tab-item-content-wrapper { + position: relative; + z-index: 0; + height: 100%; } -.jqx-popup.jqx-listbox, .jqx-popup.jqx-calendar, .jqx-menu-dropdown, .jqx-popup.jqx-dropdownbutton-popup { - color: #666666; - text-shadow: none; - border-color: #666666; - background-color: white; } +.tab-item-content { + height: 100%; } + .tab-item-content[id^="table"], .tab-item-content[id^="chart"] { + padding: 40px 15px 15px 15px; } -/* Fenix - Js tree */ -.jstree-default .jstree-search { - color: #666666; - font-weight: 300; - font-style: normal; } +[data-section] { + position: relative; + height: 100%; } -.jstree-default .jstree-themeicon { - display: none; - /* It hides folder icon */ } +/* Z-index fix */ +.front-toolbar, .back-toolbar { + position: relative; + z-index: 1; } + +.back-toolbar { + /* COOL BACK TOOLBAR EFFECT */ + opacity: 0.5; + -ms-transform: rotateY(180deg); + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + pointer-events: none; } + .back-toolbar * { + pointer-events: none !important; } + +.front-content, .back-content { + position: relative; + z-index: 0; } -.jstree-default .jstree-node, -.jstree-default .jstree-icon { - background-image: url("../../submodules/fenix-ui-common//css/img/treejs-32px.png"); } +/* BACK, initially hidden pane */ +.back { + transform: rotateY(180deg); + background-color: #e0e0e0; } -.jstree-default .jstree-wholerow-clicked { - background: none; - background-color: #9dd2f7; } +[data-role="back-content"] { + height: 100%; } -.jstree-default .jstree-wholerow-hovered { - background: none; - background-color: #9dd2f7; } +.back-toolbar { + position: relative; + z-index: 1; } -/* Packery _ Fenix */ -/* clearfix */ -#fx-ana-result-container:after { - content: ' '; - display: block; - clear: both; } +.back-content { + position: relative; + z-index: 0; } + .back-content .alert { + position: absolute; + width: calc(100% - 30px); + z-index: 2; } + +.process-details { + height: 350px; + overflow-x: hidden; + overflow-y: auto; + background-color: white; } + .process-details [data-tab="metadata"] { + padding: 0 15px; } + .process-details [data-tab="aggregations"] { + padding: 0 15px; } + .process-details [data-tab="map"] { + padding: 0 15px; } + +.show-back-sidebar { + position: absolute; + z-index: 2; + top: 15px; + left: 15px; } + +.sidebar-title { + color: #999999; + padding: 0 15px; + border-bottom: 1px solid #e0e0e0; + padding-bottom: 10px; } + +/* Filter Swiper */ +.filter-slide { + padding: 15px; + border: 1px solid transparent; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + .filter-slide [data-selector] .btn-group.controller { + opacity: 1; } + .filter-slide.swiper-slide-active { + /* Stylize the active filter */ } + +@media screen and (min-width: 480px) { + .fx-grid-item[data-size="full"] .filter-slide { + width: 50%; } } + +.swiper-button-prev { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'#0076ff'%2F%3E%3C%2Fsvg%3E"); + left: 0; + right: auto; + background-size: 20px 30px; } -.fx-analysis-item { - width: 50%; - height: 450px; - padding: 22px 10px 10px 10px; - z-index: 200; - /* Veify correct z.index */ } - .fx-analysis-item.fit { - width: 100%; } +.swiper-button-next { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'#0076ff'%2F%3E%3C%2Fsvg%3E"); + right: 2px; + left: auto; + background-size: 20px 30px; } -.fx-analysis-item .fx-widget .tab-content { - height: 350px; - overflow-y: auto; - overflow-x: hidden; } +.swiper-pagination-bullet-active { + background: #0076ff; } -.grid-sizer { - width: 50%; } +.back-right-content { + height: 100%; + padding-top: 15px; + position: relative; + z-index: 0; } -/* Leaflet */ -/* Fenix Leaflet Import */ -/* Fenix Leaflet Zoom control 0.7.3*/ -/* Base */ -/* Base style File */ -a { - color: #ec6e00; } +.swiper-container { + width: 100%; + height: 350px; } -.fx-sandbox { - /* TEMPORARY */ } - .fx-sandbox h1.flude-analysis-title { - color: white; - display: inline-block; } - .fx-sandbox h2.filter-opener-flude, .fx-sandbox h2.filter-opener-faostat { - margin-top: 10px; } - .fx-sandbox .flude-topic-selector { - width: calc(100% - 250px) !important; } - .fx-sandbox .home-logo { - background-image: url(../../src/css/img/flude-logo.jpg); - height: 75px; - background-repeat: no-repeat; - position: relative; - left: -15px; - max-width: 80%; } - .fx-sandbox .compare-wrapper { - position: absolute; - right: 15px; - top: 3px; - width: 420px; - height: 46px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - border-radius: 5px; +.back-row { + position: relative; + height: 100%; } + +[data-role='back-sidebar'] { + z-index: 1; + height: 100%; + position: absolute; } + [data-role='back-sidebar'] .sidebar-content { background-color: white; - border: 1px solid #3883c0; } - .fx-sandbox .compare-title { - color: #4387bf; + border: 1px solid #e0e0e0; + height: calc(100% - 30px); + width: calc(100% - 30px); + position: absolute; + top: 15px; + left: 15px; } + [data-role='back-sidebar'] .sidebar-content .process-steps-container { + padding: 5px 15px; + position: absolute; + bottom: 0; + height: 360px; + width: 100%; + overflow-x: hidden; + overflow-y: scroll; } + @media screen and (min-width: 768px) { + [data-role='back-sidebar'] { + position: absolute; } } + @media screen and (min-width: 992px) { + [data-role='back-sidebar'] { + position: relative; } } + @media screen and (min-width: 1200px) { + [data-role='back-sidebar'] { + position: relative; } } + +.step-container { + padding: 5px 10px; + margin: 7px 0; + cursor: pointer; + background-color: #e0e0e0; + position: relative; } + .step-container .step-title { + font-weight: normal; margin: 0; + margin-left: 25px; + color: #333; } + .step-container .step-icon { display: inline-block; - position: relative; - left: 15px; - top: 13px; } - .fx-sandbox .toggle-wrapper { - position: absolute; - right: 10px; - top: 7px; } - .fx-sandbox input#toggle-side-faostat + label { - display: block; - position: relative; - box-shadow: inset 0 0 0px 1px #d5d5d5; - text-indent: -5000px; - height: 30px; - width: 50px; - border-radius: 15px; } - .fx-sandbox input#toggle-side-faostat + label:before { - content: ""; position: absolute; - display: block; - height: 30px; - width: 30px; + height: 100%; + width: 29px; + background-color: #0076ff; top: 0; left: 0; - border-radius: 15px; - background: rgba(19, 191, 17, 0); - -moz-transition: .25s ease-in-out; - -webkit-transition: .25s ease-in-out; - transition: .25s ease-in-out; } - .fx-sandbox input#toggle-side-faostat + label:after { - content: ""; + color: white; } + .step-container .step-icon:before { + font-size: 16px; + position: relative; + top: 4px; + left: 7px; } + .step-container.active:before { + content: ''; position: absolute; + right: 0; + bottom: 0; + z-index: 1; + width: 0; + height: 0; + border-style: solid; + border-width: 0 0 8px 8px; + border-color: transparent transparent #333 transparent; + line-height: 0px; + _border-color: #000000 #000000 #333 #000000; + _filter: progid:DXImageTransform.Microsoft.Chroma(color='#000000'); } + +/********************* + Shadows +**********************/ +.z-depth-0 { + box-shadow: none !important; } + +.z-depth-1, .btn-floating { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); } + +.z-depth-1-half, .btn-floating:hover { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); } + +.z-depth-2 { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-3 { + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-4 { + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); } + +.z-depth-5 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 2; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #0076ff; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; + margin: 10px; } + +[data-role="toolbar"] { + height: 424px; + overflow-y: scroll; + overflow-x: hidden; + z-index: 1; + position: absolute; + background-color: white; + padding-top: 60px; + top: 0; + left: -570px; + -webkit-transition: all 0.3s ease 0s; + -moz-transition: all 0.3s ease 0s; + -ms-transition: all 0.3s ease 0s; + -o-transition: all 0.3s ease 0s; + transition: all 0.3s ease 0s; } + [data-role="toolbar"].in { + left: 0; } + +.btn-fx-toolbar, .btn-fx-toolbar-confirm { + position: absolute; + top: 0; + left: 0; } + .btn-fx-toolbar span[class^="icojam_"], .btn-fx-toolbar-confirm span[class^="icojam_"] { + color: white; + font-size: 20px; + position: relative; + top: 3px; } + +.btn-fx-toolbar-confirm { + left: 50px; + background-color: white; + opacity: 0; + pointer-events: none; } + .btn-fx-toolbar-confirm.in { + opacity: 1; + pointer-events: auto; } + .btn-fx-toolbar-confirm span[class^="icojam_"] { + color: #333; } + +/* OLAP */ +.tab-item-content .gt-viewport { + font-family: "Lucida Console", Monaco, monospace !important; + font-size: 12px !important; + color: #333 !important; } + +.gt-hd-row td .gt-inner { + padding-top: 5px; + padding-bottom: 5px; } + +.gt-inner { + padding-top: 5px; + padding-bottom: 5px; } + +.gt-row-selected td { + background-color: #e6f1ff; } + +.gt-head-wrap td { + background-color: #f4f4f4 !important; } + +/* Freezed Rows */ +.fx-box .gt-freeze-div[id*="bodyDiv"] td { + background-color: #f4f4f4 !important; } + +/* Freezed Header */ +.gt-hd-split { + background-color: transparent !important; + border-right: 1px solid #bbbbbb !important; + padding-left: 5px !important; + position: relative; + overflow: visible; } + .gt-hd-split:before { + content: ''; display: block; - height: 30px; - width: 30px; - top: 0; - left: 0px; - border-radius: 15px; - background: white; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.2); - -moz-transition: .25s ease-in-out; - -webkit-transition: .25s ease-in-out; - transition: .25s ease-in-out; } - .fx-sandbox input#toggle-side-faostat:checked + label:before { - width: 50px; - background: #13bf11; - border-width: 0; } - .fx-sandbox input#toggle-side-faostat:checked + label:after { - left: 20px; - box-shadow: inset 0 0 0 1px #13bf11, 0 2px 4px rgba(0, 0, 0, 0.2); } - .fx-sandbox .home-back-btn { - height: 75px; - width: 86px; - background-image: url(../../src/css/img/home-btn.jpg); + height: 100%; position: absolute; top: 0; - right: 0; - cursor: pointer; } - .fx-sandbox .home-back-btn .return-btn { - display: block; - height: 100%; - width: 100%; } - .fx-sandbox .filter-container { - min-height: 70px; } - .fx-sandbox .filter-container-fs { - min-height: 65px; } - .fx-sandbox .obj-box-header { - padding: 5px 15px; - height: 34px; - border: 1px solid #C2C2C2; - background: #fafafa; - box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); - -webkit-box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.05); } - .fx-sandbox .obj-box-header .btn-default { - position: absolute; - right: 25px; - top: 6px; } - .fx-sandbox .obj-box-header h1 { - color: #333; - margin: 0; } - .fx-sandbox .obj-box, .fx-sandbox .obj-box-radius10, .fx-sandbox .obj-box-title { - margin-top: 0; - position: relative; - min-height: 155px; } - .fx-sandbox .obj-box #flude-download, .fx-sandbox .obj-box-radius10 #flude-download, .fx-sandbox .obj-box-title #flude-download { - width: 230px; - position: absolute; - right: 15px; - top: 35px; } - .fx-sandbox .invi { - display: none; } - .fx-sandbox .truncate { - min-width: 250px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } - .fx-sandbox .upper { - text-transform: uppercase; } - .fx-sandbox .btn { - -webkit-border-radius: 2; - -moz-border-radius: 2; - -ms-border-radius: 2; - border-radius: 2; - min-width: 100px; - padding: 3px 12px; - font-size: 12px; - background-color: #4387bf; - border: 1px solid #3883c0; - color: white; } - .fx-sandbox .btn:hover, .fx-sandbox .btn:focus, .fx-sandbox .btn:active, .fx-sandbox .btn:visited { - background-color: #3e90d4; - border: 1px solid #2f7dbe; - color: white; } - .fx-sandbox .btn.btn-default.json-editor-btn-collapse { - color: #0f6eae !important; - border-color: transparent !important; } - .fx-sandbox .btn.btn-default.json-editor-btn-collapse i { - color: #0f6eae !important; } - .fx-sandbox .btn.btn-default.json-editor-btn-collapse i:before { - content: 'EXPAND'; - font-size: 10px; - color: #666666; } - .fx-sandbox .btn-table-go, .fx-sandbox .btn-scores-go { - background-color: #4387bf; - color: white; } - .fx-sandbox .btn-table-go:hover, .fx-sandbox .btn-table-go:active, .fx-sandbox .btn-table-go:visited, .fx-sandbox .btn-table-go:focus, .fx-sandbox .btn-scores-go:hover, .fx-sandbox .btn-scores-go:active, .fx-sandbox .btn-scores-go:visited, .fx-sandbox .btn-scores-go:focus { - background-color: #4387bf; - border-color: transparent; - color: white; } - .fx-sandbox .btn-reset { - background-color: white; - color: #666666; - border-color: transparent; } - .fx-sandbox .btn-reset:hover, .fx-sandbox .btn-reset:active, .fx-sandbox .btn-reset:visited, .fx-sandbox .btn-reset:focus { - background-color: white; - border-color: transparent; - color: #666666; } - .fx-sandbox .whole-btn { - background-color: #e19a0e; - border-color: #a4812f; } - .fx-sandbox .whole-btn:hover, .fx-sandbox .whole-btn:focus, .fx-sandbox .whole-btn:active { - background-color: #a4812f; - border-color: #a4812f; } - .fx-sandbox .fm-legend-layertitle { - font-size: 0 !important; } - .fx-sandbox .fm-legend-layertitle:before { - content: 'Legend'; - font: normal normal 300 12px/normal "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } + left: 3px; + width: 1px; + border-right: 1px solid #bbbbbb; } -/* Components */ -/* BreadCrumbs */ -#breadcumb_container { - height: 35px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } +.gt-freeze-div[id*="headDiv"] table { + border-bottom: 1px solid #d6d6d6 !important; + /* Suspicious */ } +.gt-freeze-div[id*="headDiv"] td { + background-color: #f4f4f4 !important; } -.breadcrumb { - background-color: transparent; - font-size: 12px; - font-weight: bold; - padding: 8px 0; - margin-bottom: 0; } - .breadcrumb li a { - color: #666666; - text-transform: uppercase; } +.gt-row-over td { + border-bottom-color: #0076ff; } -.breadcrumb > li + li:before { - content: '|'; - color: #666666; } +.gt-row-even { + background-color: white; } -/* FAO Like Top Menu */ -.internal-fao-header { - background-image: url(../../src/css/img/flude-header-bg.jpg); - height: 75px; } +/* Hide selectors */ +[data-section="table"] [data-role="toolbar"] [data-group="hidden"], [data-section="table"] [data-role="toolbar"] [data-group="aggregations"], [data-section="table"] [data-role="toolbar"] [data-group="values"], [data-section="table"] [data-role="toolbar"] [data-selector="aggregatorValue"], [data-section="chart"] [data-role="toolbar"] [data-group="hidden"], [data-section="chart"] [data-role="toolbar"] [data-group="aggregations"], [data-section="chart"] [data-role="toolbar"] [data-group="values"], [data-section="chart"] [data-role="toolbar"] [data-selector="aggregatorValue"] { + display: none !important; } -/*//////////////////////////////////////////// Navbar Media queries */ -/* Ipad */ -/* Iphone */ -@media (max-width: 767px) { - /* End of the iPhone media query*/ } -/*Form */ -.form-control { - -webkit-transition: none; - -moz-transition: none; - -ms-transition: none; - -o-transition: none; - transition: none; - outline: none; - background-color: #ededed; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border-color: transparent; - -webkit-border-radius: 5; - -moz-border-radius: 5; - -ms-border-radius: 5; - border-radius: 5; - font-weight: 500; - padding: 3px 12px; - font-size: 12px; - height: 28px; } - .form-control:focus { +/* Toolbar */ +.gt-toolbar-box { + padding-top: 5px; + height: 30px; } + +.gt-button-split { + width: 15px; + background-color: transparent; } + +.gt-image-button div, .gt-image-button button { + position: relative; + top: 3px; } + +.gt-toolbar-text { + margin-left: 3px; } + +/* Map Tab */ +[data-section="map"] .btn-fx-toolbar-confirm { + display: none; } + +.fm-icon-close { + display: none; } + +.fm-controller-box-content { + min-height: 50px; + padding: 6px 12px; + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.075); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + border-radius: 4px; + background-color: white; + background-image: none; + border: 1px solid #d8d8d8; } + .fm-controller-box-content[id*="controller-baselayer-content"] { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; - outline: none; - border-color: #4387bf; } - -.input-group-btn .btn { - border-left: 0; } - .input-group-btn .btn:hover { - border-color: transparent; } + border-top: none; + border-right: none; + border-bottom: none; + border-left: none; + border: none; + padding: 0; } -/* Jstree Mood */ -li[role="treeitem"]:nth-child(odd) { - background-color: #f2f2f2 !important; } +.fm-controller-box-item { + cursor: pointer; + margin: 3px; + padding: 1px 3px; + height: 93px !important; + background-color: #efefef; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; } + .fm-controller-box-item .ui-state-default, .fm-controller-box-item .ui-widget-content .ui-state-default, .fm-controller-box-item .ui-widget-header .ui-state-default { + top: 25px; + width: 27px; + height: 27px; + border: 1px solid #AAA; + background: #DDD; + background: white !important; + /* W3C */ + border-radius: 27px; + -moz-border-radius: 27px; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); + cursor: pointer; } + .fm-controller-box-item .ui-slider-handle { + top: -14px !important; } + .fm-controller-box-item .ui-widget-header { + background-color: #0076ff; } -ul[role="group"] { - background-color: white; } +.btn-fx-status-btn span[class^="icojam_"] { + color: white; + font-size: 20px; + position: relative; + top: 3px; } -.jstree-container-ul { - width: calc(100% - 25px); } +.content-message { + margin-top: 80px; } -.jstree-icon.External { - display: inline-block; - background-image: none; } - .jstree-icon.External:before { - content: 'E'; - font-style: normal; - background-color: #666666; - display: inline-block; - color: white; - line-height: 15px; - width: 15px; - height: 15px; } +.content-message-img { + width: 140px; + height: 129px; + background-size: contain; + background-repeat: no-repeat; + margin: 25px auto; } + .content-message-img.empty-img { + background-image: url("../../submodules/fenix-ui-common//css/img/mascot-empty-gray.svg"); } + .content-message-img.error-img { + background-image: url("../../submodules/fenix-ui-common//css/img/mascot-error-gray.svg"); } + .content-message-img.huge-img { + background-image: url("../../submodules/fenix-ui-common//css/img/mascot-huge-gray.svg"); } -.jstree-disabled { - opacity: 0.5; } +body { + background-color: #f8f8f8; + font-family: "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; } -/* Override Fenix Tree */ -.jstree-default-responsive .jstree-anchor { - white-space: normal; - height: auto; } +/** Venn Text Area */ +#venn-diagram-info-box textarea { + width: 100%; + height: 500px; + padding: 10px; + resize: none; } + +/** Table Sort Icons */ +/** Table Header */ +.gt-hd-row td .gt-inner { + font-weight: 600; + font-size: 14px; + text-transform: none; } + +/*!** Table Highlighted Columns: Comparative Advantage Only *! +div[data-item="comp_advantage"] .gt-col-1_11-ratio, div[data-item="comp_advantage"] .gt-col-1_11-purposecode_en, div[data-item="comp_advantage"] .gt-col-1_11-year { + background-color:#eef6ff; +}*/ +/** Table Cell Alignment */ +.gt-inner-left { + text-align: left; } + +/** Table Page size drop-down */ +.gt-pagesize-select { + width: 48px; } + +.big-col-width { + width: 246px; } + +.smaller-col-width { + width: 66px; } + +.small-col-width { + width: 96px; } + +.obj-box-info { + font-size: 12px; } -[role='treeitem'] { - position: relative; } - [role='treeitem'] .jstree-wholerow { - height: 100%; } - [role='treeitem'] .jstree-wholerow-clicked { - height: 100%; } - [role='treeitem'][aria-expanded='true'] [role='group'] .jstree-ocl { - display: none; } - [role='treeitem'][aria-expanded='true'] [role='group'] .jstree-anchor { - padding-left: 35px; } - [role='treeitem'][aria-expanded='true'] [role='group'] .jstree-anchor .jstree-checkbox { - position: absolute; - left: 10px; } +/*.gt-row-selected td { +!** background-color: #e6f1ff; **! -/* Subemenu */ -.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:focus, .navbar-default .navbar-nav > .open > a:hover { - background-color: #f1f1f1; - border-right-color: transparent; } +} -.dropdown.open .dropdown-menu { - z-index: 2; } -.dropdown .dropdown-menu { - -moz-border-radius-topleft: 0; - -webkit-border-top-left-radius: 0; - border-top-left-radius: 0; - -moz-border-radius-topright: 0; - -webkit-border-top-right-radius: 0; - border-top-right-radius: 0; - -moz-border-radius-bottomright: 0; - -webkit-border-bottom-right-radius: 0; - border-bottom-right-radius: 0; - -moz-border-radius-bottomleft: 0; - -webkit-border-bottom-left-radius: 0; - border-bottom-left-radius: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - -ms-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - border: 0; - background-color: #f1f1f1; - min-width: 250px; - padding: 0; } - .dropdown .dropdown-menu > li { - height: 40px; - border-bottom: 1px solid white; - position: relative; - cursor: pointer; } - .dropdown .dropdown-menu > li:last-child { - border-bottom-color: transparent; } - .dropdown .dropdown-menu > li:hover { - background-color: #9dd2f7; } - .dropdown .dropdown-menu > li:hover:before { - content: ''; - position: absolute; - width: 5px; - height: 100%; - background-color: #0f6eae; - right: 0; - top: 0; } - .dropdown .dropdown-menu > li > a { - text-transform: uppercase; - color: #666666; - font-size: 12px; - position: relative; - top: 50%; - height: 100%; - padding-top: 12px; - -ms-transform: translateY(-50%); - -webkit-transform: translateY(-50%); - transform: translateY(-50%); } - .dropdown .dropdown-menu > li > a:hover { - background-color: transparent; } - .dropdown .dropdown-menu > li > a:active { - background-color: transparent; } - .dropdown .dropdown-menu > li > a:focus { - background-color: transparent; } - .dropdown .dropdown-menu > li > a:visited { - background-color: transparent; } +!* Freezed Rows *! +.gt-freeze-div[id*="bodyDiv"] td { +!** background-color: #f4f4f4 !important;**! -/* Pages */ -/* Home */ -#side-faostat { - display: none; } +}*/ /*# sourceMappingURL=index.css.map */ diff --git a/dist/css/index.css.map b/dist/css/index.css.map new file mode 100644 index 00000000..ba705f36 --- /dev/null +++ b/dist/css/index.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAAA,kBAAkB;AAElB,qBAAqB;ACFrB,eAAe;ADKf,WAAW;EACT,OAAO,EAAE,KAAK;;AENhB;;;;GAIG;ACJH,4EAA4E;AAQ5E,IAAK;EACH,WAAW,EAAE,UAAU;EACvB,oBAAoB,EAAE,IAAI;EAC1B,wBAAwB,EAAE,IAAI;;AAOhC,IAAK;EACH,MAAM,EAAE,CAAC;;AAaX;;;;;;;;;;;;OAYQ;EACN,OAAO,EAAE,KAAK;;AAQhB;;;KAGM;EACJ,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,QAAQ;;AAQ1B,qBAAsB;EACpB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC;;AAQX;QACS;EACP,OAAO,EAAE,IAAI;;AAUf,CAAE;EACA,gBAAgB,EAAE,WAAW;;AAQ/B;OACQ;EACN,OAAO,EAAE,CAAC;;AAUZ,WAAY;EACV,aAAa,EAAE,UAAU;;AAO3B;MACO;EACL,WAAW,EAAE,IAAI;;AAOnB,GAAI;EACF,UAAU,EAAE,MAAM;;AAQpB,EAAG;EACD,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,QAAQ;;AAOlB,IAAK;EACH,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;;AAOb,KAAM;EACJ,SAAS,EAAE,GAAG;;AAOhB;GACI;EACF,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,QAAQ;;AAG1B,GAAI;EACF,GAAG,EAAE,MAAM;;AAGb,GAAI;EACF,MAAM,EAAE,OAAO;;AAUjB,GAAI;EACF,MAAM,EAAE,CAAC;;AAOX,cAAe;EACb,QAAQ,EAAE,MAAM;;AAUlB,MAAO;EACL,MAAM,EAAE,QAAQ;;AAOlB,EAAG;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;;AAOX,GAAI;EACF,QAAQ,EAAE,IAAI;;AAOhB;;;IAGK;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG;;AAkBhB;;;;QAIS;EACP,KAAK,EAAE,OAAO;EACd,IAAI,EAAE,OAAO;EACb,MAAM,EAAE,CAAC;;AAOX,MAAO;EACL,QAAQ,EAAE,OAAO;;AAUnB;MACO;EACL,cAAc,EAAE,IAAI;;AAWtB;;;oBAGqB;EACnB,kBAAkB,EAAE,MAAM;EAC1B,MAAM,EAAE,OAAO;;AAOjB;oBACqB;EACnB,MAAM,EAAE,OAAO;;AAOjB;uBACwB;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;AAQZ,KAAM;EACJ,WAAW,EAAE,MAAM;;AAWrB;mBACoB;EAClB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,CAAC;;AASZ;+CACgD;EAC9C,MAAM,EAAE,IAAI;;AAQd,oBAAqB;EACnB,kBAAkB,EAAE,SAAS;EAC7B,UAAU,EAAE,WAAW;;AASzB;+CACgD;EAC9C,kBAAkB,EAAE,IAAI;;AAO1B,QAAS;EACP,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,qBAAqB;;AAQhC,MAAO;EACL,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;;AAOZ,QAAS;EACP,QAAQ,EAAE,IAAI;;AAQhB,QAAS;EACP,WAAW,EAAE,IAAI;;AAUnB,KAAM;EACJ,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;;AAGnB;EACG;EACD,OAAO,EAAE,CAAC;;ACtaZ,qFAAqF;AAOrF,YAAa;EACT;;SAEQ;IACJ,UAAU,EAAE,sBAAsB;IAClC,KAAK,EAAE,eAAe;IACtB,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,eAAe;;EAGhC;WACU;IACN,eAAe,EAAE,SAAS;;EAG9B,aAAc;IACV,OAAO,EAAE,mBAAmB;;EAGhC,iBAAkB;IACd,OAAO,EAAE,oBAAoB;;EAKjC;8BAC6B;IACzB,OAAO,EAAE,EAAE;;EAGf;YACW;IACP,MAAM,EAAE,cAAc;IACtB,iBAAiB,EAAE,KAAK;;EAG5B,KAAM;IACF,OAAO,EAAE,kBAAkB;;EAG/B;KACI;IACA,iBAAiB,EAAE,KAAK;;EAG5B,GAAI;IACA,SAAS,EAAE,eAAe;;EAG9B;;IAEG;IACC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC;;EAGb;IACG;IACC,gBAAgB,EAAE,KAAK;;EAM3B,OAAQ;IACJ,OAAO,EAAE,IAAI;;EAIb;yBAAS;IACL,gBAAgB,EAAE,eAAe;;EAGzC,MAAO;IACH,MAAM,EAAE,cAAc;;EAG1B,MAAO;IACH,eAAe,EAAE,mBAAmB;IAEpC;aACG;MACC,gBAAgB,EAAE,eAAe;;EAIrC;oBACG;IACC,MAAM,EAAE,yBAAyB;ACpF3C,UAQC;EAPC,WAAW,EAAE,sBAAsB;EACnC,GAAG,EAAE,0DAA6I;EAClJ,GAAG,EAAE,4aAIqM;AAK9M,UAAW;EACT,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,OAAO,EAAE,YAAY;EACrB,WAAW,EAAE,sBAAsB;EACnC,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,CAAC;EACd,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;;AAIA,0BAAS;EAAE,OAAO,EAAE,KAAK;;AACzB,sBAAS;EAAE,OAAO,EAAE,KAAK;;AAEzB;qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,kCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,iCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,iCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,kCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAS3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,wBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,sBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,0BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,kCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,iCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,iCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,kCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,qCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,mCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,uCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,oCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,gCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,+BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,iCAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,8BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,6BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,4BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,2BAAS;EAAE,OAAO,EAAE,OAAO;;AAC3B,yBAAS;EAAE,OAAO,EAAE,OAAO;;ACxS/D,CAAE;ECgEA,kBAAkB,ED/DE,UAAU;ECgE3B,eAAe,EDhEE,UAAU;ECiEtB,UAAU,EDjEE,UAAU;;AAEhC;OACQ;EC4DN,kBAAkB,ED3DE,UAAU;EC4D3B,eAAe,ED5DE,UAAU;EC6DtB,UAAU,ED7DE,UAAU;;AAMhC,IAAK;EACH,SAAS,EAAE,IAAI;EACf,2BAA2B,EAAE,WAAa;;AAG5C,IAAK;EACH,WAAW,EEsBa,8CAAuB;EFrB/C,SAAS,EEuBe,IAAI;EFtB5B,WAAW,EEkCa,OAAW;EFjCnC,KAAK,EE6yBuB,OAAU;EF5yBtC,gBAAgB,EEgtBY,IAAQ;;AF5sBtC;;;QAGS;EACP,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,WAAW,EAAE,OAAO;;AAMtB,CAAE;EACA,KAAK,EE6tBuB,OAAW;EF5tBvC,eAAe,EAAE,IAAI;EAErB,gBACQ;IACN,KAAK,EEqZ8B,OAAiB;IFpZpD,eAAe,EEhBK,SAAS;EFmB/B,OAAQ;IGrDR,OAAO,EAAE,WAAW;IAEpB,OAAO,EAAE,iCAAiC;IAC1C,cAAc,EAAE,IAAI;;AH6DtB,MAAO;EACL,MAAM,EAAE,CAAC;;AAMX,GAAI;EACF,cAAc,EAAE,MAAM;;AAIxB,eAAgB;EIvEd,OAAO,EADuB,KAAK;EAEnC,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;;AJ0Ed,YAAa;EACX,aAAa,EEwBa,GAAG;;AFlB/B,cAAe;EACb,OAAO,EEgpBqB,GAAG;EF/oB/B,WAAW,EE/Ba,OAAW;EFgCnC,gBAAgB,EEgpBY,IAAQ;EF/oBpC,MAAM,EAAE,cAA2B;EACnC,aAAa,EEkpBe,GAAmB;ED1jB/C,kBAAkB,EAAE,oBAAW;EAC1B,aAAa,EAAE,oBAAW;EACvB,UAAU,EAAE,oBAAW;EGlL/B,OAAO,EJ4FiB,YAAY;EI3FpC,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;;AJ8Fd,WAAY;EACV,aAAa,EAAE,GAAG;;AAMpB,EAAG;EACD,UAAU,EE4PuB,IAAqB;EF3PtD,aAAa,EE2PoB,IAAqB;EF1PtD,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,iBAAoB;;AAQlC,QAAS;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,MAAM;EAChB,IAAI,EAAE,gBAAa;EACnB,MAAM,EAAE,CAAC;;AAQT,mDACQ;EACN,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,OAAO;EACjB,IAAI,EAAE,IAAI;;AAWd,eAAgB;EACd,MAAM,EAAE,OAAO;;AKvJjB;4BAC6B;EAC3B,WAAW,EH0Da,OAAO;EGzD/B,WAAW,EH0Da,GAAG;EGzD3B,WAAW,EH0Da,GAAG;EGzD3B,KAAK,EH0DmB,OAAO;EGxD/B;;;;;;;;;;;;;YACO;IACL,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,CAAC;IACd,KAAK,EH00BqB,OAAW;;AGt0BzC;;OAEQ;EACN,UAAU,EHmVuB,IAAqB;EGlVtD,aAAa,EAAE,IAA2B;EAE1C;;;;;;;;YACO;IACL,SAAS,EAAE,GAAG;;AAGlB;;OAEQ;EACN,UAAU,EAAE,IAA2B;EACvC,aAAa,EAAE,IAA2B;EAE1C;;;;;;;;YACO;IACL,SAAS,EAAE,GAAG;;AAIlB,OAAQ;EAAE,SAAS,EHSO,IAA8B;;AGRxD,OAAQ;EAAE,SAAS,EHSO,IAA+B;;AGRzD,OAAQ;EAAE,SAAS,EHSO,IAA6B;;AGRvD,OAAQ;EAAE,SAAS,EHSO,IAA8B;;AGRxD,OAAQ;EAAE,SAAS,EHSO,IAAe;;AGRzC,OAAQ;EAAE,SAAS,EHSO,IAA8B;;AGHxD,CAAE;EACA,MAAM,EAAE,QAA+B;;AAGzC,KAAM;EACJ,aAAa,EH+SoB,IAAqB;EG9StD,SAAS,EAAE,IAA+B;EAC1C,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG;EAEhB,yBAAmC;IANrC,KAAM;MAOF,SAAS,EAAE,IAAuB;;AAStC;MACO;EACL,SAAS,EAAE,GAAkD;;AAG/D;KACM;EACJ,gBAAgB,EH6oBY,OAAiB;EG5oB7C,OAAO,EAAE,IAAI;;AAIf,UAAqB;EAAE,UAAU,EAAE,IAAI;;AACvC,WAAqB;EAAE,UAAU,EAAE,KAAK;;AACxC,YAAqB;EAAE,UAAU,EAAE,MAAM;;AACzC,aAAqB;EAAE,UAAU,EAAE,OAAO;;AAC1C,YAAqB;EAAE,WAAW,EAAE,MAAM;;AAG1C,eAAqB;EAAE,cAAc,EAAE,SAAS;;AAChD,4BAAqB;EAAE,cAAc,EAAE,SAAS;;AAChD,gBAAqB;EAAE,cAAc,EAAE,UAAU;;AAGjD,WAAY;EACV,KAAK,EHuvBuB,OAAW;;AIz1BvC,aAAW;EACT,KAAK,EJwwBqB,OAAW;;AItwBvC;oBACkB;EAChB,KAAK,EAAE,OAAmB;;AAL5B,aAAW;EACT,KAAK,EJktBqB,OAAmB;;AIhtB/C;oBACkB;EAChB,KAAK,EAAE,OAAmB;;AAL5B,UAAW;EACT,KAAK,EJstBqB,OAAgB;;AIptB5C;iBACkB;EAChB,KAAK,EAAE,OAAmB;;AAL5B,aAAW;EACT,KAAK,EJ0tBqB,OAAmB;;AIxtB/C;oBACkB;EAChB,KAAK,EAAE,OAAmB;;AAL5B,YAAW;EACT,KAAK,EJ8tBqB,OAAkB;;AI5tB9C;mBACkB;EAChB,KAAK,EAAE,OAAmB;;AD6G9B,WAAY;EAGV,KAAK,EAAE,IAAI;;AErHX,WAAW;EACT,gBAAgB,ELwwBU,OAAW;;AKtwBvC;kBACkB;EAChB,gBAAgB,EAAE,OAAmB;;AALvC,WAAW;EACT,gBAAgB,ELotBU,OAAiB;;AKltB7C;kBACkB;EAChB,gBAAgB,EAAE,OAAmB;;AALvC,QAAW;EACT,gBAAgB,ELwtBU,OAAc;;AKttB1C;eACkB;EAChB,gBAAgB,EAAE,OAAmB;;AALvC,WAAW;EACT,gBAAgB,EL4tBU,OAAiB;;AK1tB7C;kBACkB;EAChB,gBAAgB,EAAE,OAAmB;;AALvC,UAAW;EACT,gBAAgB,ELguBU,OAAgB;;AK9tB5C;iBACkB;EAChB,gBAAgB,EAAE,OAAmB;;AFgIzC,YAAa;EACX,cAAc,EAAE,GAAiC;EACjD,MAAM,EAAE,WAAmD;EAC3D,aAAa,EAAE,iBAAmC;;AAQpD;EACG;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAA2B;EAC1C;;;OACG;IACD,aAAa,EAAE,CAAC;;AAYpB,cAAe;EAJb,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;;AASlB,YAAa;EAVX,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAWhB,WAAW,EAAE,IAAI;EAEjB,iBAAK;IACH,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,GAAG;;AAKtB,EAAG;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EHmLoB,IAAqB;;AGjLxD;EACG;EACD,WAAW,EH/Ha,OAAW;;AGiIrC,EAAG;EACD,WAAW,EAAE,IAAI;;AAEnB,EAAG;EACD,WAAW,EAAE,CAAC;;AGvLd,iDACQ;EACN,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;AAEhB,uBAAQ;EACN,KAAK,EAAE,IAAI;AH8Lb,yBAA2C;EACzC,iBAAG;IACD,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAA4B;IACnC,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,KAAK;IIlNrB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM;EJmNjB,iBAAG;IACD,WAAW,EH2oBa,KAA4B;;AGjoB1D;yBAE0B;EACxB,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,kBAA6B;;AAE9C,WAAY;EACV,SAAS,EAAE,GAAG;;AAKhB,UAAW;EACT,OAAO,EAAE,SAAiD;EAC1D,MAAM,EAAE,QAAyB;EACjC,SAAS,EH4mBoB,MAAsB;EG3mBnD,WAAW,EAAE,iBAAkC;EAK7C;;0BAAa;IACX,aAAa,EAAE,CAAC;EAMpB;;mBAEO;IACL,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,GAAG;IACd,WAAW,EHtMW,OAAW;IGuMjC,KAAK,EHulBqB,OAAW;IGrlBrC;;4BAAS;MACP,OAAO,EAAE,aAAa;;AAQ5B;qBACsB;EACpB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,CAAC;EACf,YAAY,EAAE,iBAAkC;EAChD,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,KAAK;EAMf;;;;;qCAAS;IAAE,OAAO,EAAE,EAAE;EACtB;;;;;oCAAQ;IACN,OAAO,EAAE,aAAa;;AAM5B,OAAQ;EACN,aAAa,EHuEoB,IAAqB;EGtEtD,UAAU,EAAE,MAAM;EAClB,WAAW,EHzOa,OAAW;;AQzDrC;;;IAGK;EACH,WAAW,ERsCa,iDAAiD;;AQlC3E,IAAK;EACH,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,GAAG;EACd,KAAK,ERmzBuB,OAAO;EQlzBnC,gBAAgB,ERmzBY,OAAO;EQlzBnC,aAAa,ER0Fa,GAAG;;AQtF/B,GAAI;EACF,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,GAAG;EACd,KAAK,ER6yBuB,IAAI;EQ5yBhC,gBAAgB,ER6yBY,IAAI;EQ5yBhC,aAAa,ERmFa,GAAG;EQlF7B,UAAU,EAAE,kCAA8B;EAE1C,OAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;;AAKpB,GAAI;EACF,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,KAAiC;EAC1C,MAAM,EAAE,QAA+B;EACvC,SAAS,EAAE,IAAqB;EAChC,WAAW,ERkBa,OAAW;EQjBnC,UAAU,EAAE,SAAS;EACrB,SAAS,EAAE,UAAU;EACrB,KAAK,ER2xBuB,OAAU;EQ1xBtC,gBAAgB,ERyxBY,OAAO;EQxxBnC,MAAM,EAAE,cAA2B;EACnC,aAAa,ER0Da,GAAG;EQvD7B,QAAK;IACH,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,QAAQ;IACrB,gBAAgB,EAAE,WAAW;IAC7B,aAAa,EAAE,CAAC;;AAKpB,eAAgB;EACd,UAAU,ER2wBkB,KAAK;EQ1wBjC,UAAU,EAAE,MAAM;;AC1DpB,UAAW;ECHT,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAG,IAAa;EAC5B,aAAa,EAAE,IAAa;EJI5B,mCACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,gBAAQ;IACN,KAAK,EAAE,IAAI;EGPb,yBAAmC;IAHrC,UAAW;MAIP,KAAK,ET6UsB,KAAiB;ES3U9C,yBAAmC;IANrC,UAAW;MAOP,KAAK,ET+UsB,KAAkB;ES7U/C,0BAAmC;IATrC,UAAW;MAUP,KAAK,ETiVsB,MAAwB;;ASvUvD,gBAAiB;ECvBf,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAG,IAAa;EAC5B,aAAa,EAAE,IAAa;EJI5B,+CACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,sBAAQ;IACN,KAAK,EAAE,IAAI;;AGmBf,IAAK;ECvBH,WAAW,EAAG,KAAoB;EAClC,YAAY,EAAE,KAAqB;EJHnC,uBACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,UAAQ;IACN,KAAK,EAAE,IAAI;;AKTb,0hBAAS;EACP,QAAQ,EAAE,QAAQ;EAElB,UAAU,EAAE,GAAG;EAEf,YAAY,EAAG,IAA8B;EAC7C,aAAa,EAAE,IAA+B;;AAUhD,qIAAS;EACP,KAAK,EAAE,IAAI;;AAOX,SAAyB;EACvB,KAAK,EAAE,QAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,GAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,GAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,SAAyB;EACvB,KAAK,EAAE,GAAoC;;AAD7C,UAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,UAAyB;EACvB,KAAK,EAAE,SAAoC;;AAD7C,UAAyB;EACvB,KAAK,EAAE,IAAoC;;AAmB7C,cAAsB;EACpB,KAAK,EAAE,IAAI;;AANb,cAA8B;EAC5B,KAAK,EAAE,QAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,GAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,GAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,cAA8B;EAC5B,KAAK,EAAE,GAAoC;;AAD7C,eAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,eAA8B;EAC5B,KAAK,EAAE,SAAoC;;AAD7C,eAA8B;EAC5B,KAAK,EAAE,IAAoC;;AAN7C,cAAsB;EACpB,IAAI,EAAE,IAAI;;AANZ,cAA8B;EAC5B,IAAI,EAAE,QAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,GAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,GAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,cAA8B;EAC5B,IAAI,EAAE,GAAoC;;AAD5C,eAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,eAA8B;EAC5B,IAAI,EAAE,SAAoC;;AAD5C,eAA8B;EAC5B,IAAI,EAAE,IAAoC;;AAmB5C,gBAAgC;EAC9B,WAAW,EAAE,EAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,QAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,GAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,GAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,gBAAgC;EAC9B,WAAW,EAAE,GAAoC;;AADnD,iBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,iBAAgC;EAC9B,WAAW,EAAE,SAAoC;;AADnD,iBAAgC;EAC9B,WAAW,EAAE,IAAoC;;AFGvD,yBAAmC;EErCjC,qIAAS;IACP,KAAK,EAAE,IAAI;;EAOX,SAAyB;IACvB,KAAK,EAAE,QAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,IAAoC;;EAmB7C,cAAsB;IACpB,KAAK,EAAE,IAAI;;EANb,cAA8B;IAC5B,KAAK,EAAE,QAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,IAAoC;;EAN7C,cAAsB;IACpB,IAAI,EAAE,IAAI;;EANZ,cAA8B;IAC5B,IAAI,EAAE,QAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,IAAoC;;EAmB5C,gBAAgC;IAC9B,WAAW,EAAE,EAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,QAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,IAAoC;AFYvD,yBAAmC;EE9CjC,qIAAS;IACP,KAAK,EAAE,IAAI;;EAOX,SAAyB;IACvB,KAAK,EAAE,QAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,IAAoC;;EAmB7C,cAAsB;IACpB,KAAK,EAAE,IAAI;;EANb,cAA8B;IAC5B,KAAK,EAAE,QAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,IAAoC;;EAN7C,cAAsB;IACpB,IAAI,EAAE,IAAI;;EANZ,cAA8B;IAC5B,IAAI,EAAE,QAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,IAAoC;;EAmB5C,gBAAgC;IAC9B,WAAW,EAAE,EAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,QAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,IAAoC;AFqBvD,0BAAmC;EEvDjC,qIAAS;IACP,KAAK,EAAE,IAAI;;EAOX,SAAyB;IACvB,KAAK,EAAE,QAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,SAAyB;IACvB,KAAK,EAAE,GAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,SAAoC;;EAD7C,UAAyB;IACvB,KAAK,EAAE,IAAoC;;EAmB7C,cAAsB;IACpB,KAAK,EAAE,IAAI;;EANb,cAA8B;IAC5B,KAAK,EAAE,QAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,cAA8B;IAC5B,KAAK,EAAE,GAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,SAAoC;;EAD7C,eAA8B;IAC5B,KAAK,EAAE,IAAoC;;EAN7C,cAAsB;IACpB,IAAI,EAAE,IAAI;;EANZ,cAA8B;IAC5B,IAAI,EAAE,QAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,cAA8B;IAC5B,IAAI,EAAE,GAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,SAAoC;;EAD5C,eAA8B;IAC5B,IAAI,EAAE,IAAoC;;EAmB5C,gBAAgC;IAC9B,WAAW,EAAE,EAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,QAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,gBAAgC;IAC9B,WAAW,EAAE,GAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,SAAoC;;EADnD,iBAAgC;IAC9B,WAAW,EAAE,IAAoC;ACvDvD,KAAM;EACJ,gBAAgB,EZgIc,WAAW;;AY9H3C,OAAQ;EACN,WAAW,EZwHmB,GAAG;EYvHjC,cAAc,EZuHgB,GAAG;EYtHjC,KAAK,EZk1BuB,OAAW;EYj1BvC,UAAU,EAAE,IAAI;;AAElB,EAAG;EACD,UAAU,EAAE,IAAI;;AAMlB,MAAO;EACL,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,aAAa,EZqVoB,IAAqB;EY/UlD;;;;;0BACK;IACH,OAAO,EZiGiB,GAAG;IYhG3B,WAAW,EZ8BO,OAAW;IY7B7B,cAAc,EAAE,GAAG;IACnB,UAAU,EAAE,cAA6B;EAK/C,wBAAkB;IAChB,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,cAA6B;EAO1C;;;;;kDACK;IACH,UAAU,EAAE,CAAC;EAKnB,sBAAgB;IACd,UAAU,EAAE,cAA6B;EAI3C,aAAO;IACL,gBAAgB,EZirBU,IAAQ;;AYrqBhC;;;;;kCACK;EACH,OAAO,EZuDiB,GAAG;;AY5CnC,eAAgB;EACd,MAAM,EAAE,cAA6B;EAKjC;;;;;mCACK;IACH,MAAM,EAAE,cAA6B;EAKzC;mCACK;IACH,mBAAmB,EAAE,GAAG;;AAW5B,4CAA8B;EAC5B,gBAAgB,EZsBY,OAAO;;AYZrC,+BAAmB;EACjB,gBAAgB,EZcY,OAAe;;AYL/C,wBAAyB;EACvB,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY;;AAKnB;uBAAiB;EACf,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,UAAU;;ACzIrB;;;;;;;;;+BAGiB;EACf,gBAAgB,Eb+HU,OAAe;;AaxH3C;gLAIuB;EACrB,gBAAgB,EAAE,OAAuB;;AAhB3C;;;;;;;;;gCAGiB;EACf,gBAAgB,Eb6sBQ,OAAiB;;AatsB3C;oLAIuB;EACrB,gBAAgB,EAAE,OAAuB;;AAhB3C;;;;;;;;;6BAGiB;EACf,gBAAgB,EbitBQ,OAAc;;Aa1sBxC;wKAIuB;EACrB,gBAAgB,EAAE,OAAuB;;AAhB3C;;;;;;;;;gCAGiB;EACf,gBAAgB,EbqtBQ,OAAiB;;Aa9sB3C;oLAIuB;EACrB,gBAAgB,EAAE,OAAuB;;AAhB3C;;;;;;;;;+BAGiB;EACf,gBAAgB,EbytBQ,OAAgB;;AaltB1C;gLAIuB;EACrB,gBAAgB,EAAE,OAAuB;;ADkJ/C,iBAAkB;EAChB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK;EAEjB,oCAA8C;IAJhD,iBAAkB;MAKd,KAAK,EAAE,IAAI;MACX,aAAa,EAAE,IAA8B;MAC7C,UAAU,EAAE,MAAM;MAClB,kBAAkB,EAAE,wBAAwB;MAC5C,MAAM,EAAE,cAA6B;MAGrC,0BAAS;QACP,aAAa,EAAE,CAAC;QAOZ;;;;;oDACK;UACH,WAAW,EAAE,MAAM;MAO3B,mCAAkB;QAChB,MAAM,EAAE,CAAC;QAOL;;;;;yEACiB;UACf,WAAW,EAAE,CAAC;QAEhB;;;;;wEACgB;UACd,YAAY,EAAE,CAAC;QAWjB;;;wEACK;UACH,aAAa,EAAE,CAAC;;AEzN5B,QAAS;EACP,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EAIT,SAAS,EAAE,CAAC;;AAGd,MAAO;EACL,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,CAAC;EACV,aAAa,EdsVoB,IAAqB;EcrVtD,SAAS,EAAE,IAAuB;EAClC,WAAW,EAAE,OAAO;EACpB,KAAK,EdizBuB,OAAU;EchzBtC,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,iBAA8B;;AAG/C,KAAM;EACJ,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,GAAG;EAClB,WAAW,EAAE,IAAI;;AAWnB,oBAAqB;Ef4BnB,kBAAkB,Ee3BE,UAAU;Ef4B3B,eAAe,Ee5BE,UAAU;Ef6BtB,UAAU,Ee7BE,UAAU;;AAIhC;sBACuB;EACrB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;;AAGrB,kBAAmB;EACjB,OAAO,EAAE,KAAK;;AAIhB,mBAAoB;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;AAIb;YACa;EACX,MAAM,EAAE,IAAI;;AAId;;4BAE6B;EbzE3B,OAAO,EAAE,WAAW;EAEpB,OAAO,EAAE,iCAAiC;EAC1C,cAAc,EAAE,IAAI;;Aa2EtB,MAAO;EACL,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAA4B;EACzC,SAAS,EdlCe,IAAI;EcmC5B,WAAW,EdvBa,OAAW;EcwBnC,KAAK,Ed+VqC,OAAK;;AcrUjD,aAAc;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EdiG0B,IAAwD;EchGxF,OAAO,EAAE,QAA+C;EACxD,SAAS,EdnEe,IAAI;EcoE5B,WAAW,EdxDa,OAAW;EcyDnC,KAAK,Ed8TqC,OAAK;Ec7T/C,gBAAgB,EdmEe,IAAI;EclEnC,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAuB;EAC/B,aAAa,Ed4EkB,GAAmB;EDpIlD,kBAAkB,EAAE,oCAAO;EACnB,UAAU,EAAE,oCAAO;EAoH3B,kBAAkB,EAAE,4DAAW;EAC1B,aAAa,EAAE,4DAAW;EACvB,UAAU,EAAE,4DAAW;EgBnI/B,mBAAQ;IACN,YAAY,EfsJiB,OAAO;IerJpC,OAAO,EAAE,CAAC;IhBUZ,kBAAkB,EAAE,sEAAO;IACnB,UAAU,EAAE,sEAAO;EAiC3B,+BAAoB;IAClB,KAAK,EC2GwB,IAAI;ID1GjC,OAAO,EAAE,CAAC;EAEZ,mCAAwB;IAAE,KAAK,ECwGA,IAAI;EDvGnC,wCAA8B;IAAE,KAAK,ECuGN,IAAI;EcvEnC,kFAEqB;IACnB,gBAAgB,EdytBU,OAAa;IcxtBvC,OAAO,EAAE,CAAC;EAGZ,yDACqB;IACnB,MAAM,EdmFuB,WAAW;;Ac5E5C,qBAAsB;EACpB,MAAM,EAAE,IAAI;;AAWd,oBAAqB;EACnB,kBAAkB,EAAE,IAAI;;AAa1B,qDAAsD;EAKlD;;;kCAAe;IACb,WAAW,Ed0BiB,IAAwD;EcvBtF;;;;;;;;;;;;;;;;;qBACkB;IAChB,WAAW,EdyBiB,IAAgF;EctB9G;;;;;;;;;;;;;;;;;qBACkB;IAChB,WAAW,EdkBiB,IAA+E;AcPjH,WAAY;EACV,aAAa,EdWkB,IAAI;;AcHrC;SACU;EACR,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI;EAEnB;iBAAM;IACJ,UAAU,Ed4IqB,IAAqB;Ic3IpD,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,OAAO;;AAGnB;;;uCAGwC;EACtC,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,KAAK;EAClB,UAAU,EAAE,MAAM;;AAGpB;qBACsB;EACpB,UAAU,EAAE,IAAI;;AAIlB;gBACiB;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,CAAC;EAChB,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,OAAO;;AAEjB;mCACoC;EAClC,UAAU,EAAE,CAAC;EACb,WAAW,EAAE,IAAI;;AASjB;;;sBAEqB;EACnB,MAAM,EdzCuB,WAAW;;Ac+C1C;;gBACqB;EACnB,MAAM,EdjDuB,WAAW;;AcyDxC;;eAAM;EACJ,MAAM,Ed1DqB,WAAW;;AcqE5C,oBAAqB;EAEnB,WAAW,EAAE,GAA4B;EACzC,cAAc,EAAE,GAA4B;EAE5C,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,IAAyC;EAErD;;;;+DACW;IACT,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;;ACjPlB;;yCAAW;EACT,MAAM,EfkJwB,IAAgF;EejJ9G,OAAO,EAAE,QAAqC;EAC9C,SAAS,EfpBa,IAA8B;EeqBpD,WAAW,EfiCa,GAAG;EehC3B,aAAa,EfiIgB,GAAoB;;Ae9HnD;;+CAAiB;EACf,MAAM,Ef0IwB,IAAgF;EezI9G,WAAW,EfyImB,IAAgF;;AetIhH;;;;;;yDAC2B;EACzB,MAAM,EAAE,IAAI;;ADiPd,4BAAc;EACZ,MAAM,Ed9GwB,IAAgF;Ec+G9G,OAAO,EAAE,QAAiD;EAC1D,SAAS,EdpRa,IAA8B;EcqRpD,WAAW,Ed/Na,GAAG;EcgO3B,aAAa,Ed/HgB,GAAoB;AciInD,kCAAoB;EAClB,MAAM,EdrHwB,IAAgF;EcsH9G,WAAW,EdtHmB,IAAgF;AcwHhH;4CAC8B;EAC5B,MAAM,EAAE,IAAI;AAEd,mCAAqB;EACnB,MAAM,Ed7HwB,IAAgF;Ec8H9G,UAAU,EAAE,IAA0C;EACtD,OAAO,EAAE,QAAuD;EAChE,SAAS,EdpSa,IAA8B;EcqSpD,WAAW,Ed/Oa,GAAG;;AerC7B;;yCAAW;EACT,MAAM,EfgJwB,IAA+E;Ee/I7G,OAAO,EAAE,SAAqC;EAC9C,SAAS,EfrBa,IAA8B;EesBpD,WAAW,EfgCa,OAAS;Ee/BjC,aAAa,Ef+HgB,GAAoB;;Ae5HnD;;+CAAiB;EACf,MAAM,EfwIwB,IAA+E;EevI7G,WAAW,EfuImB,IAA+E;;AepI/G;;;;;;yDAC2B;EACzB,MAAM,EAAE,IAAI;;AD2Qd,4BAAc;EACZ,MAAM,Ed1IwB,IAA+E;Ec2I7G,OAAO,EAAE,SAAiD;EAC1D,SAAS,Ed/Sa,IAA8B;EcgTpD,WAAW,Ed1Pa,OAAS;Ec2PjC,aAAa,Ed3JgB,GAAoB;Ac6JnD,kCAAoB;EAClB,MAAM,EdjJwB,IAA+E;EckJ7G,WAAW,EdlJmB,IAA+E;AcoJ/G;4CAC8B;EAC5B,MAAM,EAAE,IAAI;AAEd,mCAAqB;EACnB,MAAM,EdzJwB,IAA+E;Ec0J7G,UAAU,EAAE,IAA0C;EACtD,OAAO,EAAE,SAAuD;EAChE,SAAS,Ed/Ta,IAA8B;EcgUpD,WAAW,Ed1Qa,OAAS;;AcmRrC,aAAc;EAEZ,QAAQ,EAAE,QAAQ;EAGlB,2BAAc;IACZ,aAAa,EAAE,MAA2B;;AAI9C,sBAAuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,KAAK;EACd,KAAK,EdxL2B,IAAwD;EcyLxF,MAAM,EdzL0B,IAAwD;Ec0LxF,WAAW,Ed1LqB,IAAwD;Ec2LxF,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,IAAI;;AAEtB;;;;qDAEsD;EACpD,KAAK,Ed/L2B,IAA+E;EcgM/G,MAAM,EdhM0B,IAA+E;EciM/G,WAAW,EdjMqB,IAA+E;;AcmMjH;;;;qDAEsD;EACpD,KAAK,EdpM2B,IAAgF;EcqMhH,MAAM,EdrM0B,IAAgF;EcsMhH,WAAW,EdtMqB,IAAgF;;AelNhH;;;;;yJASyB;EACvB,KAAK,EfssBqB,OAAmB;AensB/C,0BAAc;EACZ,YAAY,EfksBc,OAAmB;EDnpB/C,kBAAkB,EAAE,oCAAO;EACnB,UAAU,EAAE,oCAAO;EgB9CzB,gCAAQ;IACN,YAAY,EAAE,OAA0B;IhB4C5C,kBAAkB,EAAE,qDAAO;IACnB,UAAU,EAAE,qDAAO;AgBvC3B,+BAAmB;EACjB,KAAK,EfwrBqB,OAAmB;EevrB7C,YAAY,EfurBc,OAAmB;EetrB7C,gBAAgB,EfwrBU,OAAiB;AerrB7C,mCAAuB;EACrB,KAAK,EfkrBqB,OAAmB;;AehtB/C;;;;;yJASyB;EACvB,KAAK,Ef8sBqB,OAAmB;Ae3sB/C,0BAAc;EACZ,YAAY,Ef0sBc,OAAmB;ED3pB/C,kBAAkB,EAAE,oCAAO;EACnB,UAAU,EAAE,oCAAO;EgB9CzB,gCAAQ;IACN,YAAY,EAAE,OAA0B;IhB4C5C,kBAAkB,EAAE,qDAAO;IACnB,UAAU,EAAE,qDAAO;AgBvC3B,+BAAmB;EACjB,KAAK,EfgsBqB,OAAmB;Ee/rB7C,YAAY,Ef+rBc,OAAmB;Ee9rB7C,gBAAgB,EfgsBU,OAAiB;Ae7rB7C,mCAAuB;EACrB,KAAK,Ef0rBqB,OAAmB;;AextB/C;;;;;+IASyB;EACvB,KAAK,EfktBqB,OAAkB;Ae/sB9C,wBAAc;EACZ,YAAY,Ef8sBc,OAAkB;ED/pB9C,kBAAkB,EAAE,oCAAO;EACnB,UAAU,EAAE,oCAAO;EgB9CzB,8BAAQ;IACN,YAAY,EAAE,OAA0B;IhB4C5C,kBAAkB,EAAE,qDAAO;IACnB,UAAU,EAAE,qDAAO;AgBvC3B,6BAAmB;EACjB,KAAK,EfosBqB,OAAkB;EensB5C,YAAY,EfmsBc,OAAkB;EelsB5C,gBAAgB,EfosBU,OAAgB;AejsB5C,iCAAuB;EACrB,KAAK,Ef8rBqB,OAAkB;;AcnT9C,4CAA2B;EACxB,GAAG,EAAE,IAA2B;AAEnC,oDAAmC;EAChC,GAAG,EAAE,CAAC;;AAUX,WAAY;EACV,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAyB;;AAmBhC,yBAAmC;EAEjC,wBAAY;IACV,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM;EAIxB,0BAAc;IACZ,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,MAAM;EAIxB,iCAAqB;IACnB,OAAO,EAAE,YAAY;EAGvB,yBAAa;IACX,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM;IAEtB;;2CAEc;MACZ,KAAK,EAAE,IAAI;EAKf,yCAA6B;IAC3B,KAAK,EAAE,IAAI;EAGb,2BAAe;IACb,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM;EAKxB;wBACU;IACR,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM;IAEtB;gCAAM;MACJ,YAAY,EAAE,CAAC;EAGnB;+CACiC;IAC/B,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,CAAC;EAIhB,iDAAqC;IACnC,GAAG,EAAE,CAAC;;AAqBV;;;iCAGiB;EACf,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,GAA4B;AAI3C;0BACU;EACR,UAAU,EAAE,IAAsD;AAIpE,4BAAY;EJziBZ,WAAW,EAAG,KAAoB;EAClC,YAAY,EAAE,KAAqB;EJHnC,uEACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,kCAAQ;IACN,KAAK,EAAE,IAAI;AQ2iBb,yBAAmC;EACjC,+BAAe;IACb,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,GAA4B;AAQ7C,qDAAqC;EACnC,KAAK,EAAE,IAA+B;AAQtC,yBAAmC;EACjC,8CAAe;IACb,WAAW,EAAE,UAAoD;IACjE,SAAS,EdliBS,IAA8B;AcuiBpD,yBAAmC;EACjC,8CAAe;IACb,WAAW,EAAE,GAA6B;IAC1C,SAAS,EdziBS,IAA8B;;AgB7CxD,IAAK;EACH,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,CAAC;EAChB,WAAW,EhB0IoB,MAAM;EgBzIrC,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,YAAY;EAC1B,MAAM,EAAE,OAAO;EACf,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,qBAAqB;EAC7B,WAAW,EAAE,MAAM;EC6CnB,OAAO,EAAE,QAAqC;EAC9C,SAAS,EjBbe,IAAI;EiBc5B,WAAW,EjBFa,OAAW;EiBGnC,aAAa,EjBgHkB,GAAmB;EDuClD,mBAAmB,EiBrME,IAAI;EjBsMtB,gBAAgB,EiBtME,IAAI;EjBuMrB,eAAe,EiBvME,IAAI;EjBwMjB,WAAW,EiBxME,IAAI;EAKvB,kGACQ;IftBV,OAAO,EAAE,WAAW;IAEpB,OAAO,EAAE,iCAAiC;IAC1C,cAAc,EAAE,IAAI;EewBpB,kCAEQ;IACN,KAAK,EhBqHwB,IAAI;IgBpHjC,eAAe,EAAE,IAAI;EAGvB,wBACS;IACP,OAAO,EAAE,CAAC;IACV,gBAAgB,EAAE,IAAI;IjB2BxB,kBAAkB,EAAE,oCAAO;IACnB,UAAU,EAAE,oCAAO;EiBxB3B,sDAEqB;IACnB,MAAM,EhBuLuB,WAAW;IkBpO1C,OAAO,EF8CY,IAAG;IE3CtB,MAAM,EAAE,iBAA0B;InB8DlC,kBAAkB,EAAE,IAAO;IACnB,UAAU,EAAE,IAAO;;AiBZ3B,wCACqB;EACnB,cAAc,EAAE,IAAI;;AAQxB,YAAa;EC7DX,KAAK,EjBiJ0B,IAAI;EiBhJnC,gBAAgB,EjBiJe,IAAI;EiBhJnC,YAAY,EjBiJmB,IAAI;EiB/InC,sCACQ;IACN,KAAK,EjB2IwB,IAAI;IiB1IjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,kBAAQ;IACN,KAAK,EjBsIwB,IAAI;IiBrIjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,8EAE0B;IACxB,KAAK,EjB+HwB,IAAI;IiB9HjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,oSAEQ;MACN,KAAK,EjBwHsB,IAAI;MiBvH/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,8EAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,8jBAKS;IACP,gBAAgB,EjBsGW,IAAI;IiBrG3B,YAAY,EjBsGW,IAAI;EiBlGnC,mBAAO;IACL,KAAK,EjBgGwB,IAAI;IiB/FjC,gBAAgB,EjB8Fa,IAAI;;AgBjFrC,YAAa;EChEX,KAAK,EjBqJ0B,IAAI;EiBpJnC,gBAAgB,EjBswBY,OAAW;EiBrwBvC,YAAY,EjBqJmB,OAA2B;EiBnJ1D,sCACQ;IACN,KAAK,EjB+IwB,IAAI;IiB9IjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,kBAAQ;IACN,KAAK,EjB0IwB,IAAI;IiBzIjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,8EAE0B;IACxB,KAAK,EjBmIwB,IAAI;IiBlIjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,oSAEQ;MACN,KAAK,EjB4HsB,IAAI;MiB3H/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,8EAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,8jBAKS;IACP,gBAAgB,EjB2tBQ,OAAW;IiB1tB/B,YAAY,EjB0GW,OAA2B;EiBtG1D,mBAAO;IACL,KAAK,EjBqtBqB,OAAW;IiBptBrC,gBAAgB,EjBkGa,IAAI;;AgBjFrC,YAAa;ECpEX,KAAK,EjByJ0B,IAAI;EiBxJnC,gBAAgB,EjB+oBY,OAAc;EiB9oB1C,YAAY,EjByJmB,OAA2B;EiBvJ1D,sCACQ;IACN,KAAK,EjBmJwB,IAAI;IiBlJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,kBAAQ;IACN,KAAK,EjB8IwB,IAAI;IiB7IjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,8EAE0B;IACxB,KAAK,EjBuIwB,IAAI;IiBtIjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,oSAEQ;MACN,KAAK,EjBgIsB,IAAI;MiB/H/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,8EAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,8jBAKS;IACP,gBAAgB,EjBomBQ,OAAc;IiBnmBlC,YAAY,EjB8GW,OAA2B;EiB1G1D,mBAAO;IACL,KAAK,EjB8lBqB,OAAc;IiB7lBxC,gBAAgB,EjBsGa,IAAI;;AgBjFrC,SAAU;ECxER,KAAK,EjB6J0B,IAAI;EiB5JnC,gBAAgB,EjBqpBY,OAAW;EiBppBvC,YAAY,EjB6JmB,OAAwB;EiB3JvD,gCACQ;IACN,KAAK,EjBuJwB,IAAI;IiBtJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,eAAQ;IACN,KAAK,EjBkJwB,IAAI;IiBjJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,qEAE0B;IACxB,KAAK,EjB2IwB,IAAI;IiB1IjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,yQAEQ;MACN,KAAK,EjBoIsB,IAAI;MiBnI/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,qEAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,wgBAKS;IACP,gBAAgB,EjB0mBQ,OAAW;IiBzmB/B,YAAY,EjBkHW,OAAwB;EiB9GvD,gBAAO;IACL,KAAK,EjBomBqB,OAAW;IiBnmBrC,gBAAgB,EjB0Ga,IAAI;;AgBjFrC,YAAa;EC5EX,KAAK,EjBiK0B,IAAI;EiBhKnC,gBAAgB,EjBipBY,OAAc;EiBhpB1C,YAAY,EjBiKmB,OAA2B;EiB/J1D,sCACQ;IACN,KAAK,EjB2JwB,IAAI;IiB1JjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,kBAAQ;IACN,KAAK,EjBsJwB,IAAI;IiBrJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,8EAE0B;IACxB,KAAK,EjB+IwB,IAAI;IiB9IjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,oSAEQ;MACN,KAAK,EjBwIsB,IAAI;MiBvI/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,8EAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,8jBAKS;IACP,gBAAgB,EjBsmBQ,OAAc;IiBrmBlC,YAAY,EjBsHW,OAA2B;EiBlH1D,mBAAO;IACL,KAAK,EjBgmBqB,OAAc;IiB/lBxC,gBAAgB,EjB8Ga,IAAI;;AgBjFrC,WAAY;EChFV,KAAK,EjBqK0B,IAAI;EiBpKnC,gBAAgB,EjBmpBY,OAAa;EiBlpBzC,YAAY,EjBqKmB,OAA0B;EiBnKzD,oCACQ;IACN,KAAK,EjB+JwB,IAAI;IiB9JjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,iBAAQ;IACN,KAAK,EjB0JwB,IAAI;IiBzJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;EAExC,2EAE0B;IACxB,KAAK,EjBmJwB,IAAI;IiBlJjC,gBAAgB,EAAE,OAAwB;IACtC,YAAY,EAAE,OAAoB;IAEtC,2RAEQ;MACN,KAAK,EjB4IsB,IAAI;MiB3I/B,gBAAgB,EAAE,OAAwB;MACtC,YAAY,EAAE,OAAoB;EAG1C,2EAE0B;IACxB,gBAAgB,EAAE,IAAI;EAKtB,4iBAKS;IACP,gBAAgB,EjBwmBQ,OAAa;IiBvmBjC,YAAY,EjB0HW,OAA0B;EiBtHzD,kBAAO;IACL,KAAK,EjBkmBqB,OAAa;IiBjmBvC,gBAAgB,EjBkHa,IAAI;;AgB5ErC,SAAU;EACR,KAAK,EhB6qBuB,OAAW;EgB5qBvC,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,CAAC;EAEhB,gGAIqB;IACnB,gBAAgB,EAAE,WAAW;IjBrC/B,kBAAkB,EAAE,IAAO;IACnB,UAAU,EAAE,IAAO;EiBuC3B,6DAGS;IACP,YAAY,EAAE,WAAW;EAE3B,gCACQ;IACN,KAAK,EhBsV8B,OAAiB;IgBrVpD,eAAe,EhB/EK,SAAS;IgBgF7B,gBAAgB,EAAE,WAAW;EAI7B,4HACQ;IACN,KAAK,EhBiuBmB,OAAW;IgBhuBnC,eAAe,EAAE,IAAI;;AAS3B,6BAAQ;ECvEN,OAAO,EAAE,SAAqC;EAC9C,SAAS,EjBZe,IAA8B;EiBatD,WAAW,EjByCe,OAAS;EiBxCnC,aAAa,EjBiHkB,GAAoB;;AgBzCrD,6BAAQ;EC3EN,OAAO,EAAE,QAAqC;EAC9C,SAAS,EjBXe,IAA8B;EiBYtD,WAAW,EjB0Ce,GAAG;EiBzC7B,aAAa,EjBkHkB,GAAoB;;AgBtCrD,6BAAQ;EC/EN,OAAO,EAAE,OAAqC;EAC9C,SAAS,EjBXe,IAA8B;EiBYtD,WAAW,EjB0Ce,GAAG;EiBzC7B,aAAa,EjBkHkB,GAAoB;;AgB9BrD,UAAW;EACT,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;;AAIb,uBAAwB;EACtB,UAAU,EAAE,GAAG;;AAOf;;8BAAY;EACV,KAAK,EAAE,IAAI;;AG5Jf,KAAM;EACJ,OAAO,EAAE,CAAC;EpB+KV,kBAAkB,EAAE,oBAAW;EAC1B,aAAa,EAAE,oBAAW;EACvB,UAAU,EAAE,oBAAW;EoB/K/B,QAAK;IACH,OAAO,EAAE,CAAC;;AAId,SAAU;EACR,OAAO,EAAE,IAAI;EAEb,YAAU;IAAE,OAAO,EAAE,KAAK;;AAK5B,cAAkB;EAAE,OAAO,EAAE,SAAS;;AAEtC,iBAAkB;EAAE,OAAO,EAAE,eAAe;;AAE5C,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,MAAM;EpB8JhB,2BAA2B,EAAE,kBAAoB;EACzC,mBAAmB,EAAE,kBAAoB;EAOjD,2BAA2B,EAAE,KAAoB;EACzC,mBAAmB,EAAE,KAAoB;EAGjD,kCAAkC,EoBvKE,IAAI;EpBwKhC,0BAA0B,EoBxKE,IAAI;;AC7B1C,MAAO;EACL,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAI,UAAwB;EACtC,UAAU,EAAI,YAA0B;EACxC,YAAY,EAAE,qBAAmC;EACjD,WAAW,EAAG,qBAAmC;;AAInD;SACU;EACR,QAAQ,EAAE,QAAQ;;AAIpB,sBAAuB;EACrB,OAAO,EAAE,CAAC;;AAIZ,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EpBmPkB,IAAI;EoBlP7B,OAAO,EAAE,IAAI;EACb,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,IAAI;EAChB,SAAS,EpBUe,IAAI;EoBT5B,UAAU,EAAE,IAAI;EAChB,gBAAgB,EpBoMe,IAAI;EoBnMnC,MAAM,EAAE,cAAmC;EAC3C,MAAM,EAAE,6BAA0B;EAClC,aAAa,EpB+Da,GAAG;EDzC7B,kBAAkB,EAAE,+BAAO;EACnB,UAAU,EAAE,+BAAO;EqBrB3B,eAAe,EAAE,WAAW;EAK5B,yBAAa;IACX,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,IAAI;EAIZ,uBAAS;ICtDT,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAmC;IAC3C,QAAQ,EAAE,MAAM;IAChB,gBAAgB,ErB6Oe,OAAO;EoBrLtC,uBAAS;IACP,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,MAAM;IACnB,WAAW,EpBNW,OAAW;IoBOjC,KAAK,EpBqwBqB,OAAU;IoBpwBpC,WAAW,EAAE,MAAM;;AAMrB,4DACQ;EACN,eAAe,EAAE,IAAI;EACrB,KAAK,EpB0KwB,OAAsB;EoBzKnD,gBAAgB,EpB2Ka,OAAO;;AoBrKtC,oGAEQ;EACN,KAAK,EpBmlBuB,IAAuB;EoBllBnD,eAAe,EAAE,IAAI;EACrB,OAAO,EAAE,CAAC;EACV,gBAAgB,EpBgrBU,OAAW;;AoBvqBvC,0GAEQ;EACN,KAAK,EpBovBqB,OAAW;AoBhvBvC,0EACQ;EACN,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,WAAW;EAC7B,gBAAgB,EAAE,IAAI;EE3GxB,MAAM,EAAE,2DAA2D;EF6GjE,MAAM,EpBoHuB,WAAW;;AoB7G1C,sBAAiB;EACf,OAAO,EAAE,KAAK;AAIhB,SAAI;EACF,OAAO,EAAE,CAAC;;AAQd,oBAAqB;EACnB,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,CAAC;;AAQV,mBAAoB;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;;AAIb,gBAAiB;EACf,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,SAAS,EpBtGe,IAA8B;EoBuGtD,WAAW,EpB7Fa,OAAW;EoB8FnC,KAAK,EpBgsBuB,OAAW;EoB/rBvC,WAAW,EAAE,MAAM;;AAIrB,kBAAmB;EACjB,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,GAAuB;;AAIlC,4BAA6B;EAC3B,KAAK,EAAE,CAAC;EACR,IAAI,EAAE,IAAI;;AAWV;qCAAO;EACL,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,UAAwB;EACvC,aAAa,EAAE,YAA0B;EACzC,OAAO,EAAE,EAAE;AAGb;6CAAe;EACb,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;;AAStB,yBAA2C;EAEvC,4BAAe;IACb,KAAK,EAAE,CAAC;IAAE,IAAI,EAAE,IAAI;EAItB,iCAAoB;IAClB,IAAI,EAAE,CAAC;IAAE,KAAK,EAAE,IAAI;AG/M1B;mBACoB;EAClB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;EACtB;4BAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI;IAEX;;;;qCAGS;MACP,OAAO,EAAE,CAAC;;AAOd;;;kCAGwB;EACtB,WAAW,EAAE,IAAI;;AAKrB,YAAa;EACX,WAAW,EAAE,IAAI;EjBtBjB,uCACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,kBAAQ;IACN,KAAK,EAAE,IAAI;EiBmBb;;2BAEa;IACX,KAAK,EAAE,IAAI;EAEb;;6BAEe;IACb,WAAW,EAAE,GAAG;;AAIpB,0EAA2E;EACzE,aAAa,EAAE,CAAC;;AAIlB,6BAA8B;EAC5B,WAAW,EAAE,CAAC;EACd,oEAAyC;IClDzC,0BAA0B,EDmDK,CAAC;IClD7B,uBAAuB,EDkDK,CAAC;;AAIlC;+CACgD;EChD9C,yBAAyB,EDiDG,CAAC;EChD1B,sBAAsB,EDgDG,CAAC;;AAI/B,uBAAwB;EACtB,KAAK,EAAE,IAAI;;AAEb,iEAAkE;EAChE,aAAa,EAAE,CAAC;;AAGhB;uEACmB;ECrEnB,0BAA0B,EDsEK,CAAC;ECrE7B,uBAAuB,EDqEK,CAAC;;AAGlC,uEAAwE;ECjEtE,yBAAyB,EDkEG,CAAC;ECjE1B,sBAAsB,EDiEG,CAAC;;AAI/B;gCACiC;EAC/B,OAAO,EAAE,CAAC;;AAiBZ,oCAAqC;EACnC,YAAY,EAAE,GAAG;EACjB,aAAa,EAAE,GAAG;;AAEpB,0FAAwC;EACtC,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;;AAKrB,gCAAiC;ExB/C/B,kBAAkB,EAAE,oCAAO;EACnB,UAAU,EAAE,oCAAO;EwBkD3B,yCAAW;IxBnDX,kBAAkB,EAAE,IAAO;IACnB,UAAU,EAAE,IAAO;;AwByD7B,WAAY;EACV,WAAW,EAAE,CAAC;;AAGhB,2CAAe;EACb,YAAY,EAAE,SAAuC;EACrD,mBAAmB,EAAE,CAAC;;AAGxB,2DAAuB;EACrB,YAAY,EAAE,SAAuC;;AAQrD;;uCAEoB;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;AjBzIjB,+EACQ;EACN,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;AAEhB,sCAAQ;EACN,KAAK,EAAE,IAAI;AiByIX,uCAAO;EACL,KAAK,EAAE,IAAI;AAIf;;;6CAG0B;EACxB,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,CAAC;;AAKhB,6DAAqC;EACnC,aAAa,EAAE,CAAC;AAElB,uDAA+B;EAC7B,uBAAuB,EvBGM,GAAmB;EwBvKlD,0BAA0B,EDqKM,CAAC;ECpKhC,yBAAyB,EDoKM,CAAC;AAEjC,uDAA+B;EAC7B,yBAAyB,EvBDI,GAAmB;EwB/KlD,uBAAuB,EDiLM,CAAC;EChL7B,sBAAsB,EDgLM,CAAC;;AAGhC,0EAA2E;EACzE,aAAa,EAAE,CAAC;;AAGhB;gFACmB;ECjLnB,0BAA0B,EDkLM,CAAC;ECjLhC,yBAAyB,EDiLM,CAAC;;AAGnC,gFAAiF;EC7L/E,uBAAuB,ED8LI,CAAC;EC7L3B,sBAAsB,ED6LI,CAAC;;AAO9B,oBAAqB;EACnB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,KAAK;EACnB,eAAe,EAAE,QAAQ;EACzB;mCACa;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,EAAE;EAEX,sCAAkB;IAChB,KAAK,EAAE,IAAI;EAGb,gDAA4B;IAC1B,IAAI,EAAE,IAAI;;AAoBV;;;kEACuB;EACrB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,gBAAa;EACnB,cAAc,EAAE,IAAI;;AE1O1B,YAAa;EACX,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,QAAQ;EAGzB,2BAAiB;IACf,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;EAGlB,0BAAc;IAGZ,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC;IAKV,KAAK,EAAE,IAAI;IAEX,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC;;AAuBpB;;0BAE2B;EACzB,OAAO,EAAE,UAAU;EAEnB;;+DAAqC;IACnC,aAAa,EAAE,CAAC;;AAIpB;gBACiB;EACf,KAAK,EAAE,EAAE;EACT,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM;;AAKxB,kBAAmB;EACjB,OAAO,EAAE,QAA+C;EACxD,SAAS,EzBvBe,IAAI;EyBwB5B,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,CAAC;EACd,KAAK,EzByWqC,OAAK;EyBxW/C,UAAU,EAAE,MAAM;EAClB,gBAAgB,EzBwxBY,OAAa;EyBvxBzC,MAAM,EAAE,cAAyC;EACjD,aAAa,EzB4Ba,GAAG;EyBzB7B;;6DAAW;IACT,OAAO,EAAE,QAAiD;IAC1D,SAAS,EzBjCa,IAA8B;IyBkCpD,aAAa,EzBwBW,GAAG;EyBtB7B;;6DAAW;IACT,OAAO,EAAE,SAAiD;IAC1D,SAAS,EzBvCa,IAA8B;IyBwCpD,aAAa,EzBkBW,GAAG;EyBd7B;2CACuB;IACrB,UAAU,EAAE,CAAC;;AAKjB;;;;;;gEAMiE;EDtG/D,0BAA0B,ECuGG,CAAC;EDtG3B,uBAAuB,ECsGG,CAAC;;AAEhC,8BAA+B;EAC7B,YAAY,EAAE,CAAC;;AAEjB;;;;;;kEAMmE;ED1GjE,yBAAyB,EC2GG,CAAC;ED1G1B,sBAAsB,EC0GG,CAAC;;AAE/B,6BAA8B;EAC5B,WAAW,EAAE,CAAC;;AAKhB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAGlB,SAAS,EAAE,CAAC;EACZ,WAAW,EAAE,MAAM;EAInB,uBAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,8BAAO;MACL,WAAW,EAAE,IAAI;IAGnB,4FAES;MACP,OAAO,EAAE,CAAC;EAMZ;2CACa;IACX,YAAY,EAAE,IAAI;EAIpB;0CACa;IACX,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,IAAI;;AC3JvB,IAAK;EACH,aAAa,EAAE,CAAC;EAChB,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EpBEhB,uBACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,UAAQ;IACN,KAAK,EAAE,IAAI;EoBLb,SAAK;IACH,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,KAAK;IAEd,aAAI;MACF,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,KAAK;MACd,OAAO,E1BqZ+B,SAAU;M0BpZhD,wCACQ;QACN,eAAe,EAAE,IAAI;QACrB,gBAAgB,E1B80BM,OAAa;I0Bz0BvC,sBAAe;MACb,KAAK,E1B8zBmB,OAAW;M0B5zBnC,0DACQ;QACN,KAAK,E1B0zBiB,OAAW;Q0BzzBjC,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,WAAW;QAC7B,MAAM,E1BiMmB,WAAW;E0B1LxC,0DAEQ;IACN,gBAAgB,E1BuzBQ,OAAa;I0BtzBrC,YAAY,E1B4tBY,OAAW;E0BntBvC,iBAAa;ILrDb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,KAAmC;IAC3C,QAAQ,EAAE,MAAM;IAChB,gBAAgB,EAJS,OAAO;EK6DhC,mBAAe;IACb,SAAS,EAAE,IAAI;;AASnB,SAAU;EACR,aAAa,EAAE,cAAgC;EAC/C,cAAK;IACH,KAAK,EAAE,IAAI;IAEX,aAAa,EAAE,IAAI;IAGnB,kBAAI;MACF,YAAY,EAAE,GAAG;MACjB,WAAW,E1BtBS,OAAW;M0BuB/B,MAAM,EAAE,qBAAqB;MAC7B,aAAa,EAAE,WAA2C;MAC1D,wBAAQ;QACN,YAAY,EAAE,oBAA0F;IAM1G,2FAEQ;MACN,KAAK,E1BoV+B,OAAK;M0BnVzC,gBAAgB,E1B4oBM,IAAQ;M0B3oB9B,MAAM,EAAE,cAAkD;MAC1D,mBAAmB,EAAE,WAAW;MAChC,MAAM,EAAE,OAAO;;AAerB,eAAK;EACH,KAAK,EAAE,IAAI;EAGX,mBAAI;IACF,aAAa,E1BmUyB,GAAmB;E0BjU3D,oBAAK;IACH,WAAW,EAAE,GAAG;EAKhB,8FAEQ;IACN,KAAK,E1BwiBmB,IAAuB;I0BviB/C,gBAAgB,E1BuoBM,OAAW;;A0B9nBvC,iBAAK;EACH,KAAK,EAAE,IAAI;EACX,sBAAK;IACH,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,CAAC;;AAYpB,uCAAe;EACb,KAAK,EAAE,IAAI;EAEX,iDAAK;IACH,KAAK,EAAE,IAAI;IACX,yDAAI;MACF,UAAU,EAAE,MAAM;MAClB,aAAa,EAAE,GAAG;EAItB,yCAA2B;IACzB,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;EAGZ,yBAAmC;IACjC,iDAAK;MACH,OAAO,EAAE,UAAU;MACnB,KAAK,EAAE,EAAE;MACT,yDAAI;QACF,aAAa,EAAE,CAAC;;AASxB,4CAAoB;EAClB,aAAa,EAAE,CAAC;EAEhB,8DAAS;IAEP,YAAY,EAAE,CAAC;IACf,aAAa,E1BtFW,GAAG;E0ByF7B;;;;6CAEoB;IAClB,MAAM,EAAE,cAA+C;EAGzD,yBAAmC;IACjC,8DAAS;MACP,aAAa,EAAE,cAA+C;MAC9D,aAAa,EAAE,WAA2C;IAE5D;;;;+CAEoB;MAClB,mBAAmB,E1B2hBK,IAAQ;;A0BhhBpC,wBAAY;EACV,OAAO,EAAE,IAAI;AAEf,sBAAU;EACR,OAAO,EAAE,KAAK;;AASlB,wBAAyB;EAEvB,UAAU,EAAE,IAAI;EF3OhB,uBAAuB,EE6OI,CAAC;EF5O3B,sBAAsB,EE4OI,CAAC;;ACtO9B,OAAQ;EACN,QAAQ,EAAE,QAAQ;EAClB,UAAU,E3BgWuB,IAAI;E2B/VrC,aAAa,E3BgWoB,IAAqB;E2B/VtD,MAAM,EAAE,qBAAqB;ErBD7B,6BACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,aAAQ;IACN,KAAK,EAAE,IAAI;EqBAb,yBAA2C;IAT7C,OAAQ;MAUJ,aAAa,E3B0VkB,GAAmB;;AMjWpD,2CACQ;EACN,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;AAEhB,oBAAQ;EACN,KAAK,EAAE,IAAI;AqBcb,yBAA2C;EAH7C,cAAe;IAIX,KAAK,EAAE,IAAI;;AAef,gBAAiB;EACf,UAAU,EAAE,OAAO;EACnB,aAAa,E3B4ToB,IAA+B;E2B3ThE,YAAY,E3B2TqB,IAA+B;E2B1ThE,UAAU,EAAE,qBAAqB;EACjC,UAAU,EAAE,sCAAkC;EAE9C,0BAA0B,EAAE,KAAK;ErB3CjC,+CACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,sBAAQ;IACN,KAAK,EAAE,IAAI;EqBuCb,mBAAK;IACH,UAAU,EAAE,IAAI;EAGlB,yBAA2C;IAb7C,gBAAiB;MAcb,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,CAAC;MACb,UAAU,EAAE,IAAI;MAEhB,yBAAW;QACT,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,CAAC;QACjB,QAAQ,EAAE,kBAAkB;MAG9B,mBAAK;QACH,UAAU,EAAE,OAAO;MAKrB,8GAEuB;QACrB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;;AAOpB;qCAAiB;EACf,UAAU,E3BqRqB,KAAK;E2BnRpC,6DAAuE;IAHzE;yCAAiB;MAIb,UAAU,EAAE,KAAK;;AAYrB;;;mCACmB;EACjB,YAAY,EAAE,KAA2B;EACzC,WAAW,EAAG,KAA2B;EAEzC,yBAA2C;IAL7C;;;uCACmB;MAKf,YAAY,EAAE,CAAC;MACf,WAAW,EAAG,CAAC;;AAarB,kBAAmB;EACjB,OAAO,E3BoJkB,IAAI;E2BnJ7B,YAAY,EAAE,OAAO;EAErB,yBAA2C;IAJ7C,kBAAmB;MAKf,aAAa,EAAE,CAAC;;AAKpB;oBACqB;EACnB,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,CAAC;EACR,IAAI,EAAE,CAAC;EACP,OAAO,E3B0IkB,IAAI;E2BvI7B,yBAA2C;IAR7C;wBACqB;MAQjB,aAAa,EAAE,CAAC;;AAGpB,iBAAkB;EAChB,GAAG,EAAE,CAAC;EACN,YAAY,EAAE,OAAO;;AAEvB,oBAAqB;EACnB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,CAAC;EAChB,YAAY,EAAE,OAAO;;AAMvB,aAAc;EACZ,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,SAAmD;EAC5D,SAAS,E3BjHe,IAA8B;E2BkHtD,WAAW,E3BuMsB,IAAqB;E2BtMtD,MAAM,E3BqM2B,IAAI;E2BnMrC,wCACQ;IACN,eAAe,EAAE,IAAI;EAGvB,mBAAM;IACJ,OAAO,EAAE,KAAK;EAGhB,yBAA2C;IACzC,4EAC6B;MAC3B,WAAW,EAAE,KAA2B;;AAW9C,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,KAAK;EACZ,YAAY,E3B4KqB,IAA+B;E2B3KhE,OAAO,EAAE,QAAQ;EC9LjB,UAAU,EAAE,GAAwC;EACpD,aAAa,EAAE,GAAwC;ED+LvD,gBAAgB,EAAE,WAAW;EAC7B,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,E3B5Fa,GAAG;E2BgG7B,oBAAQ;IACN,OAAO,EAAE,CAAC;EAIZ,wBAAU;IACR,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,GAAG;IACX,aAAa,EAAE,GAAG;EAEpB,oCAAsB;IACpB,UAAU,EAAE,GAAG;EAGjB,yBAA2C;IA5B7C,cAAe;MA6BX,OAAO,EAAE,IAAI;;AAUjB,WAAY;EACV,MAAM,EAAE,WAA4D;EAEpE,oBAAS;IACP,WAAW,EAAK,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,WAAW,E3BgIoB,IAAqB;E2B7HtD,yBAA+C;IAE7C,gCAAqB;MACnB,QAAQ,EAAE,MAAM;MAChB,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,CAAC;MACb,gBAAgB,EAAE,WAAW;MAC7B,MAAM,EAAE,CAAC;MACT,UAAU,EAAE,IAAI;MAChB;uDACiB;QACf,OAAO,EAAE,iBAAiB;MAE5B,yCAAS;QACP,WAAW,E3B8GgB,IAAqB;Q2B7GhD,gGACQ;UACN,gBAAgB,EAAE,IAAI;EAO9B,yBAA2C;IAlC7C,WAAY;MAmCR,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,CAAC;MAET,gBAAK;QACH,KAAK,EAAE,IAAI;QACX,oBAAI;UACF,WAAW,E3BgGkB,IAA2C;U2B/FxE,cAAc,E3B+Fe,IAA2C;;A2BnFhF,YAAa;EACX,WAAW,EAAE,KAA2B;EACxC,YAAY,EAAE,KAA2B;EACzC,OAAO,EAAE,SAA+B;EACxC,UAAU,EAAE,qBAAqB;EACjC,aAAa,EAAE,qBAAqB;E5B9NpC,kBAAkB,EAAE,wEAAO;EACnB,UAAU,EAAE,wEAAO;E6B/D3B,UAAU,EAAE,GAAwC;EACpD,aAAa,EAAE,GAAwC;Ed8cvD,yBAAmC;IAEjC,wBAAY;MACV,OAAO,EAAE,YAAY;MACrB,aAAa,EAAE,CAAC;MAChB,cAAc,EAAE,MAAM;IAIxB,0BAAc;MACZ,OAAO,EAAE,YAAY;MACrB,KAAK,EAAE,IAAI;MACX,cAAc,EAAE,MAAM;IAIxB,iCAAqB;MACnB,OAAO,EAAE,YAAY;IAGvB,yBAAa;MACX,OAAO,EAAE,YAAY;MACrB,cAAc,EAAE,MAAM;MAEtB;;6CAEc;QACZ,KAAK,EAAE,IAAI;IAKf,yCAA6B;MAC3B,KAAK,EAAE,IAAI;IAGb,2BAAe;MACb,aAAa,EAAE,CAAC;MAChB,cAAc,EAAE,MAAM;IAKxB;0BACU;MACR,OAAO,EAAE,YAAY;MACrB,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;MAChB,cAAc,EAAE,MAAM;MAEtB;kCAAM;QACJ,YAAY,EAAE,CAAC;IAGnB;iDACiC;MAC/B,QAAQ,EAAE,QAAQ;MAClB,WAAW,EAAE,CAAC;IAIhB,iDAAqC;MACnC,GAAG,EAAE,CAAC;EazOR,yBAA+C;IADjD,wBAAY;MAER,aAAa,EAAE,GAAG;MAElB,mCAAa;QACX,aAAa,EAAE,CAAC;EAStB,yBAA2C;IA1B7C,YAAa;MA2BT,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,CAAC;MACT,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;MACf,WAAW,EAAE,CAAC;MACd,cAAc,EAAE,CAAC;M5BzPnB,kBAAkB,EAAE,IAAO;MACnB,UAAU,EAAE,IAAO;;A4BiQ7B,iCAAkC;EAChC,UAAU,EAAE,CAAC;EHpUb,uBAAuB,EGqUI,CAAC;EHpU3B,sBAAsB,EGoUI,CAAC;;AAG9B,sDAAuD;EACrD,aAAa,EAAE,CAAC;EHzUhB,uBAAuB,ExB2WU,GAAmB;EwB1WnD,sBAAsB,ExB0WU,GAAmB;EwBnWpD,0BAA0B,EGmUI,CAAC;EHlU9B,yBAAyB,EGkUI,CAAC;;AAQjC,WAAY;EChVV,UAAU,EAAE,GAAwC;EACpD,aAAa,EAAE,GAAwC;EDkVvD,mDAAS;ICnVT,UAAU,EAAE,IAAwC;IACpD,aAAa,EAAE,IAAwC;EDqVvD,mDAAS;ICtVT,UAAU,EAAE,IAAwC;IACpD,aAAa,EAAE,IAAwC;;AD+VzD,YAAa;EChWX,UAAU,EAAE,IAAwC;EACpD,aAAa,EAAE,IAAwC;EDkWvD,yBAA2C;IAH7C,YAAa;MAIT,KAAK,EAAE,IAAI;MACX,WAAW,E3BIoB,IAA+B;M2BH9D,YAAY,E3BGmB,IAA+B;;A2BUlE,yBAA2C;EACzC,YAAa;IACX,KAAK,EAAE,eAAe;;EAExB,aAAc;IACZ,KAAK,EAAE,gBAAgB;IACzB,YAAY,EAAE,KAA2B;IAEvC,6BAAgB;MACd,YAAY,EAAE,CAAC;AAUrB,eAAgB;EACd,gBAAgB,E3BzBiB,OAAO;E2B0BxC,YAAY,E3BzBqB,OAAgC;E2B2BjE,6BAAc;IACZ,KAAK,E3BhBkC,IAA0B;I2BiBjE,wEACQ;MACN,KAAK,E3BlBgC,OAAwC;M2BmB7E,gBAAgB,E3BlBqB,WAAW;E2BsBpD,4BAAa;IACX,KAAK,E3BvC0B,IAAI;E2B2CnC,oCAAS;IACP,KAAK,E3B9BgC,IAA0B;I2BgC/D,sFACQ;MACN,KAAK,E3B1C8B,IAAI;M2B2CvC,gBAAgB,E3B1CmB,WAAW;E2B8ChD,2IAEQ;IACN,KAAK,E3BhD8B,IAAI;I2BiDvC,gBAAgB,E3BhDmB,OAAgC;E2BoDrE,iJAEQ;IACN,KAAK,E3BtD8B,IAAI;I2BuDvC,gBAAgB,E3BtDmB,WAAW;E2B2DpD,8BAAe;IACb,YAAY,E3BlD2B,IAAI;I2BmD3C,0EACQ;MACN,gBAAgB,E3BvDqB,IAAI;I2ByD3C,wCAAU;MACR,gBAAgB,E3BzDqB,IAAI;E2B6D7C;8BACa;IACX,YAAY,E3BjFmB,OAAgC;E2BwF7D,qIAEQ;IACN,gBAAgB,E3BpFmB,OAAgC;I2BqFnE,KAAK,E3BtF8B,IAAI;E2B0F3C,yBAA+C;IAG3C,yDAAS;MACP,KAAK,E3BxF4B,IAA0B;M2ByF3D,gIACQ;QACN,KAAK,E3BnG0B,IAAI;Q2BoGnC,gBAAgB,E3BnGe,WAAW;I2BuG5C,0MAEQ;MACN,KAAK,E3BzG0B,IAAI;M2B0GnC,gBAAgB,E3BzGe,OAAgC;I2B6GjE,gNAEQ;MACN,KAAK,E3B/G0B,IAAI;M2BgHnC,gBAAgB,E3B/Ge,WAAW;E2B2HpD,4BAAa;IACX,KAAK,E3BzHkC,IAA0B;I2B0HjE,kCAAQ;MACN,KAAK,E3BnIgC,IAAI;E2BuI7C,yBAAU;IACR,KAAK,E3BhIkC,IAA0B;I2BiIjE,gEACQ;MACN,KAAK,E3B3IgC,IAAI;I2B+IzC,4LACQ;MACN,KAAK,E3B7I8B,IAAI;;A2BqJ/C,eAAgB;EACd,gBAAgB,E3BrI0B,IAAI;E2BsI9C,YAAY,E3BrI8B,OAA+B;E2BuIzE,6BAAc;IACZ,KAAK,E3B5HmC,OAA0B;I2B6HlE,wEACQ;MACN,KAAK,E3B9HiC,IAAI;M2B+H1C,gBAAgB,E3B9HsB,WAAW;E2BkIrD,4BAAa;IACX,KAAK,E3BnJmC,OAAyB;E2BuJjE,oCAAS;IACP,KAAK,E3B1IiC,OAA0B;I2B4IhE,sFACQ;MACN,KAAK,E3BpJ+B,IAAgC;M2BqJpE,gBAAgB,E3BtJoB,WAAW;E2B0JjD,2IAEQ;IACN,KAAK,E3B5J+B,IAAgC;I2B6JpE,gBAAgB,E3B5JoB,OAA+B;E2BgKrE,iJAEQ;IACN,KAAK,E3BlK+B,IAAI;I2BmKxC,gBAAgB,E3BlKoB,WAAW;E2BwKrD,8BAAe;IACb,YAAY,E3B/J4B,IAAI;I2BgK5C,0EACQ;MACN,gBAAgB,E3BpKsB,IAAI;I2BsK5C,wCAAU;MACR,gBAAgB,E3BtKsB,IAAI;E2B0K9C;8BACa;IACX,YAAY,EAAE,OAA8B;EAM1C,qIAEQ;IACN,gBAAgB,E3BhMoB,OAA+B;I2BiMnE,KAAK,E3BlM+B,IAAgC;E2BsMxE,yBAA+C;IAG3C,mEAAmB;MACjB,YAAY,E3BhNsB,OAA+B;I2BkNnE,yDAAS;MACP,gBAAgB,E3BnNkB,OAA+B;I2BqNnE,yDAAS;MACP,KAAK,E3B1M6B,OAA0B;M2B2M5D,gIACQ;QACN,KAAK,E3BnN2B,IAAgC;Q2BoNhE,gBAAgB,E3BrNgB,WAAW;I2ByN7C,0MAEQ;MACN,KAAK,E3B3N2B,IAAgC;M2B4NhE,gBAAgB,E3B3NgB,OAA+B;I2B+NjE,gNAEQ;MACN,KAAK,E3BjO2B,IAAI;M2BkOpC,gBAAgB,E3BjOgB,WAAW;E2BwOrD,4BAAa;IACX,KAAK,E3BtOmC,OAA0B;I2BuOlE,kCAAQ;MACN,KAAK,E3B9OiC,IAAgC;E2BkP1E,yBAAU;IACR,KAAK,E3B7OmC,OAA0B;I2B8OlE,gEACQ;MACN,KAAK,E3BtPiC,IAAgC;I2B0PtE,4LACQ;MACN,KAAK,E3B1P+B,IAAI;;A6BlZhD,WAAY;EACV,OAAO,EAAE,QAA2D;EACpE,aAAa,E7BsWoB,IAAqB;E6BrWtD,UAAU,EAAE,IAAI;EAChB,gBAAgB,E7BoxBc,OAAO;E6BnxBrC,aAAa,E7BmGa,GAAG;E6BjG7B,gBAAK;IACH,OAAO,EAAE,YAAY;IAErB,4BAAY;MACV,OAAO,EAAE,IAA+B;MACxC,OAAO,EAAE,KAAK;MACd,KAAK,E7B6wBqB,IAAI;E6BzwBlC,qBAAU;IACR,KAAK,E7Bs0BqB,OAAW;;A8B11BzC,WAAY;EACV,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,CAAC;EACf,MAAM,EAAE,MAAuB;EAC/B,aAAa,E9BsGa,GAAG;E8BpG7B,gBAAK;IACH,OAAO,EAAE,MAAM;IACf;2BACO;MACL,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,QAA+C;MACxD,WAAW,E9B+CS,OAAW;M8B9C/B,eAAe,EAAE,IAAI;MACrB,KAAK,E9B2vBmB,OAAW;M8B1vBnC,gBAAgB,E9BwciB,IAAc;M8Bvc/C,MAAM,EAAE,cAA4B;MACpC,WAAW,EAAE,IAAI;IAGjB;uCACO;MACL,WAAW,EAAE,CAAC;MNXpB,yBAAyB,ExB8FC,GAAG;MwB7F1B,sBAAsB,ExB6FC,GAAG;I8B9EzB;sCACO;MNzBX,0BAA0B,ExBsGA,GAAG;MwBrG1B,uBAAuB,ExBqGA,GAAG;E8BrE3B;;+BACQ;IACN,OAAO,EAAE,CAAC;IACV,KAAK,E9B+Z4B,OAAiB;I8B9ZlD,gBAAgB,E9B2zBQ,OAAa;I8B1zBrC,YAAY,E9B+ZqB,IAAI;E8BzZvC;;;oCAEQ;IACN,OAAO,EAAE,CAAC;IACV,KAAK,E9B2a4B,IAAwB;I8B1azD,gBAAgB,E9BqtBQ,OAAW;I8BptBnC,YAAY,E9BotBY,OAAW;I8BntBnC,MAAM,EAAE,OAAO;EAKjB;;;;;mCAKU;IACR,KAAK,E9BwxBmB,OAAW;I8BvxBnC,gBAAgB,E9B6YiB,IAAI;I8B5YrC,YAAY,E9B6YqB,IAAI;I8B5YrC,MAAM,E9B+JqB,WAAW;;A+BnOxC;0BACO;EACL,OAAO,EAAE,SAAqC;EAC9C,SAAS,E/B6CW,IAA8B;E+B5ClD,WAAW,E/BkGW,OAAS;A+B/F/B;sCACO;EPGX,yBAAyB,ExB+FC,GAAG;EwB9F1B,sBAAsB,ExB8FC,GAAG;A+B7FzB;qCACO;EPXX,0BAA0B,ExBuGA,GAAG;EwBtG1B,uBAAuB,ExBsGA,GAAG;;A+B1G3B;0BACO;EACL,OAAO,EAAE,QAAqC;EAC9C,SAAS,E/B8CW,IAA8B;E+B7ClD,WAAW,E/BmGW,GAAG;A+BhGzB;sCACO;EPGX,yBAAyB,ExBgGC,GAAG;EwB/F1B,sBAAsB,ExB+FC,GAAG;A+B9FzB;qCACO;EPXX,0BAA0B,ExBwGA,GAAG;EwBvG1B,uBAAuB,ExBuGA,GAAG;;AgC1G/B,MAAO;EACL,YAAY,EAAE,CAAC;EACf,MAAM,EAAE,MAAuB;EAC/B,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM;E1BIlB,2BACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,YAAQ;IACN,KAAK,EAAE,IAAI;E0BRb,SAAG;IACD,OAAO,EAAE,MAAM;IACf;oBACO;MACL,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,QAAQ;MACjB,gBAAgB,EhC0ciB,IAAc;MgCzc/C,MAAM,EAAE,cAAuB;MAC/B,aAAa,EhC0coB,IAAI;IgCvcvC;uBACU;MACR,eAAe,EAAE,IAAI;MACrB,gBAAgB,EhC80BQ,OAAa;EgCz0BvC;qBACO;IACL,KAAK,EAAE,KAAK;EAKd;yBACO;IACL,KAAK,EAAE,IAAI;EAKb;;;yBAGO;IACL,KAAK,EhC6yBmB,OAAW;IgC5yBnC,gBAAgB,EhC0aiB,IAAc;IgCza/C,MAAM,EhCqLqB,WAAW;;AiCnO5C,MAAO;EACL,OAAO,EAAE,MAAM;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,CAAC;EACd,KAAK,EjC+jBuB,IAAI;EiC9jBhC,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,QAAQ;EACxB,aAAa,EAAE,KAAK;EAKpB,YAAQ;IACN,OAAO,EAAE,IAAI;EAIf,WAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;;AAMX,4BACQ;EACN,KAAK,EjCyiBqB,IAAI;EiCxiB9B,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,OAAO;;AAOnB,cAAe;ECxCb,gBAAgB,ElC01BY,OAAW;EkCv1BrC,sDACQ;IACN,gBAAgB,EAAE,OAAmB;;ADuC3C,cAAe;EC5Cb,gBAAgB,ElC0wBY,OAAW;EkCvwBrC,sDACQ;IACN,gBAAgB,EAAE,OAAmB;;AD2C3C,cAAe;EChDb,gBAAgB,ElCmpBY,OAAc;EkChpBxC,sDACQ;IACN,gBAAgB,EAAE,OAAmB;;AD+C3C,WAAY;ECpDV,gBAAgB,ElCypBY,OAAW;EkCtpBrC,gDACQ;IACN,gBAAgB,EAAE,OAAmB;;ADmD3C,cAAe;ECxDb,gBAAgB,ElCqpBY,OAAc;EkClpBxC,sDACQ;IACN,gBAAgB,EAAE,OAAmB;;ADuD3C,aAAc;EC5DZ,gBAAgB,ElCupBY,OAAa;EkCppBvC,oDACQ;IACN,gBAAgB,EAAE,OAAmB;;ACF3C,MAAO;EACL,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,OAAO;EAChB,SAAS,EnC2Ce,IAA8B;EmC1CtD,WAAW,EnCswBiB,IAAI;EmCrwBhC,KAAK,EnC2vBuB,IAAI;EmC1vBhC,WAAW,EnCqwBiB,CAAC;EmCpwB7B,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,gBAAgB,EnC40BY,OAAW;EmC30BvC,aAAa,EnCiwBe,IAAI;EmC9vBhC,YAAQ;IACN,OAAO,EAAE,IAAI;EAIf,WAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;EAGX,wEACuB;IACrB,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,OAAO;EAMlB,mEAC6B;IAC3B,KAAK,EnCmuBqB,OAAW;ImCluBrC,gBAAgB,EnCouBU,IAAI;EmCjuBhC,yBAAqB;IACnB,KAAK,EAAE,KAAK;EAGd,kCAAyB;IACvB,YAAY,EAAE,GAAG;EAGnB,4BAAwB;IACtB,WAAW,EAAE,GAAG;;AAMlB,4BACQ;EACN,KAAK,EnC0sBqB,IAAI;EmCzsB9B,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,OAAO;;AC5DnB,UAAW;EACT,WAAW,EpCqeoB,IAAI;EoCpenC,cAAc,EpCoeiB,IAAI;EoCnenC,aAAa,EpCmekB,IAAI;EoClenC,KAAK,EpCme0B,OAAO;EoCletC,gBAAgB,EpC61BY,OAAa;EoC31BzC;gBACI;IACF,KAAK,EpCgewB,OAAO;EoC7dtC,YAAE;IACA,aAAa,EAAE,IAAwB;IACvC,SAAS,EpC4doB,IAA6B;IoC3d1D,WAAW,EAAE,GAAG;EAGlB,eAAK;IACH,gBAAgB,EAAE,OAA0B;EAG9C,kDACmB;IACjB,aAAa,EpCiFW,GAAG;EoC9E7B,qBAAW;IACT,SAAS,EAAE,IAAI;EAGjB,oCAA8C;IA/BhD,UAAW;MAgCP,WAAW,EAAK,IAA0B;MAC1C,cAAc,EAAE,IAA0B;MAE1C,kDACmB;QACjB,YAAY,EAAG,IAAwB;QACvC,aAAa,EAAE,IAAwB;MAGzC;oBACI;QACF,SAAS,EpCgckB,IAA6B;;AqC1e9D,UAAW;EACT,OAAO,EAAE,KAAK;EACd,OAAO,ErCquBqB,GAAG;EqCpuB/B,aAAa,ErCoWoB,IAAqB;EqCnWtD,WAAW,ErCqDa,OAAW;EqCpDnC,gBAAgB,ErCouBY,IAAQ;EqCnuBpC,MAAM,EAAE,cAA2B;EACnC,aAAa,ErCsuBe,GAAmB;ED1jB/C,kBAAkB,EAAE,uBAAW;EAC1B,aAAa,EAAE,uBAAW;EACvB,UAAU,EAAE,uBAAW;EsC3K/B;oBACQ;InCRR,OAAO,EADuB,KAAK;IAEnC,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;ImCQV,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;EAMpB,mBAAS;IACP,OAAO,ErC6tBmB,GAAG;IqC5tB7B,KAAK,ErC+yBqB,OAAU;;AqC1yBxC;;kBAEmB;EACjB,YAAY,ErCyuBgB,OAAW;;AsCrwBzC,MAAO;EACL,OAAO,EtC0mBqB,IAAI;EsCzmBhC,aAAa,EtCmWoB,IAAqB;EsClWtD,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EtCwmBe,GAAmB;EsCrmB/C,SAAG;IACD,UAAU,EAAE,CAAC;IAEb,KAAK,EAAE,OAAO;EAIhB,kBAAY;IACV,WAAW,EtC8lBe,IAAI;EsC1lBhC;aACK;IACH,aAAa,EAAE,CAAC;EAGlB,cAAQ;IACN,UAAU,EAAE,GAAG;;AAQnB;kBACmB;EACjB,aAAa,EAAE,IAAqB;EAGpC;2BAAO;IACL,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,OAAO;;AAQlB,cAAe;ECvDb,gBAAgB,EvCstBY,OAAiB;EuCrtB7C,YAAY,EvCotBgB,OAAqB;EuCntBjD,KAAK,EvCktBuB,OAAmB;EuChtB/C,iBAAG;IACD,gBAAgB,EAAE,OAAmB;EAEvC,0BAAY;IACV,KAAK,EAAE,OAAwB;;ADmDnC,WAAY;EC3DV,gBAAgB,EvC0tBY,OAAc;EuCztB1C,YAAY,EvCwtBgB,OAAkB;EuCvtB9C,KAAK,EvCstBuB,OAAgB;EuCptB5C,cAAG;IACD,gBAAgB,EAAE,OAAmB;EAEvC,uBAAY;IACV,KAAK,EAAE,OAAwB;;ADuDnC,cAAe;EC/Db,gBAAgB,EvC8tBY,OAAiB;EuC7tB7C,YAAY,EvC4tBgB,OAAqB;EuC3tBjD,KAAK,EvC0tBuB,OAAmB;EuCxtB/C,iBAAG;IACD,gBAAgB,EAAE,OAAmB;EAEvC,0BAAY;IACV,KAAK,EAAE,OAAwB;;AD2DnC,aAAc;ECnEZ,gBAAgB,EvCkuBY,OAAgB;EuCjuB5C,YAAY,EvCguBgB,OAAoB;EuC/tBhD,KAAK,EvC8tBuB,OAAkB;EuC5tB9C,gBAAG;IACD,gBAAgB,EAAE,OAAmB;EAEvC,yBAAY;IACV,KAAK,EAAE,OAAwB;;ACFnC,uCAGC;EAFC,IAAM;IAAE,mBAAmB,EAAE,MAAM;EACnC,EAAM;IAAE,mBAAmB,EAAE,GAAG;AAIlC,+BAGC;EAFC,IAAM;IAAE,mBAAmB,EAAE,MAAM;EACnC,EAAM;IAAE,mBAAmB,EAAE,GAAG;AAQlC,SAAU;EACR,QAAQ,EAAE,MAAM;EAChB,MAAM,ExCkV2B,IAAqB;EwCjVtD,aAAa,ExCiVoB,IAAqB;EwChVtD,gBAAgB,ExCgnBY,OAAO;EwC/mBnC,aAAa,ExCmnBe,GAAmB;ED7kB/C,kBAAkB,EAAE,kCAAO;EACnB,UAAU,EAAE,kCAAO;;AyClC7B,aAAc;EACZ,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,EAAE;EACT,MAAM,EAAE,IAAI;EACZ,SAAS,ExCce,IAA8B;EwCbtD,WAAW,ExCqUsB,IAAqB;EwCpUtD,KAAK,ExCsmBuB,IAAI;EwCrmBhC,UAAU,EAAE,MAAM;EAClB,gBAAgB,ExCkuBY,OAAW;EDzsBvC,kBAAkB,EAAE,kCAAO;EACnB,UAAU,EAAE,kCAAO;EAoH3B,kBAAkB,EAAE,eAAW;EAC1B,aAAa,EAAE,eAAW;EACvB,UAAU,EAAE,eAAW;;AyCtIjC;qBACsB;ECApB,gBAAgB,EAAE,2LAAmI;EACrJ,gBAAgB,EAAE,sLAA8H;EAChJ,gBAAgB,EAAE,mLAA2H;EDA7I,eAAe,EAAE,SAAS;;AAO5B;oBACqB;EzC7CnB,iBAAiB,EyC8CE,uCAAuC;EzC7CrD,YAAY,EyC6CE,uCAAuC;EzC5ClD,SAAS,EyC4CE,uCAAuC;;AAO5D,qBAAsB;EErEpB,gBAAgB,E1CmpBY,OAAc;E0ChpB1C,uCAAoB;IDgDpB,gBAAgB,EAAE,2LAAmI;IACrJ,gBAAgB,EAAE,sLAA8H;IAChJ,gBAAgB,EAAE,mLAA2H;;ADoB/I,kBAAmB;EEzEjB,gBAAgB,E1CypBY,OAAW;E0CtpBvC,oCAAoB;IDgDpB,gBAAgB,EAAE,2LAAmI;IACrJ,gBAAgB,EAAE,sLAA8H;IAChJ,gBAAgB,EAAE,mLAA2H;;ADwB/I,qBAAsB;EE7EpB,gBAAgB,E1CqpBY,OAAc;E0ClpB1C,uCAAoB;IDgDpB,gBAAgB,EAAE,2LAAmI;IACrJ,gBAAgB,EAAE,sLAA8H;IAChJ,gBAAgB,EAAE,mLAA2H;;AD4B/I,oBAAqB;EEjFnB,gBAAgB,E1CupBY,OAAa;E0CppBzC,sCAAoB;IDgDpB,gBAAgB,EAAE,2LAAmI;IACrJ,gBAAgB,EAAE,sLAA8H;IAChJ,gBAAgB,EAAE,mLAA2H;;AExD/I,MAAO;EAEL,UAAU,EAAE,IAAI;EAEhB,kBAAc;IACZ,UAAU,EAAE,CAAC;;AAIjB;WACY;EACV,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,MAAM;;AAGlB,WAAY;EACV,KAAK,EAAE,OAAO;;AAGhB,aAAc;EACZ,OAAO,EAAE,KAAK;EAGd,2BAAgB;IACd,SAAS,EAAE,IAAI;;AAInB;oBACqB;EACnB,YAAY,EAAE,IAAI;;AAGpB;mBACoB;EAClB,aAAa,EAAE,IAAI;;AAGrB;;WAEY;EACV,OAAO,EAAE,UAAU;EACnB,cAAc,EAAE,GAAG;;AAGrB,aAAc;EACZ,cAAc,EAAE,MAAM;;AAGxB,aAAc;EACZ,cAAc,EAAE,MAAM;;AAIxB,cAAe;EACb,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,GAAG;;AAMpB,WAAY;EACV,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;;ACvDlB,WAAY;EAEV,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,CAAC;;AAQjB,gBAAiB;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,SAAS;EAElB,aAAa,EAAE,IAAI;EACnB,gBAAgB,E5C0oBc,IAAI;E4CzoBlC,MAAM,EAAE,cAA4B;EAGpC,4BAAc;IpB3Bd,uBAAuB,ExBqqBO,GAAmB;IwBpqBhD,sBAAsB,ExBoqBO,GAAmB;E4CvoBjD,2BAAa;IACX,aAAa,EAAE,CAAC;IpBvBlB,0BAA0B,ExB6pBI,GAAmB;IwB5pBhD,yBAAyB,ExB4pBI,GAAmB;;A4C3nBnD;sBACuB;EACrB,KAAK,E5C8oByB,IAAsB;E4C5oBpD;iDAAyB;IACvB,KAAK,E5C4oBuB,IAAI;E4CxoBlC;;8BACQ;IACN,eAAe,EAAE,IAAI;IACrB,KAAK,E5CooBuB,IAAsB;I4CnoBlD,gBAAgB,E5CinBY,OAAO;;A4C7mBvC,sBAAuB;EACrB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;;AAKhB,2FAEiB;EACf,gBAAgB,E5C+xBU,OAAa;E4C9xBvC,KAAK,E5CoxBqB,OAAW;E4CnxBrC,MAAM,E5C6JuB,WAAW;E4C1JxC,sKAAyB;IACvB,KAAK,EAAE,OAAO;EAEhB,6JAAsB;IACpB,KAAK,E5C4wBmB,OAAW;A4CvwBvC,qFAEe;EACb,OAAO,EAAE,CAAC;EACV,KAAK,E5CmlBuB,IAAuB;E4CllBnD,gBAAgB,E5CkrBU,OAAW;E4CjrBrC,YAAY,E5CirBc,OAAW;E4C9qBrC;;;;;;iEAEkC;IAChC,KAAK,EAAE,OAAO;EAEhB,uJAAsB;IACpB,KAAK,E5C8kBqB,OAAmC;;A6ChrBjE,wBAA2B;EACzB,KAAK,E7CmtBqB,OAAmB;E6CltB7C,gBAAgB,E7CotBU,OAAiB;;A6C/sB7C;8BACiC;EAC/B,KAAK,E7C2sBqB,OAAmB;E6CzsB7C;yDAAyB;IACvB,KAAK,EAAE,OAAO;EAGhB;;sCACQ;IACN,KAAK,E7CmsBmB,OAAmB;I6ClsB3C,gBAAgB,EAAE,OAAuB;EAE3C;;;6CAEe;IACb,KAAK,EAAE,IAAI;IACX,gBAAgB,E7C4rBQ,OAAmB;I6C3rB3C,YAAY,E7C2rBY,OAAmB;;A6CptB/C,qBAA2B;EACzB,KAAK,E7CutBqB,OAAgB;E6CttB1C,gBAAgB,E7CwtBU,OAAc;;A6CntB1C;2BACiC;EAC/B,KAAK,E7C+sBqB,OAAgB;E6C7sB1C;sDAAyB;IACvB,KAAK,EAAE,OAAO;EAGhB;;mCACQ;IACN,KAAK,E7CusBmB,OAAgB;I6CtsBxC,gBAAgB,EAAE,OAAuB;EAE3C;;;0CAEe;IACb,KAAK,EAAE,IAAI;IACX,gBAAgB,E7CgsBQ,OAAgB;I6C/rBxC,YAAY,E7C+rBY,OAAgB;;A6CxtB5C,wBAA2B;EACzB,KAAK,E7C2tBqB,OAAmB;E6C1tB7C,gBAAgB,E7C4tBU,OAAiB;;A6CvtB7C;8BACiC;EAC/B,KAAK,E7CmtBqB,OAAmB;E6CjtB7C;yDAAyB;IACvB,KAAK,EAAE,OAAO;EAGhB;;sCACQ;IACN,KAAK,E7C2sBmB,OAAmB;I6C1sB3C,gBAAgB,EAAE,OAAuB;EAE3C;;;6CAEe;IACb,KAAK,EAAE,IAAI;IACX,gBAAgB,E7CosBQ,OAAmB;I6CnsB3C,YAAY,E7CmsBY,OAAmB;;A6C5tB/C,uBAA2B;EACzB,KAAK,E7C+tBqB,OAAkB;E6C9tB5C,gBAAgB,E7CguBU,OAAgB;;A6C3tB5C;6BACiC;EAC/B,KAAK,E7CutBqB,OAAkB;E6CrtB5C;wDAAyB;IACvB,KAAK,EAAE,OAAO;EAGhB;;qCACQ;IACN,KAAK,E7C+sBmB,OAAkB;I6C9sB1C,gBAAgB,EAAE,OAAuB;EAE3C;;;4CAEe;IACb,KAAK,EAAE,IAAI;IACX,gBAAgB,E7CwsBQ,OAAkB;I6CvsB1C,YAAY,E7CusBY,OAAkB;;A4CzmBhD,wBAAyB;EACvB,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,GAAG;;AAEpB,qBAAsB;EACpB,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,GAAG;;AE1HlB,MAAO;EACL,aAAa,E9CsWoB,IAAqB;E8CrWtD,gBAAgB,E9C6rBY,IAAI;E8C5rBhC,MAAM,EAAE,qBAAqB;EAC7B,aAAa,E9C+rBe,GAAmB;EDroB/C,kBAAkB,EAAE,6BAAO;EACnB,UAAU,EAAE,6BAAO;;A+CtD7B,WAAY;EACV,OAAO,E9CsrBqB,IAAI;EMzrBhC,qCACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,iBAAQ;IACN,KAAK,EAAE,IAAI;;AwCEf,cAAe;EACb,OAAO,E9CkrBqB,SAAsB;E8CjrBlD,aAAa,EAAE,qBAAqB;EtBpBpC,uBAAuB,EAAE,GAAO;EAC/B,sBAAsB,EAAE,GAAO;EsBsBhC,2CAA6B;IAC3B,KAAK,EAAE,OAAO;;AAKlB,YAAa;EACX,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAChB,SAAS,EAAE,IAA+B;EAC1C,KAAK,EAAE,OAAO;EAEd;;;;2BAIa;IACX,KAAK,EAAE,OAAO;;AAKlB,aAAc;EACZ,OAAO,E9CupBqB,SAAsB;E8CtpBlD,gBAAgB,E9C2pBY,OAAO;E8C1pBnC,UAAU,EAAE,cAA6B;EtBxCzC,0BAA0B,EAAE,GAAO;EAClC,yBAAyB,EAAE,GAAO;;AsBkDnC;sCACgC;EAC9B,aAAa,EAAE,CAAC;EAEhB;yDAAiB;IACf,YAAY,EAAE,KAAK;IACnB,aAAa,EAAE,CAAC;EAKhB;iFAA6B;IAC3B,UAAU,EAAE,CAAC;ItBvEnB,uBAAuB,EAAE,GAAO;IAC/B,sBAAsB,EAAE,GAAO;EsB6E5B;+EAA4B;IAC1B,aAAa,EAAE,CAAC;ItBvEtB,0BAA0B,EAAE,GAAO;IAClC,yBAAyB,EAAE,GAAO;AsB4EjC,oFAA6B;EtBrF/B,uBAAuB,EsBsFQ,CAAC;EtBrF/B,sBAAsB,EsBqFQ,CAAC;;AAMhC,yDAA6B;EAC3B,gBAAgB,EAAE,CAAC;;AAGvB,2BAA4B;EAC1B,gBAAgB,EAAE,CAAC;;AASnB;;iCAE2B;EACzB,aAAa,EAAE,CAAC;EAEhB;;2CAAQ;IACN,YAAY,E9CmlBY,IAAI;I8CllB5B,aAAa,E9CklBW,IAAI;A8C9kBhC;2DACqD;EtBtHrD,uBAAuB,EAAE,GAAO;EAC/B,sBAAsB,EAAE,GAAO;EsB0H5B;;;kGAAiB;IACf,sBAAsB,EAAE,GAA0B;IAClD,uBAAuB,EAAE,GAA0B;IAEnD;;;;;;;mHACe;MACb,sBAAsB,EAAE,GAA0B;IAEpD;;;;;;;kHACc;MACZ,uBAAuB,EAAE,GAA0B;AAM3D;yDACmD;EtBpInD,0BAA0B,EAAE,GAAO;EAClC,yBAAyB,EAAE,GAAO;EsBwI/B;;;8FAAgB;IACd,yBAAyB,EAAE,GAA0B;IACrD,0BAA0B,EAAE,GAA0B;IAEtD;;;;;;;+GACe;MACb,yBAAyB,EAAE,GAA0B;IAEvD;;;;;;;8GACc;MACZ,0BAA0B,EAAE,GAA0B;AAK9D;;;wCAGkC;EAChC,UAAU,EAAE,cAA6B;AAE3C;uDACiD;EAC/C,UAAU,EAAE,CAAC;AAEf;4CACsC;EACpC,MAAM,EAAE,CAAC;EAKL;;;;;;;;;;;4EACiB;IACf,WAAW,EAAE,CAAC;EAEhB;;;;;;;;;;;2EACgB;IACd,YAAY,EAAE,CAAC;EAOjB;;;;;;;4EACK;IACH,aAAa,EAAE,CAAC;EAOlB;;;;;;;2EACK;IACH,aAAa,EAAE,CAAC;AAKxB,0BAAoB;EAClB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,CAAC;;AAUpB,YAAa;EACX,aAAa,E9C+IoB,IAAqB;E8C5ItD,mBAAO;IACL,aAAa,EAAE,CAAC;IAChB,aAAa,E9Csea,GAAmB;I8Cpe7C,4BAAS;MACP,UAAU,EAAE,GAAG;EAInB,2BAAe;IACb,aAAa,EAAE,CAAC;IAEhB;+DACgC;MAC9B,UAAU,EAAE,cAA6B;EAI7C,0BAAc;IACZ,UAAU,EAAE,CAAC;IACb,wDAA8B;MAC5B,aAAa,EAAE,cAA6B;;AAOlD,cAAe;EC1Pb,YAAY,E/C6sBgB,IAAI;E+C3sBhC,+BAAmB;IACjB,KAAK,E/Cq0BqB,OAAU;I+Cp0BpC,gBAAgB,E/C0sBU,OAAO;I+CzsBjC,YAAY,E/CwsBc,IAAI;I+CtsB9B,+DAAgC;MAC9B,gBAAgB,E/CqsBQ,IAAI;I+CnsB9B,sCAAO;MACL,KAAK,E/CmsBmB,OAAO;M+ClsB/B,gBAAgB,E/C4zBQ,OAAU;E+CxzBpC,8DAAgC;IAC9B,mBAAmB,E/C4rBK,IAAI;;A8ChdlC,cAAe;EC7Pb,YAAY,E/C0wBgB,OAAW;E+CxwBvC,+BAAmB;IACjB,KAAK,E/C6sBqB,IAAI;I+C5sB9B,gBAAgB,E/CswBU,OAAW;I+CrwBrC,YAAY,E/CqwBc,OAAW;I+CnwBrC,+DAAgC;MAC9B,gBAAgB,E/CkwBQ,OAAW;I+ChwBrC,sCAAO;MACL,KAAK,E/C+vBmB,OAAW;M+C9vBnC,gBAAgB,E/CosBQ,IAAI;E+ChsB9B,8DAAgC;IAC9B,mBAAmB,E/CyvBK,OAAW;;A8C1gBzC,cAAe;EChQb,YAAY,E/CqtBgB,OAAqB;E+CntBjD,+BAAmB;IACjB,KAAK,E/CitBqB,OAAmB;I+ChtB7C,gBAAgB,E/CktBU,OAAiB;I+CjtB3C,YAAY,E/CgtBc,OAAqB;I+C9sB/C,+DAAgC;MAC9B,gBAAgB,E/C6sBQ,OAAqB;I+C3sB/C,sCAAO;MACL,KAAK,E/C2sBmB,OAAiB;M+C1sBzC,gBAAgB,E/CwsBQ,OAAmB;E+CpsB7C,8DAAgC;IAC9B,mBAAmB,E/CosBK,OAAqB;;A8CldnD,WAAY;ECnQV,YAAY,E/CytBgB,OAAkB;E+CvtB9C,4BAAmB;IACjB,KAAK,E/CqtBqB,OAAgB;I+CptB1C,gBAAgB,E/CstBU,OAAc;I+CrtBxC,YAAY,E/CotBc,OAAkB;I+CltB5C,4DAAgC;MAC9B,gBAAgB,E/CitBQ,OAAkB;I+C/sB5C,mCAAO;MACL,KAAK,E/C+sBmB,OAAc;M+C9sBtC,gBAAgB,E/C4sBQ,OAAgB;E+CxsB1C,2DAAgC;IAC9B,mBAAmB,E/CwsBK,OAAkB;;A8CndhD,cAAe;ECtQb,YAAY,E/C6tBgB,OAAqB;E+C3tBjD,+BAAmB;IACjB,KAAK,E/CytBqB,OAAmB;I+CxtB7C,gBAAgB,E/C0tBU,OAAiB;I+CztB3C,YAAY,E/CwtBc,OAAqB;I+CttB/C,+DAAgC;MAC9B,gBAAgB,E/CqtBQ,OAAqB;I+CntB/C,sCAAO;MACL,KAAK,E/CmtBmB,OAAiB;M+CltBzC,gBAAgB,E/CgtBQ,OAAmB;E+C5sB7C,8DAAgC;IAC9B,mBAAmB,E/C4sBK,OAAqB;;A8CpdnD,aAAc;ECzQZ,YAAY,E/CiuBgB,OAAoB;E+C/tBhD,8BAAmB;IACjB,KAAK,E/C6tBqB,OAAkB;I+C5tB5C,gBAAgB,E/C8tBU,OAAgB;I+C7tB1C,YAAY,E/C4tBc,OAAoB;I+C1tB9C,8DAAgC;MAC9B,gBAAgB,E/CytBQ,OAAoB;I+CvtB9C,qCAAO;MACL,KAAK,E/CutBmB,OAAgB;M+CttBxC,gBAAgB,E/CotBQ,OAAkB;E+ChtB5C,6DAAgC;IAC9B,mBAAmB,E/CgtBK,OAAoB;;AgDhuBlD,iBAAkB;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,MAAM;EAEhB;;;;yBAIM;IACJ,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,CAAC;;AAKb,uBAAwB;EACtB,cAAc,EAAE,MAAM;;AAIxB,sBAAuB;EACrB,cAAc,EAAE,GAAG;;AC3BrB,KAAM;EACJ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,gBAAgB,EjDqvBY,OAAO;EiDpvBnC,MAAM,EAAE,iBAAsB;EAC9B,aAAa,EjDiGa,GAAG;EDzC7B,kBAAkB,EAAE,mCAAO;EACnB,UAAU,EAAE,mCAAO;EkDvD3B,gBAAW;IACT,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,mBAAe;;AAKjC,QAAS;EACP,OAAO,EAAE,IAAI;EACb,aAAa,EjDuFa,GAAG;;AiDrF/B,QAAS;EACP,OAAO,EAAE,GAAG;EACZ,aAAa,EjDoFa,GAAG;;AkD1G/B,MAAO;EACL,KAAK,EAAE,KAAK;EACZ,SAAS,EAAE,IAAuB;EAClC,WAAW,ElDmzBiB,IAAI;EkDlzBhC,WAAW,EAAE,CAAC;EACd,KAAK,ElDkzBuB,IAAI;EkDjzBhC,WAAW,ElDkzBiB,YAAa;EkB1zBzC,OAAO,EgCSU,GAAE;EhCNnB,MAAM,EAAE,iBAA0B;EgCQlC,0BACQ;IACN,KAAK,ElD4yBqB,IAAI;IkD3yB9B,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,OAAO;IhCfjB,OAAO,EgCgBY,GAAE;IhCbrB,MAAM,EAAE,iBAA0B;;AgCuBpC,YAAa;EACX,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,kBAAkB,EAAE,IAAI;;ACxB1B,WAAY;EACV,QAAQ,EAAE,MAAM;;AAIlB,MAAO;EACL,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EnDmQkB,IAAI;EmDlQ7B,0BAA0B,EAAE,KAAK;EAIjC,OAAO,EAAE,CAAC;EAGV,yBAAqB;IpD0GrB,iBAAiB,EAAE,kBAAiB;IAChC,aAAa,EAAE,kBAAiB;IAC/B,YAAY,EAAE,kBAAiB;IAC5B,SAAS,EAAE,kBAAiB;IAkEpC,kBAAkB,EAAE,+BAA6B;IAC9C,eAAe,EAAE,4BAA0B;IACzC,aAAa,EAAE,0BAAwB;IACpC,UAAU,EAAE,uBAAqB;EoD9KzC,uBAAmB;IpDsGnB,iBAAiB,EAAE,eAAiB;IAChC,aAAa,EAAE,eAAiB;IAC/B,YAAY,EAAE,eAAiB;IAC5B,SAAS,EAAE,eAAiB;;AoDvGtC,kBAAmB;EACjB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;;AAIlB,aAAc;EACZ,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;;AAId,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,gBAAgB,EnDuiB6B,IAAI;EmDtiBjD,MAAM,EAAE,cAA8C;EACtD,MAAM,EAAE,4BAAqC;EAC7C,aAAa,EnDuDa,GAAG;ED1C7B,kBAAkB,EAAE,4BAAO;EACnB,UAAU,EAAE,4BAAO;EoDZ3B,eAAe,EAAE,WAAW;EAE5B,OAAO,EAAE,CAAC;;AAIZ,eAAgB;EACd,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EnDoNkB,IAAI;EmDnN7B,gBAAgB,EnD4hBY,IAAI;EmD1hBhC,oBAAO;IjCrEP,OAAO,EiCqEmB,CAAC;IjClE3B,MAAM,EAAE,gBAA0B;EiCmElC,kBAAK;IjCtEL,OAAO,ElBimBqB,GAAE;IkB9lB9B,MAAM,EAAE,iBAA0B;;AiCwEpC,aAAc;EACZ,OAAO,EnDugBqB,IAAI;EmDtgBhC,aAAa,EAAE,iBAAoC;EACnD,UAAU,EAAE,UAAiD;;AAG/D,oBAAqB;EACnB,UAAU,EAAE,IAAI;;AAIlB,YAAa;EACX,MAAM,EAAE,CAAC;EACT,WAAW,EnD6fiB,OAAiB;;AmDxf/C,WAAY;EACV,QAAQ,EAAE,QAAQ;EAClB,OAAO,EnDifqB,IAAI;;AmD7elC,aAAc;EACZ,OAAO,EnD4eqB,IAAI;EmD3ehC,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,iBAAoC;E7C5FhD,yCACQ;IACN,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,KAAK;EAEhB,mBAAQ;IACN,KAAK,EAAE,IAAI;E6C0Fb,yBAAY;IACV,WAAW,EAAE,GAAG;IAChB,aAAa,EAAE,CAAC;EAGlB,oCAAuB;IACrB,WAAW,EAAE,IAAI;EAGnB,qCAAwB;IACtB,WAAW,EAAE,CAAC;;AAKlB,wBAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,OAAO;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;;AAIlB,yBAAmC;EAEjC,aAAc;IACZ,KAAK,EnDmeqB,KAAK;ImDle/B,MAAM,EAAE,SAAS;;EAEnB,cAAe;IpDvEf,kBAAkB,EAAE,6BAAO;IACnB,UAAU,EAAE,6BAAO;;EoD2E3B,SAAU;IAAE,KAAK,EnD4dW,KAAK;AmDzdnC,yBAAmC;EACjC,SAAU;IAAE,KAAK,EnDsdW,KAAK;AoDpmBnC,QAAS;EACP,QAAQ,EAAE,QAAQ;EAClB,OAAO,EpD+QkB,IAAI;EoD9Q7B,OAAO,EAAE,KAAK;ECRd,WAAW,ErDgDa,8CAAuB;EqD9C/C,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,IAAI;EAChB,WAAW,ErDwDa,OAAW;EqDvDnC,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,YAAY,EAAE,MAAM;EACpB,SAAS,EAAE,MAAM;EDHjB,SAAS,EpDwCe,IAA8B;EkBlDtD,OAAO,EkCYU,CAAC;ElCTlB,MAAM,EAAE,gBAA0B;EkCWlC,WAAS;IlCdT,OAAO,ElB+gBqB,GAAE;IkB5gB9B,MAAM,EAAE,iBAA0B;EkCYlC,YAAS;IAAE,UAAU,EAAG,IAAI;IAAE,OAAO,EAAE,KAAsB;EAC7D,cAAS;IAAE,WAAW,EAAG,GAAG;IAAE,OAAO,EAAE,KAAsB;EAC7D,eAAS;IAAE,UAAU,EAAI,GAAG;IAAE,OAAO,EAAE,KAAsB;EAC7D,aAAS;IAAE,WAAW,EAAE,IAAI;IAAE,OAAO,EAAE,KAAsB;;AAI/D,cAAe;EACb,SAAS,EpDmfmB,KAAK;EoDlfjC,OAAO,EAAE,OAAO;EAChB,KAAK,EpDmfuB,IAAI;EoDlfhC,UAAU,EAAE,MAAM;EAClB,gBAAgB,EpDyfY,IAAW;EoDxfvC,aAAa,EpD8Ea,GAAG;;AoD1E/B,cAAe;EACb,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,WAAW;EACzB,YAAY,EAAE,KAAK;;AAInB,2BAAqB;EACnB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,IAAqB;EAClC,YAAY,EAAE,SAA2C;EACzD,gBAAgB,EpDseU,IAAW;AoDpevC,gCAA0B;EACxB,MAAM,EAAE,CAAC;EACT,KAAK,EpDgeqB,GAAG;EoD/d7B,aAAa,EAAE,IAAqB;EACpC,YAAY,EAAE,SAA2C;EACzD,gBAAgB,EpD+dU,IAAW;AoD7dvC,iCAA2B;EACzB,MAAM,EAAE,CAAC;EACT,IAAI,EpDydsB,GAAG;EoDxd7B,aAAa,EAAE,IAAqB;EACpC,YAAY,EAAE,SAA2C;EACzD,gBAAgB,EpDwdU,IAAW;AoDtdvC,6BAAuB;EACrB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,CAAC;EACP,UAAU,EAAE,IAAqB;EACjC,YAAY,EAAE,aAAgE;EAC9E,kBAAkB,EpDidQ,IAAW;AoD/cvC,4BAAsB;EACpB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,CAAC;EACR,UAAU,EAAE,IAAqB;EACjC,YAAY,EAAE,aAAgE;EAC9E,iBAAiB,EpD0cS,IAAW;AoDxcvC,8BAAwB;EACtB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,IAAqB;EAClC,YAAY,EAAE,SAA2C;EACzD,mBAAmB,EpDmcO,IAAW;AoDjcvC,mCAA6B;EAC3B,GAAG,EAAE,CAAC;EACN,KAAK,EpD6bqB,GAAG;EoD5b7B,UAAU,EAAE,IAAqB;EACjC,YAAY,EAAE,SAA2C;EACzD,mBAAmB,EpD4bO,IAAW;AoD1bvC,oCAA8B;EAC5B,GAAG,EAAE,CAAC;EACN,IAAI,EpDsbsB,GAAG;EoDrb7B,UAAU,EAAE,IAAqB;EACjC,YAAY,EAAE,SAA2C;EACzD,mBAAmB,EpDqbO,IAAW;;AsDlhBzC,QAAS;EACP,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,OAAO,EtD6QkB,IAAI;EsD5Q7B,OAAO,EAAE,IAAI;EACb,SAAS,EtDshB2B,KAAK;EsDrhBzC,OAAO,EAAE,GAAG;EDXZ,WAAW,ErDgDa,8CAAuB;EqD9C/C,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,IAAI;EAChB,WAAW,ErDwDa,OAAW;EqDvDnC,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,YAAY,EAAE,MAAM;EACpB,SAAS,EAAE,MAAM;ECAjB,SAAS,EtDmCe,IAAI;EsDjC5B,gBAAgB,EtD2hBoB,IAAW;EsD1hB/C,eAAe,EAAE,WAAW;EAC5B,MAAM,EAAE,cAAwC;EAChD,MAAM,EAAE,4BAA+B;EACvC,aAAa,EtDwFa,GAAG;ED1C7B,kBAAkB,EAAE,6BAAO;EACnB,UAAU,EAAE,6BAAO;EuD3C3B,YAAU;IAAE,UAAU,EAAE,KAAqB;EAC7C,cAAU;IAAE,WAAW,EtDghBa,IAAI;EsD/gBxC,eAAU;IAAE,UAAU,EtD+gBc,IAAI;EsD9gBxC,aAAU;IAAE,WAAW,EAAE,KAAqB;;AAGhD,cAAe;EACb,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,QAAQ;EACjB,SAAS,EtDgBe,IAAI;EsDf5B,gBAAgB,EtDogBoB,OAAuB;EsDngB3D,aAAa,EAAE,iBAAuC;EACtD,aAAa,EAAE,WAAyD;;AAG1E,gBAAiB;EACf,OAAO,EAAE,QAAQ;;AAQjB,0CACQ;EACN,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,WAAW;EACzB,YAAY,EAAE,KAAK;;AAGvB,iBAAkB;EAChB,YAAY,EtDmfyB,IAAwB;;AsDjf/D,uBAAwB;EACtB,YAAY,EtD2ewB,IAAI;EsD1exC,OAAO,EAAE,EAAE;;AAIX,qBAAe;EACb,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,KAA2B;EACxC,mBAAmB,EAAE,CAAC;EACtB,gBAAgB,EtD2ekB,OAA2C;EsD1e7E,gBAAgB,EtDwekB,mBAAoC;EsDvetE,MAAM,EAAE,KAA2B;EACnC,2BAAQ;IACN,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,KAAqB;IAClC,mBAAmB,EAAE,CAAC;IACtB,gBAAgB,EtD4dgB,IAAW;AsDzd/C,uBAAiB;EACf,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,KAA2B;EACjC,UAAU,EAAE,KAA2B;EACvC,iBAAiB,EAAE,CAAC;EACpB,kBAAkB,EtD2dgB,OAA2C;EsD1d7E,kBAAkB,EtDwdgB,mBAAoC;EsDvdtE,6BAAQ;IACN,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAqB;IAC7B,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EtD6cc,IAAW;AsD1c/C,wBAAkB;EAChB,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,KAA2B;EACxC,gBAAgB,EAAE,CAAC;EACnB,mBAAmB,EtD6ce,OAA2C;EsD5c7E,mBAAmB,EtD0ce,mBAAoC;EsDzctE,GAAG,EAAE,KAA2B;EAChC,8BAAQ;IACN,OAAO,EAAE,GAAG;IACZ,GAAG,EAAE,GAAG;IACR,WAAW,EAAE,KAAqB;IAClC,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EtD8ba,IAAW;AsD1b/C,sBAAgB;EACd,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAA2B;EAClC,UAAU,EAAE,KAA2B;EACvC,kBAAkB,EAAE,CAAC;EACrB,iBAAiB,EtD4biB,OAA2C;EsD3b7E,iBAAiB,EtDybiB,mBAAoC;EsDxbtE,4BAAQ;IACN,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EtD+ae,IAAW;IsD9a3C,MAAM,EAAE,KAAqB;;ACzHnC,SAAU;EACR,QAAQ,EAAE,QAAQ;;AAGpB,eAAgB;EACd,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EAEX,uBAAQ;IACN,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IxDwKpB,kBAAkB,EAAE,qBAAW;IAC1B,aAAa,EAAE,qBAAW;IACvB,UAAU,EAAE,qBAAW;IwDtK7B;qCACU;MrDbZ,OAAO,EADuB,KAAK;MAEnC,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,IAAI;MqDaR,WAAW,EAAE,CAAC;IAIhB,qDAAsD;MAbxD,uBAAQ;QxD+LR,kBAAkB,EAAE,kCAA6B;QAC9C,eAAe,EAAE,+BAA0B;QACzC,aAAa,EAAE,6BAAwB;QACpC,UAAU,EAAE,0BAAqB;QAxJzC,2BAA2B,EwD3BM,MAAM;QxD4BpC,wBAAwB,EwD5BM,MAAM;QxD6B/B,mBAAmB,EwD7BM,MAAM;QxDuIvC,mBAAmB,EwDtIM,MAAM;QxDuI5B,gBAAgB,EwDvIM,MAAM;QxDwIvB,WAAW,EwDxIM,MAAM;QAE3B,kEACe;UxD6GnB,iBAAiB,EAAE,uBAAuB;UAClC,SAAS,EAAE,uBAAuB;UwD5GpC,IAAI,EAAE,CAAC;QAET,iEACc;UxDwGlB,iBAAiB,EAAE,wBAAuB;UAClC,SAAS,EAAE,wBAAuB;UwDvGpC,IAAI,EAAE,CAAC;QAET,qGAES;UxDkGb,iBAAiB,EAAE,oBAAuB;UAClC,SAAS,EAAE,oBAAuB;UwDjGpC,IAAI,EAAE,CAAC;EAKb;;yBAEQ;IACN,OAAO,EAAE,KAAK;EAGhB,yBAAU;IACR,IAAI,EAAE,CAAC;EAGT;yBACQ;IACN,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI;EAGb,uBAAQ;IACN,IAAI,EAAE,IAAI;EAEZ,uBAAQ;IACN,IAAI,EAAE,KAAK;EAEb;+BACc;IACZ,IAAI,EAAE,CAAC;EAGT,8BAAe;IACb,IAAI,EAAE,KAAK;EAEb,+BAAgB;IACd,IAAI,EAAE,IAAI;;AAQd,iBAAkB;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,MAAM,EAAE,CAAC;EACT,KAAK,EvD4sBuC,GAAG;EkB1yB/C,OAAO,ElB2yBqC,GAAE;EkBxyB9C,MAAM,EAAE,iBAA0B;EqC6FlC,SAAS,EvD4sBmC,IAAI;EuD3sBhD,KAAK,EvDwsBuC,IAAI;EuDvsBhD,UAAU,EAAE,MAAM;EAClB,WAAW,EvDosBiC,4BAAyB;EuD/rBrE,sBAAO;IdlGP,gBAAgB,EAAE,gFAAmF;IACrG,gBAAgB,EAAE,2EAA8E;IAChG,gBAAgB,EAAE,4EAA+E;IACjG,iBAAiB,EAAE,QAAQ;IAC3B,MAAM,EAAE,8GAAgJ;EciGxJ,uBAAQ;IACN,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,CAAC;IdvGV,gBAAgB,EAAE,gFAAmF;IACrG,gBAAgB,EAAE,2EAA8E;IAChG,gBAAgB,EAAE,4EAA+E;IACjG,iBAAiB,EAAE,QAAQ;IAC3B,MAAM,EAAE,8GAAgJ;EcwGxJ,gDACQ;IACN,OAAO,EAAE,CAAC;IACV,KAAK,EvDorBqC,IAAI;IuDnrB9C,eAAe,EAAE,IAAI;IrCtHvB,OAAO,EqCuHY,GAAE;IrCpHrB,MAAM,EAAE,iBAA0B;EqCwHlC;;;4CAGyB;IACvB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,YAAY;EAEvB;2CACwB;IACtB,IAAI,EAAE,GAAG;IACT,WAAW,EAAE,KAAK;EAEpB;4CACyB;IACvB,KAAK,EAAE,GAAG;IACV,YAAY,EAAE,KAAK;EAErB;8BACW;IACT,KAAK,EAAG,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,KAAK;EAKlB,mCAAS;IACP,OAAO,EAAE,OAAO;EAIlB,mCAAS;IACP,OAAO,EAAE,OAAO;;AAUtB,oBAAqB;EACnB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,GAAG;EACT,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM;EAElB,uBAAG;IACD,OAAO,EAAE,YAAY;IACrB,KAAK,EAAG,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,cAA0C;IAClD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,OAAO;IAWf,gBAAgB,EAAE,OAAO;IACzB,gBAAgB,EAAE,WAAa;EAEjC,4BAAQ;IACN,MAAM,EAAE,CAAC;IACT,KAAK,EAAG,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,gBAAgB,EvDgmB0B,IAAI;;AuDzlBlD,iBAAkB;EAChB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,EAAE;EACX,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,KAAK,EvDolBuC,IAAI;EuDnlBhD,UAAU,EAAE,MAAM;EAClB,WAAW,EvDwkBiC,4BAAyB;EuDvkBrE,sBAAO;IACL,WAAW,EAAE,IAAI;;AAMrB,oCAA8C;EAI1C;;;8BAGW;IACT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,IAAI;EAEjB;8BACW;IACT,WAAW,EAAE,KAAK;EAEpB;8BACW;IACT,YAAY,EAAE,KAAK;;EAKvB,iBAAkB;IAChB,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,cAAc,EAAE,IAAI;;EAItB,oBAAqB;IACnB,MAAM,EAAE,IAAI;AjD7Pd,iCACQ;EACN,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;AAEhB,eAAQ;EACN,KAAK,EAAE,IAAI;;AkDRf,aAAc;ECRZ,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;;ADSpB,WAAY;EACV,KAAK,EAAE,gBAAgB;;AAEzB,UAAW;EACT,KAAK,EAAE,eAAe;;AAQxB,KAAM;EACJ,OAAO,EAAE,eAAe;;AAE1B,KAAM;EACJ,OAAO,EAAE,gBAAgB;;AAE3B,UAAW;EACT,UAAU,EAAE,MAAM;;AAEpB,UAAW;EEzBT,IAAI,EAAE,KAAK;EACX,KAAK,EAAE,WAAW;EAClB,WAAW,EAAE,IAAI;EACjB,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC;;AF8BX,OAAQ;EACN,OAAO,EAAE,eAAe;;AAO1B,MAAO;EACL,QAAQ,EAAE,KAAK;;AGhCf,aAEC;EADC,KAAK,EAAE,YAAY;ACLrB,WAAW;EACT,OAAO,EAAE,eAAe;;AAD1B,WAAW;EACT,OAAO,EAAE,eAAe;;AAD1B,WAAW;EACT,OAAO,EAAE,eAAe;;AAD1B,WAAW;EACT,OAAO,EAAE,eAAe;;ADiB5B;;;;;;;;;;;wBAWyB;EACvB,OAAO,EAAE,eAAe;;AAG1B,yBAAmC;EC5CjC,WAAW;IACT,OAAO,EAAE,gBAAgB;;EAE3B,gBAAiB;IAAE,OAAO,EAAE,gBAAgB;;EAC5C,aAAiB;IAAE,OAAO,EAAE,oBAAoB;;EAChD;eACiB;IAAE,OAAO,EAAE,qBAAqB;AD0CjD,yBAAmC;EADrC,iBAAkB;IAEd,OAAO,EAAE,gBAAgB;;AAI3B,yBAAmC;EADrC,kBAAmB;IAEf,OAAO,EAAE,iBAAiB;;AAI5B,yBAAmC;EADrC,wBAAyB;IAErB,OAAO,EAAE,uBAAuB;;AAIpC,gDAAmE;EC/DjE,WAAW;IACT,OAAO,EAAE,gBAAgB;;EAE3B,gBAAiB;IAAE,OAAO,EAAE,gBAAgB;;EAC5C,aAAiB;IAAE,OAAO,EAAE,oBAAoB;;EAChD;eACiB;IAAE,OAAO,EAAE,qBAAqB;AD6DjD,gDAAmE;EADrE,iBAAkB;IAEd,OAAO,EAAE,gBAAgB;;AAI3B,gDAAmE;EADrE,kBAAmB;IAEf,OAAO,EAAE,iBAAiB;;AAI5B,gDAAmE;EADrE,wBAAyB;IAErB,OAAO,EAAE,uBAAuB;;AAIpC,iDAAmE;EClFjE,WAAW;IACT,OAAO,EAAE,gBAAgB;;EAE3B,gBAAiB;IAAE,OAAO,EAAE,gBAAgB;;EAC5C,aAAiB;IAAE,OAAO,EAAE,oBAAoB;;EAChD;eACiB;IAAE,OAAO,EAAE,qBAAqB;ADgFjD,iDAAmE;EADrE,iBAAkB;IAEd,OAAO,EAAE,gBAAgB;;AAI3B,iDAAmE;EADrE,kBAAmB;IAEf,OAAO,EAAE,iBAAiB;;AAI5B,iDAAmE;EADrE,wBAAyB;IAErB,OAAO,EAAE,uBAAuB;;AAIpC,0BAAmC;ECrGjC,WAAW;IACT,OAAO,EAAE,gBAAgB;;EAE3B,gBAAiB;IAAE,OAAO,EAAE,gBAAgB;;EAC5C,aAAiB;IAAE,OAAO,EAAE,oBAAoB;;EAChD;eACiB;IAAE,OAAO,EAAE,qBAAqB;ADmGjD,0BAAmC;EADrC,iBAAkB;IAEd,OAAO,EAAE,gBAAgB;;AAI3B,0BAAmC;EADrC,kBAAmB;IAEf,OAAO,EAAE,iBAAiB;;AAI5B,0BAAmC;EADrC,wBAAyB;IAErB,OAAO,EAAE,uBAAuB;;AAIpC,yBAAmC;EC7GjC,UAAW;IACT,OAAO,EAAE,eAAe;ADgH5B,gDAAmE;ECjHjE,UAAW;IACT,OAAO,EAAE,eAAe;ADoH5B,iDAAmE;ECrHjE,UAAW;IACT,OAAO,EAAE,eAAe;ADwH5B,0BAAmC;ECzHjC,UAAW;IACT,OAAO,EAAE,eAAe;AAD1B,cAAW;EACT,OAAO,EAAE,eAAe;;ADqI5B,YAAa;ECjJX,cAAW;IACT,OAAO,EAAE,gBAAgB;;EAE3B,mBAAiB;IAAE,OAAO,EAAE,gBAAgB;;EAC5C,gBAAiB;IAAE,OAAO,EAAE,oBAAoB;;EAChD;kBACiB;IAAE,OAAO,EAAE,qBAAqB;AD8InD,oBAAqB;EACnB,OAAO,EAAE,eAAe;EAExB,YAAa;IAHf,oBAAqB;MAIjB,OAAO,EAAE,gBAAgB;;AAG7B,qBAAsB;EACpB,OAAO,EAAE,eAAe;EAExB,YAAa;IAHf,qBAAsB;MAIlB,OAAO,EAAE,iBAAiB;;AAG9B,2BAA4B;EAC1B,OAAO,EAAE,eAAe;EAExB,YAAa;IAHf,2BAA4B;MAIxB,OAAO,EAAE,uBAAuB;;AAIpC,YAAa;EC/JX,aAAW;IACT,OAAO,EAAE,eAAe;ApEH5B,gBAAgB;AqEfhB,8BAA8B;AAI9B,sBAAsB;AAGtB,WAAW;AAIX,UAAU;ACXV,wBAAwB;AAGxB,cAAc;ACHd,yCAAyC;AAiBzC,eAAe;AACf,UASC;EARC,WAAW,EAAE,iBAAiB;EAC9B,GAAG,EAAE,8FAA8F;EACnG,GAAG,EAAE,geAGqH;EAC1H,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;AAGpB,uCAAwC;EACtC,WAAW,EAAE,iBAAiB;EAC9B,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,YAAY,EAAE,MAAM;EACpB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,CAAC;EAEd,uCAAuC;EACvC,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;;AAIpC,kBAAkB;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAGlB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAGlB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAGlB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAGlB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAGlB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAGlB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAGlB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAGlB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAGlB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAGlB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAGlB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,WAAW;AAEX,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAGlB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAGlB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAGlB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAGlB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAGlB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAGlB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAGlB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAGlB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAGlB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAGlB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAIlB,wCAAyC;EACvC,OAAO,EAAE,OAAO;;AAElB,wCAAyC;EACvC,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wCAAyC;EACvC,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,qCAAsC;EACpC,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,kDAAmD;EACjD,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,oCAAqC;EACnC,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,oCAAqC;EACnC,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,uCAAwC;EACtC,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,qCAAsC;EACpC,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qCAAsC;EACpC,OAAO,EAAE,OAAO;;AAElB,mCAAoC;EAClC,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,qCAAsC;EACpC,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qCAAsC;EACpC,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,iCAAkC;EAChC,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,iCAAkC;EAChC,OAAO,EAAE,OAAO;;AAElB,iCAAkC;EAChC,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,mCAAoC;EAClC,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,sCAAuC;EACrC,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,mCAAoC;EAClC,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,kCAAmC;EACjC,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,gCAAiC;EAC/B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,oBAAqB;EACnB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,2BAA4B;EAC1B,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,0BAA2B;EACzB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,wBAAyB;EACvB,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,qBAAsB;EACpB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,8BAA+B;EAC7B,OAAO,EAAE,OAAO;;AAElB,4BAA6B;EAC3B,OAAO,EAAE,OAAO;;AAElB,+BAAgC;EAC9B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,6BAA8B;EAC5B,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,iBAAkB;EAChB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,mBAAoB;EAClB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;EACjB,OAAO,EAAE,OAAO;;AAElB,kBAAmB;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EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,yBAA0B;EACxB,OAAO,EAAE,OAAO;;AAElB,uBAAwB;EACtB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO,EAAE,OAAO;;AAElB,sBAAuB;EACrB,OAAO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", +"sources": ["index.scss","../../src/css/theme/_variables.scss","../../src/css/fx-boot/_bootstrap.scss","../../src/css/fx-boot/bootstrap/_normalize.scss","../../src/css/fx-boot/bootstrap/_print.scss","../../src/css/fx-boot/bootstrap/_glyphicons.scss","../../src/css/fx-boot/bootstrap/_scaffolding.scss","../../src/css/fx-boot/bootstrap/mixins/_vendor-prefixes.scss","../../src/css/fx-boot/bootstrap/_variables.scss","../../src/css/fx-boot/bootstrap/mixins/_tab-focus.scss","../../src/css/fx-boot/bootstrap/mixins/_image.scss","../../src/css/fx-boot/bootstrap/_type.scss","../../src/css/fx-boot/bootstrap/mixins/_text-emphasis.scss","../../src/css/fx-boot/bootstrap/mixins/_background-variant.scss","../../src/css/fx-boot/bootstrap/mixins/_clearfix.scss","../../src/css/fx-boot/bootstrap/mixins/_text-overflow.scss","../../src/css/fx-boot/bootstrap/_code.scss","../../src/css/fx-boot/bootstrap/_grid.scss","../../src/css/fx-boot/bootstrap/mixins/_grid.scss","../../src/css/fx-boot/bootstrap/mixins/_grid-framework.scss","../../src/css/fx-boot/bootstrap/_tables.scss","../../src/css/fx-boot/bootstrap/mixins/_table-row.scss","../../src/css/fx-boot/bootstrap/_forms.scss","../../src/css/fx-boot/bootstrap/mixins/_forms.scss","../../src/css/fx-boot/bootstrap/_buttons.scss","../../src/css/fx-boot/bootstrap/mixins/_buttons.scss","../../src/css/fx-boot/bootstrap/mixins/_opacity.scss","../../src/css/fx-boot/bootstrap/_component-animations.scss","../../src/css/fx-boot/bootstrap/_dropdowns.scss","../../src/css/fx-boot/bootstrap/mixins/_nav-divider.scss","../../src/css/fx-boot/bootstrap/mixins/_reset-filter.scss","../../src/css/fx-boot/bootstrap/_button-groups.scss","../../src/css/fx-boot/bootstrap/mixins/_border-radius.scss","../../src/css/fx-boot/bootstrap/_input-groups.scss","../../src/css/fx-boot/bootstrap/_navs.scss","../../src/css/fx-boot/bootstrap/_navbar.scss","../../src/css/fx-boot/bootstrap/mixins/_nav-vertical-align.scss","../../src/css/fx-boot/bootstrap/_breadcrumbs.scss","../../src/css/fx-boot/bootstrap/_pagination.scss","../../src/css/fx-boot/bootstrap/mixins/_pagination.scss","../../src/css/fx-boot/bootstrap/_pager.scss","../../src/css/fx-boot/bootstrap/_labels.scss","../../src/css/fx-boot/bootstrap/mixins/_labels.scss","../../src/css/fx-boot/bootstrap/_badges.scss","../../src/css/fx-boot/bootstrap/_jumbotron.scss","../../src/css/fx-boot/bootstrap/_thumbnails.scss","../../src/css/fx-boot/bootstrap/_alerts.scss","../../src/css/fx-boot/bootstrap/mixins/_alerts.scss","../../src/css/fx-boot/bootstrap/_progress-bars.scss","../../src/css/fx-boot/bootstrap/mixins/_gradients.scss","../../src/css/fx-boot/bootstrap/mixins/_progress-bar.scss","../../src/css/fx-boot/bootstrap/_media.scss","../../src/css/fx-boot/bootstrap/_list-group.scss","../../src/css/fx-boot/bootstrap/mixins/_list-group.scss","../../src/css/fx-boot/bootstrap/_panels.scss","../../src/css/fx-boot/bootstrap/mixins/_panels.scss","../../src/css/fx-boot/bootstrap/_responsive-embed.scss","../../src/css/fx-boot/bootstrap/_wells.scss","../../src/css/fx-boot/bootstrap/_close.scss","../../src/css/fx-boot/bootstrap/_modals.scss","../../src/css/fx-boot/bootstrap/_tooltip.scss","../../src/css/fx-boot/bootstrap/mixins/_reset-text.scss","../../src/css/fx-boot/bootstrap/_popovers.scss","../../src/css/fx-boot/bootstrap/_carousel.scss","../../src/css/fx-boot/bootstrap/_utilities.scss","../../src/css/fx-boot/bootstrap/mixins/_center-block.scss","../../src/css/fx-boot/bootstrap/mixins/_hide-text.scss","../../src/css/fx-boot/bootstrap/_responsive-utilities.scss","../../src/css/fx-boot/bootstrap/mixins/_responsive-visibility.scss","../../submodules/fenix-ui-common/css/_fenix-style-no-variables.scss","../../submodules/fenix-ui-common/css/base/_fx-fonts-import.scss","../../submodules/fenix-ui-common/css/base/fonts/eldorado/_font-eldorado-main.scss","../../submodules/fenix-ui-common/css/base/fonts/roboto/_font-roboto-main.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_font-awesome-main.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_variables.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_path.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_core.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_larger.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_fixed-width.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_list.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_bordered-pulled.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_spinning.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_rotated-flipped.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_mixins.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_stacked.scss","../../submodules/fenix-ui-common/css/base/fonts/font_awesome/_icons.scss","../../submodules/fenix-ui-common/css/base/_fx-typography.scss","../../submodules/fenix-ui-common/css/base/_fx-reset.scss","../../submodules/fenix-ui-common/css/components/_fx-components.scss","../../submodules/fenix-ui-common/css/components/_fx-buttons.scss","../../submodules/fenix-ui-common/css/utils/_fx-mixins.scss","../../submodules/fenix-ui-common/css/components/_fx-catalog.scss","../../submodules/fenix-ui-common/css/components/_fx-circle-number.scss","../../submodules/fenix-ui-common/css/components/_fx-color-reference.scss","../../submodules/fenix-ui-common/css/components/_fx-datepicker.scss","../../submodules/fenix-ui-common/css/components/_fx-dropdown.scss","../../submodules/fenix-ui-common/css/components/_fx-fieldset.scss","../../submodules/fenix-ui-common/css/components/_fx-filter.scss","../../submodules/fenix-ui-common/css/components/_fx-fixed-height.scss","../../submodules/fenix-ui-common/css/components/_fx-icons.scss","../../submodules/fenix-ui-common/css/components/_fx-inputs.scss","../../submodules/fenix-ui-common/css/components/_fx-ios-switch.scss","../../submodules/fenix-ui-common/css/components/_fx-labels.scss","../../submodules/fenix-ui-common/css/components/_fx-legend.scss","../../submodules/fenix-ui-common/css/components/_fx-metadata-viewer.scss","../../submodules/fenix-ui-common/css/components/_fx-modular-form.scss","../../submodules/fenix-ui-common/css/components/_fx-navigation.scss","../../submodules/fenix-ui-common/css/components/_fx-obj-box.scss","../../submodules/fenix-ui-common/css/components/_fx-panel.scss","../../submodules/fenix-ui-common/css/components/_fx-popover.scss","../../submodules/fenix-ui-common/css/components/_fx-radio-checkbox.scss","../../submodules/fenix-ui-common/css/components/_fx-range-slider.scss","../../submodules/fenix-ui-common/css/components/_fx-resume-bar.scss","../../submodules/fenix-ui-common/css/components/_fx-section-switcher.scss","../../submodules/fenix-ui-common/css/components/_fx-sidebar.scss","../../submodules/fenix-ui-common/css/components/_fx-simple-sidebar.scss","../../submodules/fenix-ui-common/css/components/_fx-tabs.scss","../../submodules/fenix-ui-common/css/components/_fx-topmenu.scss","../../submodules/fenix-ui-common/css/components/_fx-uploader.scss","../../submodules/fenix-ui-common/css/components/_fx-well.scss","../../submodules/fenix-ui-common/css/components/_fx-widgets.scss","../../submodules/fenix-ui-common/css/components/_fx-widgets-stack.scss","../../submodules/fenix-ui-common/css/vendor/_fx-facebook.scss","../../submodules/fenix-ui-common/css/vendor/_fx-introjs.scss","../../submodules/fenix-ui-common/css/vendor/_fx-jqwidgets.scss","../../submodules/fenix-ui-common/css/vendor/_fx-jstree.scss","../../submodules/fenix-ui-common/css/vendor/_fx-packery.scss","../../submodules/fenix-ui-common/css/leaflet/_fx-leaflet-imports.scss","../../submodules/fenix-ui-common/css/leaflet/_fx-leaflet-zoom.scss","../../src/css/theme/_default.scss","../../src/css/components/_breadcrumbs.scss","../../src/css/components/_fao-footer.scss","../../src/css/components/_fao-topmenu.scss","../../src/css/components/_form.scss","../../src/css/components/_icons.scss","../../src/css/components/_jstree.scss","../../src/css/components/_preload.scss","../../src/css/theme/_typo3-compatibility.scss","../../src/css/pages/_home.scss","../../src/css/pages/_analyze-data.scss","../../src/css/pages/_browse-data.scss","../../submodules/fenix-ui-common/css/themes/_fx-variables.scss","../../submodules/fenix-ui-filter/src/css/_filter.scss","../../submodules/fenix-ui-analysis/src/css/_analysis.scss","../../submodules/fenix-ui-visualization-box/src/css/_visualization-box.scss"], +"names": [], +"file": "index.css" +} \ No newline at end of file diff --git a/dist/css/index.scss b/dist/css/index.scss index 5efd4ef5..bc7b2848 100644 --- a/dist/css/index.scss +++ b/dist/css/index.scss @@ -1,36 +1,158 @@ /* Dist - Index */ +/* RLM - Variables */ +@import '../../src/css/theme/variables'; + .fx-sandbox{ padding: 0 5px; +} - @import '../../src/css/fx-boot/bootstrap'; -} -/* RLM - Variables */ -@import '../../src/css/theme/variables'; -/* Fenix Utils*/ -@import '../../submodules/fenix-ui-common/css/fenix-style-no-variables'; +@import '../../src/css/fx-boot/bootstrap'; +/* Fenix Utils*/ +@import '../../submodules/fenix-ui-common/css/fenix-style-no-variables'; /* Base */ @import '../../src/css/theme/default'; - -/* Components */ +///* Components */ @import '../../src/css/components/breadcrumbs'; -//@import '../../src/css/components/fao-footer'; +@import '../../src/css/components/fao-footer'; @import '../../src/css/components/fao-topmenu'; @import '../../src/css/components/form'; +@import '../../src/css/components/icons'; @import '../../src/css/components/jstree'; -@import '../../src/css/components/submenu'; - +@import '../../src/css/components/preload'; +//@import '../../src/css/components/submenu'; /* Typo3 */ @import '../../src/css/theme/typo3-compatibility'; - /* Pages */ @import '../../src/css/pages/home'; +@import '../../src/css/pages/analyze-data'; +@import '../../src/css/pages/browse-data'; + + + +/* Fenix Common CSS */ +@import '../../submodules/fenix-ui-common/css/themes/fx-variables'; + +/* Boostrap Queries */ +@import '../../submodules/fenix-ui-common/css/themes/fx-bootstrap-queries'; +$fx-ui-common: '../../submodules/fenix-ui-common/'; + + +@import '../../submodules/fenix-ui-common/css/base/fx-typography'; + +@import '../../submodules/fenix-ui-common/css/utils/fx-mixins'; +@import '../../submodules/fenix-ui-common/css/components/fx-tabs'; +@import '../../submodules/fenix-ui-common/css/components/fx-buttons'; +@import '../../submodules/fenix-ui-common/css/components/fx-icons'; +@import '../../submodules/fenix-ui-common/css/vendor/fx-jstree'; +@import '../../submodules/fenix-ui-common/css/components/fx-radio-checkbox'; + +@import '../../submodules/fenix-ui-filter/src/css/filter'; +@import '../../submodules/fenix-ui-analysis/src/css/analysis'; +@import '../../submodules/fenix-ui-visualization-box/src/css/visualization-box'; + +body { + background-color: $fenix-light-bg; + font-family: "FrutigerLTW02-45Light", Arial, Helvetica, Verdana, sans-serif; +} + + +/** Venn Text Area */ +#venn-diagram-info-box textarea { + width: 100%; + height: 500px; + padding: 10px; + resize: none; +} + +/** Table Sort Icons */ +.gt-hd-icon.gt-hd-asc{ + @extend .fa; + @extend .fa-caret-up; +} + +.gt-hd-icon{ + @extend .fa; + @extend .fa-sort; +} + + +.gt-hd-icon.gt-hd-desc{ + @extend .fa; + @extend .fa-caret-down; +} + +/** Table Header */ +.gt-hd-row td .gt-inner { + font-weight: 600; + font-size: 14px; + text-transform: none; +} + +/*!** Table Highlighted Columns: Comparative Advantage Only *! +div[data-item="comp_advantage"] .gt-col-1_11-ratio, div[data-item="comp_advantage"] .gt-col-1_11-purposecode_en, div[data-item="comp_advantage"] .gt-col-1_11-year { + background-color:#eef6ff; +}*/ + +/** Table Cell Alignment */ +.gt-inner-left { + text-align: left; +} + +/** Table Page size drop-down */ +.gt-pagesize-select { + width: 48px +} + +.big-col-width { + width: 246px; +} + +.smaller-col-width { + width: 66px; + +} + + +.small-col-width { + width: 96px; +} + +.obj-box-info { + font-size: 12px; +} + +//Table Header Row +//.gt-freeze-div[id*="headDiv"] td { +// background-color: #ABC8E1 !important; +//} + +/*.gt-row-selected td { +!** background-color: #e6f1ff; **! + +} + +!* Freezed Rows *! +.gt-freeze-div[id*="bodyDiv"] td { +!** background-color: #f4f4f4 !important;**! + +}*/ + + + + + + + + + + diff --git a/dist/fonts/bootstrap/glyphicons-halflings-regular.eot b/dist/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100755 index 00000000..b93a4953 Binary files /dev/null and b/dist/fonts/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/dist/fonts/bootstrap/glyphicons-halflings-regular.svg b/dist/fonts/bootstrap/glyphicons-halflings-regular.svg new file mode 100755 index 00000000..94fb5490 --- /dev/null +++ b/dist/fonts/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf b/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100755 index 00000000..1413fc60 Binary files /dev/null and b/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/dist/fonts/bootstrap/glyphicons-halflings-regular.woff b/dist/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100755 index 00000000..9e612858 Binary files /dev/null and b/dist/fonts/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100755 index 00000000..64539b54 Binary files /dev/null and b/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 differ diff --git a/docs/BrowseDataOverview.pdf b/docs/BrowseDataOverview.pdf new file mode 100644 index 00000000..61c7d81a Binary files /dev/null and b/docs/BrowseDataOverview.pdf differ diff --git a/docs/comparative_advantage_desc.pdf b/docs/comparative_advantage_desc.pdf new file mode 100644 index 00000000..10f6d76b Binary files /dev/null and b/docs/comparative_advantage_desc.pdf differ diff --git a/i18n/modules.js b/i18n/analyse-comp-advantage.js similarity index 100% rename from i18n/modules.js rename to i18n/analyse-comp-advantage.js diff --git a/i18n/analyse-compare.js b/i18n/analyse-compare.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/analyse-compare.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/analyse-modules.js b/i18n/analyse-modules.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/analyse-modules.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/analyse-partner-matrix.js b/i18n/analyse-partner-matrix.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/analyse-partner-matrix.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/analyse-priority-analysis.js b/i18n/analyse-priority-analysis.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/analyse-priority-analysis.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/analyse.js b/i18n/analyse.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/analyse.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/browse-dashboard.js b/i18n/browse-dashboard.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/browse-dashboard.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/browse-modules.js b/i18n/browse-modules.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/browse-modules.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/chart.js b/i18n/chart.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/chart.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/filter.js b/i18n/filter.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/filter.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/pivot.js b/i18n/pivot.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/pivot.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/projects.js b/i18n/projects.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/projects.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/i18n/root/analyse-comp-advantage.js b/i18n/root/analyse-comp-advantage.js new file mode 100644 index 00000000..b55b1e81 --- /dev/null +++ b/i18n/root/analyse-comp-advantage.js @@ -0,0 +1,8 @@ +/*global define*/ +define({ + text: "Change me in 118n/root/modules.js", + "comparative-advantage": "FAO Comparative Advantage", + "comp_advantage_desc_1": "The FAO Comparative Advantage is an objective output based on a series of calculations performed on data reported by resource partners to the OECD-DAC.", + "comp_advantage_desc_2": "Hovering over the column headers provides a general description otherwise a more detailed explanation is available", + "comp_advantage_desc_3": "here" +}); \ No newline at end of file diff --git a/i18n/root/analyse-compare.js b/i18n/root/analyse-compare.js new file mode 100644 index 00000000..cee7c7e8 --- /dev/null +++ b/i18n/root/analyse-compare.js @@ -0,0 +1,68 @@ +/*global define*/ +define(function () { + + 'use strict'; + + var RECIPIENT = "Country / Region", + DONOR = "Donor", + DELIVERY = "Channel of delivery", + SECTOR = "Sector", + SUB_SECTOR = "Sub-Sector", + ODA = "Official Development Assistance (ODA)", + YEAR_FROM = "from", + YEAR_TO = "to"; + + return { + "compare": "Compare", + "recipient": RECIPIENT, + "donor": DONOR, + "delivery": DELIVERY, + "sector": SECTOR, + "sub-sector": SUB_SECTOR, + "year_form": YEAR_FROM, + "year_to": YEAR_TO, + + "collapse_btn": "Collapse / Expand this panel", + "compare_btn": "Compare", + "reset_btn": "Reset", + "clear_all_btn": "Clear All", + "search_placeholder": "Filter", + "download" : "Download", + + "sel_heading_country": RECIPIENT, + "sel_heading_donor": DONOR, + "sel_heading_oda": ODA, + "sel_heading_year": "Year", + "sel_heading_compare_by": "Compare by", + "sel_heading_channel_of_delivery": DELIVERY, + "sel_heading_sector": SECTOR, + "sel_heading_sub_sector": SUB_SECTOR, + "sel_country_tab_countries": "Countries", + "sel_country_tab_regions": "Regions", + "sel_country_tab_regional_aggregation": "Regional Aggregation", + + "expectedResult": "Expected results", + "compare_as": "Compare as", + "tab_chart": "Chart", + "tab_table": "Table", + "tab_info": "Info", + "result_error": "Aw snap! There was a problem loading this resource", + "result_empty": "No data for the current selection", + + "show_advanced_options": "Show advanced options", + + //info tab + "info_current_selection": "Current selection:", + "info_title_oda": ODA, + "info_title_recipient": RECIPIENT, + "info_title_donor": DONOR, + "info_title_delivery": DELIVERY, + "info_title_sector": SECTOR, + "info_title_sub-sector": SUB_SECTOR, + "info_title_year_from": YEAR_FROM, + "info_title_year_to": YEAR_TO, + + "reload": "Reload" + + } +}); \ No newline at end of file diff --git a/i18n/root/analyse-modules.js b/i18n/root/analyse-modules.js new file mode 100644 index 00000000..6b21d7c2 --- /dev/null +++ b/i18n/root/analyse-modules.js @@ -0,0 +1,86 @@ +/*global define*/ +define({ + title: "Analyse Data", + text: "Change me in 118n/root/modules.js", + modules:[ + { + "header": { + "EN": "Analyse data" + }, + "title": { + "EN": "Compare" + }, + "body": { + "EN": "Compare past ODA spending in two or more recipient countries, by two or more selected donors, channels of delivery, sectors or subsectors in a specific time period." + }, + "link": "#analyse/compare", + "img": "http://fenixrepo.fao.org/cdn/images/modules/crowdprices/crowdprices.png" + }, + // { + // "header": { + // "EN": "Analyse data" + // }, + // "title": { + // "EN": "Implementing Agencies" + // }, + // "body": { + // "EN": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." + // }, + // "link": "#analyse/agencies", + // "img": "http://fenixrepo.fao.org/cdn/images/modules/trade_AFG/trade_AFG.png" + // }, + { + "header": { + "EN": "Analyse data" + }, + "title": { + "EN": "Resource Partner Matrix" + }, + "body": { + "EN": "Analyse the resource partner's spending in FAO-related sectors versus other sectors of the Official Development Assistance (ODA)." + }, + "link": "#analyse/partner_matrix", + "img": "http://fenixrepo.fao.org/cdn/images/modules/env_AFG/environmental_AFG.png" + }, + { + "header": { + "EN": "Analyse data" + }, + "title": { + "EN": "Project Analysis" + }, + "body": { + "EN": "View information on implemented projects based on your selection." + }, + "link": "#analyse/projects", + "img": "http://fenixrepo.fao.org/cdn/images/modules/monitoring/kenya/timeseries/kenya_monitoring_timeseries.png" + }, + { + "header": { + "EN": "Analyse data" + }, + "title": { + "EN": "Priority Analysis" + }, + "body": { + "EN": "Analyse common priorities between FAO, National Governments and Resource Partners by intersecting FAO's countries programming framework, UNDAF documents and donors' spending priorities." + }, + "link": "#analyse/priority_analysis", + "img": "http://fenixrepo.fao.org/cdn/images/modules/monitoring/kenya/timeseries/kenya_monitoring_timeseries.png" + }, + { + "header": { + "EN": "Analyse data" + }, + "title": { + "EN": "FAO Comparative Advantage" + }, + "body": { + "EN": "Analyse FAO's comparative advantage with respect to the other implementing agencies in a specific area of intervention." + }, + "link": "#analyse/comp_advantage", + "img": "http://fenixrepo.fao.org/cdn/images/modules/monitoring/kenya/timeseries/kenya_monitoring_timeseries.png" + } + + ] +}); diff --git a/i18n/root/analyse-partner-matrix.js b/i18n/root/analyse-partner-matrix.js new file mode 100644 index 00000000..5e84e524 --- /dev/null +++ b/i18n/root/analyse-partner-matrix.js @@ -0,0 +1,15 @@ +/*global define*/ +define({ + text: "Change me in 118n/root/modules.js", + "partner-matrix": "Resource Partner Matrix", + "by-recipient": "By Recipient Country", + "by-partner": "By Resource Partner", + "top-partners-fao-oda": "FAO Sectors and Total ODA by top Resource Partners", + "top-recipients-fao-oda": "FAO Sectors and Total ODA by top Recipient Countries", + "tot-fao-oda": "Total ODA and Total ODA in FAO Sectors", + "top-channels": "Top Channels of Delivery", + "top-partners": "Total ODA from top Resource Partners", + "top-fao-partners": "Total ODA in FAO Sectors from top Resource Partners", + "top-recipients": "Total ODA to top Recipient Countries", + "top-fao-recipients": "Total ODA in FAO Sectors to top Recipient Countries" +}); \ No newline at end of file diff --git a/i18n/root/analyse-priority-analysis.js b/i18n/root/analyse-priority-analysis.js new file mode 100644 index 00000000..f3c67a29 --- /dev/null +++ b/i18n/root/analyse-priority-analysis.js @@ -0,0 +1,20 @@ +/*global define*/ +define({ + text: "Change me in 118n/root/modules.js", + "priorities-table": "Country (UNDAF) and FAO Agreed (CPF) Priorities in Agriculture and Food Security", + "venn-diagram": "Venn Diagram: Common Priorities between the Countries, FAO and the Resource Partners", + "venn-diagram-info": "Click on the Venn Diagram intersections to view the priorities and the associated funding allocation charts.", + "prioritiesOnlyIn": "Priorities only in", + "commonPrioritiesIn": "Common priorities in", + "and": "and", + "none": "None", + "recipient": "Countries", + "partner": "Partners", + "fao": "FAO", + "all": "All", + "top-partners": "Top Resource Partners for selected priorities", + "top-recipients": "Top Recipient Countries for selected priorities", + "top-channels": "Top Channels of Delivery for selected priorities", + "financing-priorities-partners": "Financing Priorities by Resource Partners for selected priorities", + "financing-priorities-recipients": "Financing Priorities by Recipient Countries for selected priorities" +}); \ No newline at end of file diff --git a/i18n/root/analyse.js b/i18n/root/analyse.js new file mode 100644 index 00000000..43858194 --- /dev/null +++ b/i18n/root/analyse.js @@ -0,0 +1,11 @@ +/*global define*/ +define({ + "title": "Analyse Data", + "text" : "Change me in 118n/root/analyse.js", + "compare": "Compare", + "agencies": "Implementing Agencies", + "partner_matrix": "Resource Partner Matrix", + "projects": "Project Analysis", + "priority_analysis": "Priority Analysis", + "comp_advantage": "FAO Comparative Advantage" +}); \ No newline at end of file diff --git a/i18n/root/browse-dashboard.js b/i18n/root/browse-dashboard.js new file mode 100644 index 00000000..937d783c --- /dev/null +++ b/i18n/root/browse-dashboard.js @@ -0,0 +1,22 @@ +/*global define*/ +define({ + title: "Dashboard Items", + text: "Change me in 118n/root/modules.js", + "tot-oda": "Total ODA", + "tot-oda-sector": "Total ODA", + "tot-oda-subsector": "Total ODA", + "tot-oda-gni": "Total ODA and GNI", + "top-partners": "Top Resource Partners", + "top-partners-others": "ODA Share between Top Resource Partners and Others", + "top-recipients": "Top Recipients", + "top-recipients-others": "ODA Share between Top Recipients and Others", + "top-sectors": "Top Sectors", + "top-sectors-others": "ODA Share between Top Sectors and Others", + "top-subsectors": "Top Sub-Sectors", + "top-channels": "Top Channels of Delivery", + "top-implementing-channels": "Top Implementing Channels", + "oda-regional": "ODA Regional Distribution", + "country-map": "Map on ODA received", + "regional-map": "Regional Map on ODA received" + +}); \ No newline at end of file diff --git a/i18n/root/browse-modules.js b/i18n/root/browse-modules.js new file mode 100644 index 00000000..efc246f3 --- /dev/null +++ b/i18n/root/browse-modules.js @@ -0,0 +1,59 @@ +/*global define*/ +define({ + title: "Browse by", + text: "Change me in 118n/root/modules.js", + modules:[ + { + "header": { + "EN": "Browse by" + }, + "title": { + "EN": "Sector" + }, + "body": { + "EN": "Analyse past ODA spending and top resource partners and recipient countries in specific OECD-DAC sectors and subsectors, for a specific time period." + }, + "link": "#browse/sector", + "img": "http://fenixrepo.fao.org/cdn/images/modules/monitoring/kenya/timeseries/kenya_monitoring_timeseries.png" + }, + { + "header": { + "EN": "Browse by" + }, + "title": { + "EN": "Recipient Country" + }, + "body": { + "EN": "Learn about total ODA spending, top resource partners, channels of delivery, sectors and subsectors in the Recipient Country and for the time period of your choice." + }, + "link": "#browse/country", + "img": "http://fenixrepo.fao.org/cdn/images/modules/crowdprices/crowdprices.png" + }, + { + "header": { + "EN": "Browse by" + }, + "title": { + "EN": "Resource Partner" + }, + "body": { + "EN": "Find out the geographical operational outreach of the selected resource partner, and which top sectors and subsectors are the most financed through a certain channel of delivery." + }, + "link": "#browse/donor", + "img": "http://fenixrepo.fao.org/cdn/images/modules/trade_AFG/trade_AFG.png" + }, + { + "header": { + "EN": "Browse by" + }, + "title": { + "EN": "Recipient Country and Resource Partner" + }, + "body": { + "EN": "Analyse a Resource Partner's ODA spending in a specific recipient country and time period, in relation to the top channels of delivery, sectors and subsectors." + }, + "link": "#browse/country_donor", + "img": "http://fenixrepo.fao.org/cdn/images/modules/env_AFG/environmental_AFG.png" + } + ] +}); \ No newline at end of file diff --git a/i18n/root/browse.js b/i18n/root/browse.js index 0af179b8..973bc9a9 100644 --- a/i18n/root/browse.js +++ b/i18n/root/browse.js @@ -1,9 +1,15 @@ /*global define*/ define({ "title": "Browse By", - "title_flude": "Forest resource data (FRA)", - "filter" : "Filter Data", - "text" : "Change me in 118n/root/analysis.js", - "lateral_menu_flude_title" : "Topics", - "filter_btn" : "Filter" + "filter_btn": "Update", + "source": "Source", + "and": "and", + "selections" : "Current Selections", + "backToTop" : "Back to Top", + "development_indicators": "Development Indicators", + "text" : "Change me in 118n/root/browse.js", + "sector": "By Sector", + "country": "By Recipient Country", + "donor": "By Resource Partner", + "country_donor": "By Recipient Country & Resource Partner" }); \ No newline at end of file diff --git a/i18n/root/chart.js b/i18n/root/chart.js new file mode 100644 index 00000000..e3e41253 --- /dev/null +++ b/i18n/root/chart.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "hover_values": "Hover for values and click and drag to zoom" +}); \ No newline at end of file diff --git a/i18n/root/common.js b/i18n/root/common.js index 19192a84..56c903a3 100644 --- a/i18n/root/common.js +++ b/i18n/root/common.js @@ -9,6 +9,7 @@ define({ "courtesy_message" : "No results", "no_results" : "No Results", "selector_select_all" : "Select All", - "selector_select_none" : "Select None" - + "selector_select_none" : "Select None", + "loading_in_progress" : "Loading in progress", + "completed" : "Completed" }); \ No newline at end of file diff --git a/i18n/root/errors.js b/i18n/root/errors.js index 181b2028..e7bfc515 100644 --- a/i18n/root/errors.js +++ b/i18n/root/errors.js @@ -1,14 +1,20 @@ /*global define*/ define({ - "select_at_least_one_variable": "Please select at lease one variable", - "select_at_least_one_geo" : "Please select at lease one country or region", + "select_at_least_one_variable": "Please select at lease one variable.", + "select_at_least_one_geo" : "Please select at lease one country or region.", "fill_all_fields": "Please fill all the required fields.", "request_error" : "Internet Request error. Please try again.", "preload_resources_error" : "Impossible to load page resources.", - "no_input" : "Internal error: Invalid input format.", "country_empty" : "Country can not be empty.", "indicator_empty" : "Indicator can not be empty.", "qualifier_empty" : "Qualifier can not be empty.", - "year_empty" : "Year can not be empty." + "year_empty" : "Year can not be empty.", + "too_many_combinations" : "Too many combinations.", + "oda_missing" : "Official Development Assistance (ODA) value is missing.", + "year_missing" : "Year value is missing.", + "compare_missing" : "Missing values for 'compare' dimension.", + "no_compare" : "Impossible to find the 'compare' dimension.", + "at_least_one_more_dimension" : "Please specify values for at lease two dimensions.", + "missing_mandatory_field" : "Please fill all the mandatory fields." }); \ No newline at end of file diff --git a/i18n/root/filter.js b/i18n/root/filter.js new file mode 100644 index 00000000..d75d6bfc --- /dev/null +++ b/i18n/root/filter.js @@ -0,0 +1,17 @@ +/*global define*/ +define({ + "filter_parentsector_code": "Sector", + "filter_donorcode": "Resource Partner", + "filter_recipientcode": "Recipient Country", + "filter_purposecode": "Sub Sector", + "filter_year": "Year", + "filter_channelsubcategory_code": "Channel Parent Category", + "filter_channelcode": "Channels of Delivery", + "filter_year-from": "From", + "filter_year-to": "To", + "filter_oda": "OECD CRS ODA", + "filter_country_groupedRow": "Table rows are grouped by Recipient Country (uncheck to enable sort on all columns)", + "filter_donor_groupedRow": "Table rows are grouped by Resource Partner (uncheck to enable sort on all columns)", + "filter_country-donor_groupedRow": "Table rows are grouped by Resource Partner (uncheck to enable sort on all columns)", + "filter_tooltip_oda": "The ODA data shown below is on resources that flow out of donor countries or resource partners, not necessarily the money that flows into recipient countries. The reason why these two data might not correspond is that ODA can also be spent in the donor country, for example towards debt relief and migrant crisis support. The ADAM is based on CRS dataset thus where not specifically indicated the data refers to CRS ODA." +}); \ No newline at end of file diff --git a/i18n/root/modules.js b/i18n/root/modules.js deleted file mode 100644 index 7ed1c3f7..00000000 --- a/i18n/root/modules.js +++ /dev/null @@ -1,47 +0,0 @@ -/*global define*/ -define({ - title: "Browse Data", - text: "Change me in 118n/root/modules.js", - modules:[ - { - "title": { - "EN": "Browse Data By Country - Sector" - }, - "body": { - "EN": "Analysis of the trade flows at regional and national levels and for comparing the behaviors of regional and international import and export dynamics over time." - }, - "link": "#browse/country_sector", - "img": "http://fenixrepo.fao.org/cdn/images/modules/crowdprices/crowdprices.png" - }, - { - "title": { - "EN": "Browse Data By Donor - Sector" - }, - "body": { - "EN": "Analysis of the trade flows at regional and national levels and for comparing the behaviors of regional and international import and export dynamics over time." - }, - "link": "#browse/donor_sector", - "img": "http://fenixrepo.fao.org/cdn/images/modules/trade_AFG/trade_AFG.png" - }, - { - "title": { - "EN": "Browse Data By Country - Donor - Sector" - }, - "body": { - "EN": "Analysis of the trade flows at regional and national levels and for comparing the behaviors of regional and international import and export dynamics over time." - }, - "link": "#browse/country_donor_sector", - "img": "http://fenixrepo.fao.org/cdn/images/modules/env_AFG/environmental_AFG.png" - }, - { - "title": { - "EN": "Browse Data By Sector" - }, - "body": { - "EN": "Analysis of the trade flows at regional and national levels and for comparing the behaviors of regional and international import and export dynamics over time." - }, - "link": "#browse/sector", - "img": "http://fenixrepo.fao.org/cdn/images/modules/monitoring/kenya/timeseries/kenya_monitoring_timeseries.png" - } - ] -}); \ No newline at end of file diff --git a/i18n/root/projects.js b/i18n/root/projects.js new file mode 100644 index 00000000..7744e3e1 --- /dev/null +++ b/i18n/root/projects.js @@ -0,0 +1,12 @@ +/*global define*/ +define({ + "title": "Projects Analysis", + "filter" : "Filter Data", + "text" : "Change me in 118n/root/projects.js", + "filter_btn" : "Update", + "compare": "Compare Data", + "projects": "Project Analysis ", + "priorities": "Priority Analysis", + "donor_matrix": "Donor Matrix", + "agencies": "Implementing Agencies" +}); \ No newline at end of file diff --git a/i18n/root/table.js b/i18n/root/table.js new file mode 100644 index 00000000..ef43e556 --- /dev/null +++ b/i18n/root/table.js @@ -0,0 +1,5 @@ +/*global define*/ +define({ + "results": "Results", + "rowsFound": "Rows Found" +}); \ No newline at end of file diff --git a/i18n/table.js b/i18n/table.js new file mode 100644 index 00000000..aa9c311e --- /dev/null +++ b/i18n/table.js @@ -0,0 +1,4 @@ +/*global define*/ +define({ + "root": true +}); \ No newline at end of file diff --git a/images/home-image.jpg b/images/home-image.jpg new file mode 100644 index 00000000..356e1167 Binary files /dev/null and b/images/home-image.jpg differ diff --git a/index.html b/index.html index 810e716a..dad3ebf0 100644 --- a/index.html +++ b/index.html @@ -14,7 +14,6 @@ - @@ -28,7 +27,27 @@ - + + + + + + + + + + + + + + + + + + + + @@ -42,3 +61,5 @@ + + diff --git a/json/codelists/crs_recipients.json b/json/codelists/crs_recipients.json new file mode 100644 index 00000000..bcd37885 --- /dev/null +++ b/json/codelists/crs_recipients.json @@ -0,0 +1,1448 @@ +{ + "metadata" : { + "creationDate" : 1449846351564, + "version" : "2015", + "title" : { + "EN" : "OECD Recipients" + }, + "rid" : "9_6156", + "meContent" : { + "description" : { + "EN" : "OECD Creditor Reporting System (CRS) code list for Recipients" + }, + "resourceRepresentationType" : "codelist", + "resourceRepresentationTypeLabel" : { + "EN" : "Codelist" + }, + "keywords" : [ "crs", "code", "codes" ], + "seCodeList" : { + "numberOfLevels" : 1, + "typeOfCodeList" : "list", + "typeOfCodeListLabel" : { + "EN" : "List" + } + } + }, + "uid" : "crs_recipients", + "contacts" : [ { + "organization" : { + "EN" : "Organisation for Economic Co-operation and Development (OECD)" + }, + "contactInfo" : { } + } ], + "characterSet" : { + "codes" : [ { + "code" : "106", + "label" : { + "EN" : "UTF-8" + } + } ], + "idCodeList" : "IANAcharacterSet", + "extendedName" : { + "EN" : "Internet Assigned Numbers Authority codelist" + } + } + }, + "data" : [ { + "level" : 1, + "title" : { + "EN" : "Algeria" + }, + "code" : "130", + "rid" : "61_170807", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Libya" + }, + "code" : "133", + "rid" : "61_170887", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Morocco" + }, + "code" : "136", + "rid" : "61_170905", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tunisia" + }, + "code" : "139", + "rid" : "61_170961", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Egypt" + }, + "code" : "142", + "rid" : "61_170852", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "North of Sahara, regional" + }, + "code" : "189", + "rid" : "61_170916", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South Africa" + }, + "code" : "218", + "rid" : "61_170942", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Angola" + }, + "code" : "225", + "rid" : "61_170809", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Botswana" + }, + "code" : "227", + "rid" : "61_170826", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Burundi" + }, + "code" : "228", + "rid" : "61_170829", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Cameroon" + }, + "code" : "229", + "rid" : "61_170832", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Cabo Verde" + }, + "code" : "230", + "rid" : "61_170830", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Central African Republic" + }, + "code" : "231", + "rid" : "61_170833", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Chad" + }, + "code" : "232", + "rid" : "61_170835", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Comoros" + }, + "code" : "233", + "rid" : "61_170839", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Congo" + }, + "code" : "234", + "rid" : "61_170840", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Democratic Republic of the Congo" + }, + "code" : "235", + "rid" : "61_170847", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Benin" + }, + "code" : "236", + "rid" : "61_170821", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Ethiopia" + }, + "code" : "238", + "rid" : "61_170856", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Gabon" + }, + "code" : "239", + "rid" : "61_170861", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Gambia" + }, + "code" : "240", + "rid" : "61_170862", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Ghana" + }, + "code" : "241", + "rid" : "61_170864", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Guinea" + }, + "code" : "243", + "rid" : "61_170867", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Guinea-Bissau" + }, + "code" : "244", + "rid" : "61_170868", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Equatorial Guinea" + }, + "code" : "245", + "rid" : "61_170854", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Côte d'Ivoire" + }, + "code" : "247", + "rid" : "61_170843", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Kenya" + }, + "code" : "248", + "rid" : "61_170879", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Lesotho" + }, + "code" : "249", + "rid" : "61_170885", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Liberia" + }, + "code" : "251", + "rid" : "61_170886", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Madagascar" + }, + "code" : "252", + "rid" : "61_170888", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Malawi" + }, + "code" : "253", + "rid" : "61_170889", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mali" + }, + "code" : "255", + "rid" : "61_170892", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mauritania" + }, + "code" : "256", + "rid" : "61_170895", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mauritius" + }, + "code" : "257", + "rid" : "61_170896", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mayotte" + }, + "code" : "258", + "rid" : "61_170897", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mozambique" + }, + "code" : "259", + "rid" : "61_170906", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Niger" + }, + "code" : "260", + "rid" : "61_170912", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Nigeria" + }, + "code" : "261", + "rid" : "61_170913", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Zimbabwe" + }, + "code" : "265", + "rid" : "61_170978", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Rwanda" + }, + "code" : "266", + "rid" : "61_170926", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Sao Tome and Principe" + }, + "code" : "268", + "rid" : "61_170932", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Senegal" + }, + "code" : "269", + "rid" : "61_170934", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Seychelles" + }, + "code" : "270", + "rid" : "61_170936", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Eritrea" + }, + "code" : "271", + "rid" : "61_170855", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Sierra Leone" + }, + "code" : "272", + "rid" : "61_170937", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Somalia" + }, + "code" : "273", + "rid" : "61_170940", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Djibouti" + }, + "code" : "274", + "rid" : "61_170848", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Namibia" + }, + "code" : "275", + "rid" : "61_170908", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Saint Helena" + }, + "code" : "276", + "rid" : "61_170927", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Sudan" + }, + "code" : "278", + "rid" : "61_170949", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South Sudan" + }, + "code" : "279", + "rid" : "61_170946", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Swaziland" + }, + "code" : "280", + "rid" : "61_170951", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tanzania" + }, + "code" : "282", + "rid" : "61_170954", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Togo" + }, + "code" : "283", + "rid" : "61_170957", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Uganda" + }, + "code" : "285", + "rid" : "61_170966", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Burkina Faso" + }, + "code" : "287", + "rid" : "61_170828", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Zambia" + }, + "code" : "288", + "rid" : "61_170977", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South of Sahara, regional" + }, + "code" : "289", + "rid" : "61_170945", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Africa, regional" + }, + "code" : "298", + "rid" : "61_170805", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Barbados" + }, + "code" : "329", + "rid" : "61_170818", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Costa Rica" + }, + "code" : "336", + "rid" : "61_170842", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Cuba" + }, + "code" : "338", + "rid" : "61_170845", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Dominican Republic" + }, + "code" : "340", + "rid" : "61_170850", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "El Salvador" + }, + "code" : "342", + "rid" : "61_170853", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Guatemala" + }, + "code" : "347", + "rid" : "61_170866", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Haiti" + }, + "code" : "349", + "rid" : "61_170870", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Honduras" + }, + "code" : "351", + "rid" : "61_170871", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Belize" + }, + "code" : "352", + "rid" : "61_170820", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Jamaica" + }, + "code" : "354", + "rid" : "61_170876", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mexico" + }, + "code" : "358", + "rid" : "61_170898", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Nicaragua" + }, + "code" : "364", + "rid" : "61_170911", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Panama" + }, + "code" : "366", + "rid" : "61_170921", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Trinidad and Tobago" + }, + "code" : "375", + "rid" : "61_170960", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Anguilla" + }, + "code" : "376", + "rid" : "61_170810", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Antigua and Barbuda" + }, + "code" : "377", + "rid" : "61_170811", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Dominica" + }, + "code" : "378", + "rid" : "61_170849", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "West Indies, regional" + }, + "code" : "380", + "rid" : "61_170975", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Grenada" + }, + "code" : "381", + "rid" : "61_170865", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Saint Kitts and Nevis" + }, + "code" : "382", + "rid" : "61_170928", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Saint Lucia" + }, + "code" : "383", + "rid" : "61_170929", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Saint Vincent and the Grenadines" + }, + "code" : "384", + "rid" : "61_170930", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Montserrat" + }, + "code" : "385", + "rid" : "61_170904", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Turks and Caicos Islands" + }, + "code" : "387", + "rid" : "61_170964", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "North & Central America, regional" + }, + "code" : "389", + "rid" : "61_170915", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Argentina" + }, + "code" : "425", + "rid" : "61_170812", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bolivia" + }, + "code" : "428", + "rid" : "61_170824", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Brazil" + }, + "code" : "431", + "rid" : "61_170827", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Chile" + }, + "code" : "434", + "rid" : "61_170836", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Colombia" + }, + "code" : "437", + "rid" : "61_170838", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Ecuador" + }, + "code" : "440", + "rid" : "61_170851", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Guyana" + }, + "code" : "446", + "rid" : "61_170869", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Malta" + }, + "code" : "45", + "rid" : "61_170893", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Paraguay" + }, + "code" : "451", + "rid" : "61_170923", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Peru" + }, + "code" : "454", + "rid" : "61_170924", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Suriname" + }, + "code" : "457", + "rid" : "61_170950", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Uruguay" + }, + "code" : "460", + "rid" : "61_170968", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Venezuela" + }, + "code" : "463", + "rid" : "61_170971", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South America, regional" + }, + "code" : "489", + "rid" : "61_170943", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "America, regional" + }, + "code" : "498", + "rid" : "61_170808", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bahrain" + }, + "code" : "530", + "rid" : "61_170816", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Iran" + }, + "code" : "540", + "rid" : "61_170874", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Iraq" + }, + "code" : "543", + "rid" : "61_170875", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Jordan" + }, + "code" : "549", + "rid" : "61_170877", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Turkey" + }, + "code" : "55", + "rid" : "61_170962", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "West Bank and Gaza Strip" + }, + "code" : "550", + "rid" : "61_170974", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Lebanon" + }, + "code" : "555", + "rid" : "61_170884", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Oman" + }, + "code" : "558", + "rid" : "61_170918", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Saudi Arabia" + }, + "code" : "566", + "rid" : "61_170933", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Kosovo" + }, + "code" : "57", + "rid" : "61_170881", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Syrian Arab Republic" + }, + "code" : "573", + "rid" : "61_170952", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Yemen" + }, + "code" : "580", + "rid" : "61_170976", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Middle East, regional" + }, + "code" : "589", + "rid" : "61_170900", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Slovenia" + }, + "code" : "61", + "rid" : "61_170938", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Armenia" + }, + "code" : "610", + "rid" : "61_170813", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Azerbaijan" + }, + "code" : "611", + "rid" : "61_170815", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Georgia" + }, + "code" : "612", + "rid" : "61_170863", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Kazakhstan" + }, + "code" : "613", + "rid" : "61_170878", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Kyrgyzstan" + }, + "code" : "614", + "rid" : "61_170882", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tajikistan" + }, + "code" : "615", + "rid" : "61_170953", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Turkmenistan" + }, + "code" : "616", + "rid" : "61_170963", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Uzbekistan" + }, + "code" : "617", + "rid" : "61_170969", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Central Asia, regional" + }, + "code" : "619", + "rid" : "61_170834", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Croatia" + }, + "code" : "62", + "rid" : "61_170844", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Afghanistan" + }, + "code" : "625", + "rid" : "61_170804", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Serbia" + }, + "code" : "63", + "rid" : "61_170935", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bhutan" + }, + "code" : "630", + "rid" : "61_170822", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Myanmar" + }, + "code" : "635", + "rid" : "61_170907", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bosnia and Herzegovina" + }, + "code" : "64", + "rid" : "61_170825", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Sri Lanka" + }, + "code" : "640", + "rid" : "61_170947", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "India" + }, + "code" : "645", + "rid" : "61_170872", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Montenegro" + }, + "code" : "65", + "rid" : "61_170903", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Maldives" + }, + "code" : "655", + "rid" : "61_170891", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Former Yugoslav Republic of Macedonia" + }, + "code" : "66", + "rid" : "61_170860", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Nepal" + }, + "code" : "660", + "rid" : "61_170910", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Pakistan" + }, + "code" : "665", + "rid" : "61_170919", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bangladesh" + }, + "code" : "666", + "rid" : "61_170817", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South Asia, regional" + }, + "code" : "679", + "rid" : "61_170944", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "South & Central Asia, regional" + }, + "code" : "689", + "rid" : "61_170941", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Albania" + }, + "code" : "71", + "rid" : "61_170806", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Cambodia" + }, + "code" : "728", + "rid" : "61_170831", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "China (People's Republic of)" + }, + "code" : "730", + "rid" : "61_170837", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Indonesia" + }, + "code" : "738", + "rid" : "61_170873", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Democratic People's Republic of Korea" + }, + "code" : "740", + "rid" : "61_170846", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Lao People's Democratic Republic" + }, + "code" : "745", + "rid" : "61_170883", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Malaysia" + }, + "code" : "751", + "rid" : "61_170890", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Mongolia" + }, + "code" : "753", + "rid" : "61_170902", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Philippines" + }, + "code" : "755", + "rid" : "61_170925", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Thailand" + }, + "code" : "764", + "rid" : "61_170955", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Timor-Leste" + }, + "code" : "765", + "rid" : "61_170956", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Viet Nam" + }, + "code" : "769", + "rid" : "61_170972", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Far East Asia, regional" + }, + "code" : "789", + "rid" : "61_170858", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Asia, regional" + }, + "code" : "798", + "rid" : "61_170814", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Cook Islands" + }, + "code" : "831", + "rid" : "61_170841", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Fiji" + }, + "code" : "832", + "rid" : "61_170859", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Kiribati" + }, + "code" : "836", + "rid" : "61_170880", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Nauru" + }, + "code" : "845", + "rid" : "61_170909", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Ukraine" + }, + "code" : "85", + "rid" : "61_170967", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Vanuatu" + }, + "code" : "854", + "rid" : "61_170970", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Niue" + }, + "code" : "856", + "rid" : "61_170914", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Marshall Islands" + }, + "code" : "859", + "rid" : "61_170894", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Belarus" + }, + "code" : "86", + "rid" : "61_170819", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Micronesia" + }, + "code" : "860", + "rid" : "61_170899", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Palau" + }, + "code" : "861", + "rid" : "61_170920", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Papua New Guinea" + }, + "code" : "862", + "rid" : "61_170922", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Solomon Islands" + }, + "code" : "866", + "rid" : "61_170939", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tokelau" + }, + "code" : "868", + "rid" : "61_170958", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tonga" + }, + "code" : "870", + "rid" : "61_170959", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Tuvalu" + }, + "code" : "872", + "rid" : "61_170965", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Wallis and Futuna" + }, + "code" : "876", + "rid" : "61_170973", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "States Ex-Yugoslavia" + }, + "code" : "88", + "rid" : "61_170948", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Samoa" + }, + "code" : "880", + "rid" : "61_170931", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Oceania, regional" + }, + "code" : "889", + "rid" : "61_170917", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Europe, regional" + }, + "code" : "89", + "rid" : "61_170857", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Moldova" + }, + "code" : "93", + "rid" : "61_170901", + "leaf" : true + }, { + "level" : 1, + "title" : { + "EN" : "Bilateral, unspecified" + }, + "code" : "998", + "rid" : "61_170823", + "leaf" : true + } ], + "size" : 175 +} \ No newline at end of file diff --git a/main.js b/main.js index aa77f6b8..8b0dc729 100644 --- a/main.js +++ b/main.js @@ -1,9 +1,8 @@ /*global require*/ -var projectRoot = "http://localhost:8080"; -//var projectRoot = "http://www.fao.org/fenixrepo/cdn/projects/flude/1.0.0"; - -//var projectRoot = "//fenixrepo.fao.org/cdn/projects/flude/1.0.0"; +var pathProjectRoot = "./"; +var projectRoot = "./"; +var submoduleRoot = './submodules/'; require.config({ config: { @@ -13,16 +12,25 @@ require.config({ } } }, - paths : { - compilerPaths : projectRoot + '/submodules/fenix-ui-common/js/Compiler', - //compilerPaths : './submodules/fenix-ui-common/js/Compiler', - commonPaths : projectRoot + '/submodules/fenix-ui-common/js/paths', - menuPaths: projectRoot + '/submodules/fenix-ui-menu/js/paths', - dashboardPaths :projectRoot + '/submodules/fenix-ui-dashboard/src/js/paths', - chartPaths :projectRoot + '/submodules/fenix-ui-chart-creator/src/js/paths', - mapPaths :projectRoot + '/submodules/fenix-ui-map-creator/src/js/paths', - tablePaths : projectRoot + '/submodules/fenix-ui-table-creator/src/js/paths', - filterPaths :projectRoot + '/submodules/fenix-ui-filter/src/js/paths' + paths: { + compilerPaths: pathProjectRoot + 'submodules/fenix-ui-common/js/Compiler', + commonPaths: pathProjectRoot + 'submodules/fenix-ui-common/js/paths', + menuPaths: pathProjectRoot + 'submodules/fenix-ui-menu/src/js/paths', + dashboardPaths: pathProjectRoot + 'submodules/fenix-ui-dashboard/src/js/paths', + chartPaths: pathProjectRoot + 'submodules/fenix-ui-chart-creator/src/js/paths', + mapPaths: pathProjectRoot + 'submodules/fenix-ui-map-creator/src/js/paths', + tablePaths: pathProjectRoot + 'submodules/fenix-ui-table-creator/src/js/paths', + filterPaths: pathProjectRoot + 'submodules/fenix-ui-filter/src/js/paths', + analysisPaths: pathProjectRoot + 'submodules/fenix-ui-analysis/src/js/paths', + reportPaths: pathProjectRoot + 'submodules/fenix-ui-reports/src/js/paths', + visualizationPaths: pathProjectRoot + 'submodules/fenix-ui-visualization-box/src/js/paths', + dataEditorPaths: pathProjectRoot + 'submodules/fenix-ui-DataEditor/js/paths', + dsdEditorPaths: pathProjectRoot + 'submodules/fenix-ui-DSDEditor/js/paths', + metadataEditorPaths: pathProjectRoot + 'submodules/fenix-ui-metadata-editor/js/paths', + metadataViewerPaths: pathProjectRoot + 'submodules/fenix-ui-metadata-viewer/src/js/paths', + catalogPaths: pathProjectRoot + 'submodules/fenix-ui-catalog/src/js/paths', + dataManagementPaths: pathProjectRoot + 'submodules/fenix-ui-data-management/src/js/paths', + fenixMap: pathProjectRoot + 'submodules/fenix-ui-map/src/paths' } }); @@ -30,94 +38,157 @@ require([ "compilerPaths", "commonPaths", "menuPaths", - "dashboardPaths", + "filterPaths", + "analysisPaths", + "catalogPaths", + "visualizationPaths", + "metadataViewerPaths", "chartPaths", "mapPaths", - "tablePaths", - "filterPaths" -], function (Compiler, Common, Menu, Dashboard, Chart, Map, Table, Filter) { + "reportPaths", + "fenixMap", + "dashboardPaths", + "tablePaths" +], function (Compiler, Common, Menu, Filter, Analysis, Catalog, Box, MetadataViewer, ChartCreator, MapCreator, Report, Map, Dashboard, Table) { 'use strict'; - var submodules_path = projectRoot + '/submodules'; + var submodules_path = projectRoot + '../../submodules/'; var commonConfig = Common; - commonConfig.baseUrl = submodules_path + '/fenix-ui-common/js'; + commonConfig.baseUrl = submodules_path + 'fenix-ui-common/js'; + + var catalogConfig = Catalog; + catalogConfig.baseUrl = submodules_path + 'fenix-ui-catalog/src/js'; var menuConfig = Menu; - menuConfig.baseUrl = submodules_path + '/fenix-ui-menu/js'; + menuConfig.baseUrl = submodules_path + '/fenix-ui-menu/src/js'; - var dashboardConfig = Dashboard; - dashboardConfig.baseUrl = submodules_path + '/fenix-ui-dashboard/src/js'; + var analysisConfig = Analysis; + analysisConfig.baseUrl = submodules_path + 'fenix-ui-analysis/src/js'; + + var boxConfig = Box; + boxConfig.baseUrl = submodules_path + 'fenix-ui-visualization-box/src/js'; + + var filterConfig = Filter; + filterConfig.baseUrl = submodules_path + 'fenix-ui-filter/src/js'; + + var metadataViewerConfig = MetadataViewer; + metadataViewerConfig.baseUrl = submodules_path + 'fenix-ui-metadata-viewer/src/js'; - var chartConfig = Chart; - chartConfig.baseUrl = submodules_path + '/fenix-ui-chart-creator/src/js'; + var chartConfig = ChartCreator; + chartConfig.baseUrl = submodules_path + 'fenix-ui-chart-creator/src/js'; + + var mapCreatorConfig = MapCreator; + mapCreatorConfig.baseUrl = submodules_path + 'fenix-ui-map-creator/src/js'; + + var reportConfig = Report; + reportConfig.baseUrl = submodules_path + 'fenix-ui-reports/src/js'; var mapConfig = Map; - mapConfig.baseUrl = submodules_path + '/fenix-ui-map-creator/src/js'; + mapConfig.baseUrl = submodules_path + 'fenix-ui-map/src/js'; - var tableConfig = Table; - tableConfig.baseUrl = submodules_path + '/fenix-ui-table-creator/src/js'; + var dashboardConfig = Dashboard; + dashboardConfig.baseUrl = submodules_path + 'fenix-ui-dashboard/src/js'; - var filterConfig = Filter; - filterConfig.baseUrl = submodules_path + '/fenix-ui-filter/'; + var tableConfig = Table; + tableConfig.baseUrl = submodules_path + 'fenix-ui-table-creator/src/js'; - Compiler.resolve([commonConfig, menuConfig, dashboardConfig, chartConfig, tableConfig, mapConfig, filterConfig], + Compiler.resolve([commonConfig, catalogConfig, menuConfig, filterConfig, analysisConfig, boxConfig, metadataViewerConfig, chartConfig, mapCreatorConfig, reportConfig, mapConfig, dashboardConfig, tableConfig], { - placeholders: { - "FENIX_CDN": "http://www.fao.org/fenixrepo/cdn" - //"FENIX_CDN": "//fenixrepo.fao.org/cdn" - //"FENIX_CDN": "http://lprapp16.fao.org/external/fenixrepo/cdn" - }, + placeholders: {"FENIX_CDN": "http://fenixrepo.fao.org/cdn"}, config: { - //Set the config for the i18n i18n: { locale: 'en' }, + locale: 'en', + // The path where your JavaScripts are located - baseUrl: projectRoot + '/src/js', + baseUrl: pathProjectRoot + '/src/js', + // Specify the paths of vendor libraries // Specify the paths of vendor libraries paths: { - /* 'jquery-private': "{FENIX_CDN}/js/jquery/2.1.1/jquery.min",*/ bootstrap: "{FENIX_CDN}/js/bootstrap/3.3.4/js/bootstrap.min", underscore: "{FENIX_CDN}/js/underscore/1.7.0/underscore.min", + underscoreString: "{FENIX_CDN}/js/underscore.string/3.2.2/underscore.string.min", backbone: "{FENIX_CDN}/js/backbone/1.1.2/backbone.min", handlebars: "{FENIX_CDN}/js/handlebars/2.0.0/handlebars", - chaplin: "{FENIX_CDN}/js/chaplin/1.0.1/chaplin", + //chaplin: "{FENIX_CDN}/js/chaplin/1.1.1/chaplin.min", + chaplin: "../../chaplin", domReady: "{FENIX_CDN}/js/requirejs/plugins/domready/2.0.1/domReady", i18n: "{FENIX_CDN}/js/requirejs/plugins/i18n/2.0.4/i18n", text: '{FENIX_CDN}/js/requirejs/plugins/text/2.0.12/text', rsvp: '{FENIX_CDN}/js/rsvp/3.0.17/rsvp', - select2 : '{FENIX_CDN}/js/select2/3.5.4/select2.min', - "bootstrap-list-filter" :'{FENIX_CDN}/js/bootstrap-list-filter/0.2.1/bootstrap-list-filter.min', + "bootstrap-list-filter": '{FENIX_CDN}/js/bootstrap-list-filter/0.2.1/bootstrap-list-filter.min', + select2: '{FENIX_CDN}/js/select2/3.5.4/select2.min', + + //Threejs + copyShader: "{FENIX_CDN}/js/threejs/4.4/CopyShader", + effectComposer: "{FENIX_CDN}/js/threejs/4.4/EffectComposer", + maskPass: "{FENIX_CDN}/js/threejs/4.4/MaskPass", + orbitControls: "{FENIX_CDN}/js/threejs/4.4/OrbitControls", + projector: "{FENIX_CDN}/js/threejs/4.4/Projector", + renderPass: "{FENIX_CDN}/js/threejs/4.4/RenderPass", + shaderPass: "{FENIX_CDN}/js/threejs/4.4/ShaderPass", + canvasRender: "{FENIX_CDN}/js/threejs/4.4/CanvasRenderer", // TO BE REVIEWED + detector: "{FENIX_CDN}/js/threejs/4.4/Detector", // TO BE REVIEWED + tweenMax: "{FENIX_CDN}/js/tweenmax/1.18.0/tweenmax.min", // TO BE REVIEWED + threejs: "{FENIX_CDN}/js/threejs/4.4/three.min", + loglevel: "{FENIX_CDN}/js/loglevel/1.4.0/loglevel", + + // 'highcharts': '{FENIX_CDN}/js/highcharts/4.1.6/js/highcharts', amplify: '{FENIX_CDN}/js/amplify/1.1.2/amplify.min', - 'fx-c-c/config/creators/highcharts_template' : projectRoot + '/config/submodules/fx-chart/highcharts_template', + nls: "../../i18n", + config: "../../config", + json: "../../json", - 'fx-ds/config/config' : projectRoot + "/config/submodules/fx-dashboard/Config", + 'webix': 'http://fenixrepo.fao.org/cdn/js/webix/2.2.1/js/webix', - 'fenix-ui-map' : projectRoot + '/submodules/fenix-ui-map/dist/fenix-ui-map.src', - 'fenix-ui-map-config' : projectRoot + '/config/submodules/fx-map/Config' , + 'fx-common/config/auth_users': '../../config/auth_users.json', - 'fx-m-c/config/config' : projectRoot + '/config/submodules/fx-chart-creator/Config' , - 'fx-filter/config/config' : projectRoot + '/config/submodules/fx-filter/Config' , - - nls: projectRoot + "/i18n", - config: projectRoot + "/config", - json: projectRoot + "/json", - - 'fx-common/config/auth_users' : projectRoot + '/config/auth_users.json' }, // Underscore and Backbone are not AMD-capable per default, // so we need to use the AMD wrapping of RequireJS shim: { + canvasRender: { + deps: ["threejs"] + }, + detector: { + deps: ["threejs"] + }, + projector: { + deps: ["threejs"] + }, + copyShader: { + deps: ["threejs"] + }, + effectComposer: { + deps: ["threejs"] + }, + maskPass: { + deps: ["threejs"] + }, + orbitControls: { + deps: ["threejs"] + }, + renderPass: { + deps: ["threejs"] + }, + shaderPass: { + deps: ["threejs"] + }, + //highcharts: { + // "exports": "Highcharts", + // "deps": ["jquery"] + // }, bootstrap: { deps: ["jquery"] }, @@ -127,24 +198,19 @@ require([ underscore: { exports: '_' }, + underscoreString: ['underscore'], backbone: { deps: ['underscore', 'jquery'], exports: 'Backbone' }, handlebars: { exports: 'Handlebars' + }, + threejs: { + deps: ['underscore', 'jquery'], } - }/*, - map: { - // '*' means all modules will get 'jquery-private' - // for their 'jquery' dependency. - '*': { 'jquery': 'jquery-private' }, - - // 'jquery-private' wants the real jQuery module - // though. If this line was not here, there would - // be an unresolvable cyclic dependency. - 'jquery-private': { 'jquery': 'jquery' } - }*/ + }, + waitSeconds: 15 // For easier development, disable browser caching // Of course, this should be removed in a production environment //, urlArgs: 'bust=' + (new Date()).getTime() @@ -153,11 +219,15 @@ require([ // Bootstrap the application require([ + 'loglevel', 'application', 'routes', 'config/Config', 'domReady!' - ], function (Application, routes, C) { + ], function (log, Application, routes, C) { + + //trace, debug, info, warn, error, silent + log.setLevel('silent'); var app = new Application({ routes: routes, @@ -166,5 +236,6 @@ require([ pushState: C.CHAPLINJS_PUSH_STATE, scrollTo: C.CHAPLINJS_SCROLL_TO }); + }); -}); +}); \ No newline at end of file diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index e0deda43..00000000 --- a/scripts/README.md +++ /dev/null @@ -1,3 +0,0 @@ -#additional scripts - -contains bash or other scripts useful for db deploy or additional customized operations \ No newline at end of file diff --git a/scripts/ls-jqwidgets.sh b/scripts/ls-jqwidgets.sh deleted file mode 100644 index 34ffad18..00000000 --- a/scripts/ls-jqwidgets.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -grep -rh --color "\.jqx" * | sed -e 's/\(.*\)jqx\(.*\)/jqx\2/' | cut -d'(' -f1 | sort -u - diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 00000000..5509140f --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +*.DS_Store diff --git a/src/css/.gitignore b/src/css/.gitignore new file mode 100644 index 00000000..5509140f --- /dev/null +++ b/src/css/.gitignore @@ -0,0 +1 @@ +*.DS_Store diff --git a/src/css/components/_fao-topmenu.scss b/src/css/components/_fao-topmenu.scss index bd0dd18a..c6ed0180 100644 --- a/src/css/components/_fao-topmenu.scss +++ b/src/css/components/_fao-topmenu.scss @@ -1,11 +1,191 @@ /* FAO Like Top Menu */ +/* Bootstrap reset */ -.internal-fao-header{ - background-image: url(../../src/css/img/flude-header-bg.jpg); - height: 75px; +.navbar-brand { + display: none; } +/* Item on the right fix */ +.fx-menu { + + .navbar-nav.navbar-right { + + margin: 0; + + li { + + + + a{ + border-right: 0; + } + } + } +} + +/* Header */ + +.container.fao-header { + + height: 90px; + position: relative; + + background-color: $custom-color6; + + .fao-logo { + width: 300px; + + height: auto; + position: relative; + top: 5px; + } + + ul { + li { + + border-right: 1px solid white; + + &:last-child { + border-right: none; + } + + a { + color: white; + &:hover { + text-decoration: none; + + } + + } + + } + } + +} + +/* Menu */ + +.topmenu { + + padding-top: 30px; + + .navbar-collapse { + @include fx-gradient(rgba(255, 255, 255, 1), rgba(239, 239, 239, 1)); + border: 1px solid $fenix-hr; + } +} + +.topmenu-buttons-holder { + padding-left: 0; + padding-right: 0; +} + + + +.navbar-default{ + background-color: transparent; + min-height: $host-menu-height; //It has to be defined - Very important Bootstrap override + margin-bottom: 0; + + .navbar-nav > li { + + + > a { + height: $host-menu-height; + overflow: hidden; + padding-bottom: 10px; + padding-top: 10px; + border-right: 1px solid $fenix-hr; + + &:hover, + &:focus { + color: $custom-color8; + background-color: white; + + } + + + + } + + &.active { + + a , + a:link, + a:visited, + a:hover, + a:focus, + a:active { + border-bottom-color: transparent; + color: $custom-color8 ; + } + + } + + + /* Home icon as fao website */ + &.home-menu-item { + + width: $host-menu-height; + + + &.active { + + a { + background-image: url(../../src/images/home-h.png); + } + + } + + a { + + background-image: url(../../src/images/home.png); + background-size: 20px 16px; + background-position: 50% 50%; + background-repeat: no-repeat; + + + &:hover, + &:focus{ + background-image: url(../../src/images/home-h.png); + } + + } + + } + + + } + + + +} + +/* Open/Close button in mobile mode */ +.navbar-default .navbar-toggle { + + &:link, + &:visited, + &:hover, + &:focus, + &:active { + background-color: transparent; + } + + border-color: transparent; +} + + +.navbar-collapse { + border-top: 0; + .navbar-nav { + margin-top: 0; + } + +} + + /*//////////////////////////////////////////// Navbar Media queries */ @@ -18,6 +198,96 @@ @media (max-width: 767px) { + .container.fao-header { + + + height: 140px; + + + .fao-header-menu{ + + margin-top: 15px; + text-align: center; + line-height: 20px; + + + ul { + + li{ + + + a{ + /* Expand the item space in the mobile version */ + margin: 5px; + } + + } + + } + + } + + } + + .topmenu { + + padding-top: 30px; + + .navbar-collapse { + background: none; + background-color: white; + border-color:transparent; + } + } + + + + .navbar-default{ + + + .navbar-nav > li { + + + > a { + + border-right-color: transparent; + + + + } + + &.active { + + a , + a:link, + a:visited, + a:hover, + a:focus, + a:active { + border-bottom-color: transparent; + color: $custom-color8 !important; + } + + } + + + /* Home icon as fao website */ + &.home-menu-item { + + width: 100%; + + + a { + background-position: 15px 50%; + } + } + + + } + + + + } diff --git a/src/css/components/_icons.scss b/src/css/components/_icons.scss new file mode 100644 index 00000000..208b49d6 --- /dev/null +++ b/src/css/components/_icons.scss @@ -0,0 +1,36 @@ +/* Indicator Icon Definition */ +.indicators-icons{ + font-size: 20px; + position: absolute; +} + +.icojam_NY_GNP_ATLS_CD, .icojam_NY_GNP_PCAP_CD { + @extend .icojam_income_1; +} + +.icojam_NODA, .icojam_ODA_GNI, .icojam_NET_ODA_REC, .icojam_NET_ODA_REC_PC, .icojam_DT_ODA_ODAT_GN_ZS{ + @extend .icojam_father_son_2; +} + +.icojam_INCOME_LEVEL{ + @extend .icojam_coins; +} + + +.icojam_SI_POV_GINI { + @extend .icojam_payment_1; +} + +.icojam_POP_TOT, .icojam_RUR_POP_PERC{ + @extend .icojam_friends; +} + +.icojam_AGRI_LAND_PERC { + @extend .icojam_wheat; +} + +/* DASHBOARD */ +.display-box-header { + font-size: 14px; +} + diff --git a/src/css/components/_jstree.scss b/src/css/components/_jstree.scss index 3038094f..fefad749 100644 --- a/src/css/components/_jstree.scss +++ b/src/css/components/_jstree.scss @@ -1,22 +1,17 @@ /* Jstree Mood */ -li[role="treeitem"]{ - &:nth-child(odd){ - background-color: $superlight-gray !important; - } -} - -ul[role="group"]{ - background-color: white; -} -.jstree-container-ul{ - width: calc(100% - 25px); -} +//.jstree-container-ul{ +// width: calc(100% - 25px); +//} +// +//.jstree-disabled{ +// opacity: 0.5; +//} .jstree-default>.jstree-no-dots .jstree-leaf>{ //display: none; @@ -24,76 +19,58 @@ ul[role="group"]{ } -.jstree-icon.External{ - display: inline-block; - background-image: none; - - &:before{ - content: 'E'; - font-style: normal; - background-color: $fenix-text; - display: inline-block; - color: white; - line-height: 15px; - width: 15px; - height: 15px; - - - } -} - -.jstree-disabled{ - opacity: 0.5; -} - -/* Override Fenix Tree */ -.jstree-default-responsive .jstree-anchor { - white-space: normal; - //line-height: normal; - height: auto; -} - - -[role='treeitem']{ - position: relative; - - &:nth-child(even){ - // background-color: black; - } - - .jstree-wholerow{ - height: 100%; - } - - - .jstree-wholerow-clicked{ - height: 100%; - } - &[aria-expanded='true']{ - //background-color: white; - [role='group']{ - .jstree-ocl{ - display: none; - } - - .jstree-anchor{ - padding-left: 35px; - .jstree-checkbox{ - position: absolute; - left: 10px; - } - - } - - } - - } - -} +///* Override Fenix Tree */ +//.jstree-default-responsive .jstree-anchor { +// white-space: normal; +// //line-height: normal; +// height: auto; +//} +// +// +//[role='treeitem']{ +// position: relative; +// +// &:nth-child(even){ +// // background-color: black; +// } +// +// .jstree-wholerow{ +// height: 100%; +// } +// +// +// +// .jstree-wholerow-clicked{ +// height: 100%; +// } +// +// &[aria-expanded='true']{ +// //background-color: white; +// +// [role='group']{ +// +// .jstree-ocl{ +// display: none; +// } +// +// .jstree-anchor{ +// padding-left: 35px; +// .jstree-checkbox{ +// position: absolute; +// left: 10px; +// } +// +// } +// +// } +// +// } +// +//} .jstree-default .jstree-wholerow{ diff --git a/src/css/components/_preload.scss b/src/css/components/_preload.scss new file mode 100644 index 00000000..a03964ce --- /dev/null +++ b/src/css/components/_preload.scss @@ -0,0 +1,111 @@ +/* Preload CSS */ + + + + + +.loading { + display: inline-block; + border: 0 solid rgba(215, 215, 215, .25); + @include fx-border-radius(50%); +} + +.loading:before { + content: ''; + display: block; + border: 0 solid transparent; + border-top-color: rgba(190, 190, 190, 1); + @include fx-border-radius(50%); + + -webkit-animation: loading 1s ease infinite; + -moz-animation: loading 1s ease infinite; + -ms-animation: loading 1s ease infinite; + -o-animation: loading 1s ease infinite; + animation: loading 1s ease infinite; +} + +/***************************************/ +/* LOADING */ +/***************************************/ + +.loading-16 { + width: 12px; + height: 12px; + border-width: 2px; +} + +.loading-16:before { + width: 12px; + height: 12px; + border-width: 2px; + margin: -2px 0 0 -2px; +} + +.loading-24 { + width: 18px; + height: 18px; + border-width: 3px; +} + +.loading-24:before { + width: 18px; + height: 18px; + border-width: 3px; + margin: -3px 0 0 -3px; +} + +.loading-32 { + width: 26px; + height: 26px; + border-width: 4px; +} + +.loading-32:before { + width: 26px; + height: 26px; + border-width: 4px; + margin: -4px 0 0 -4px; +} + +.loading-48 { + width: 38px; + height: 38px; + border-width: 5px; +} + +.loading-48:before { + width: 38px; + height: 38px; + border-width: 5px; + margin: -5px 0 0 -5px; +} + +@-webkit-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-moz-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-ms-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-o-keyframes loading { + 100% { + -webkit-transform: rotate(360deg); + } +} + +@keyframes loading { + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/src/css/fx-boot/.gitignore b/src/css/fx-boot/.gitignore new file mode 100644 index 00000000..5509140f --- /dev/null +++ b/src/css/fx-boot/.gitignore @@ -0,0 +1 @@ +*.DS_Store diff --git a/src/css/pages/_analyze-data.scss b/src/css/pages/_analyze-data.scss new file mode 100644 index 00000000..9d34e72b --- /dev/null +++ b/src/css/pages/_analyze-data.scss @@ -0,0 +1,393 @@ +/* Analyze Data */ + + + + +.compare-title{ + display: inline-block; + +} + +.analyze-compare-selectors { + + .tab-content { + + padding-top: 0; + + } + + .fx-tabs .nav-tabs > li { + + margin: 0; + + margin-bottom: 5px; + } + + .first-row { + border-top-color: transparent; + } + + .col-sm-height { + border-bottom: 1px solid $fenix-light-hr; + border-right-color: transparent; + + &:nth-child(3) { + border-right-color: transparent; + + } + + } + + [data-role="clear"] { + margin-bottom: 15px; + + } + + .col-year-container { + padding-bottom: 15px; + } + +} + +.fx-tabs { + .nav-tabs { + border-color: transparent; + } +} + +.selector-content { + + //margin-top: 34px; + margin-bottom: 10px; + + [data-role="filter"] { + + margin-bottom: 7px; + + } + +} + +[data-selector="country-country"], [data-selector="country-region"], [data-selector="regional-aggregation"] { + + .selector-content { + margin-top: 0; + + } + +} + +[data-selector="delivery"], [data-selector="sector"], [data-selector="sub-sector"] { + + .selector-content { + margin-top: 10px; + } + +} + +.year-select { + font-size: 24px; + position: relative; + top: 47px; + left: 10px; + color: $fenix-secondary-text; +} + +.compare-collapse-btn { + color: $fenix-text; + cursor: pointer; + margin-left: 15px; + + + span { + font-size: 18px; + margin-left: 5px; + position: relative; + top: 3px; + } + + &:hover { + color: $fenix-text; + + text-decoration: none; + + } + +} + +.collapse-bar{ + margin-top: 20px; + + .toggle-wrapper{ + margin-top: 4px; + } + + + +} + + + +.compare-selector{ + + position: relative; + + &:before{ + content: ''; + display: block; + position: absolute; + top: -1px; + left: -1px; + width: calc(100% + 2px); + height: calc(100% + 2px); + + border-style: solid; + border-width: 0; + border-color: $fx-selector-focused; + pointer-events: none; + //@include animate(); + } + + &.selector-focused{ + + + &:before{ + border-width: 2px; + //@include animate(); + } + + + } + + +} + +.selector-mandatory{ + + &:after{ + content:'MANDATORY'; + position: relative; + bottom: 33px; + font-size: 10px; + color: red; + } + + +} + +//.selector-focused { +// position: relative; +// @include animate(); +// +// &:before{ +// content: ''; +// display: block; +// position: absolute; +// top: 0; +// left: 0; +// width: 100%; +// height: 100%; +// border: 2px solid $fx-cool-blue; +// @include animate(); +// } +// +// +// //background-color: $fx-selector-focused; +//} + +/* DANI */ + +.fx-result { + position: relative; + + //by default each tab content is hidden + [data-content] { + display: none; + + .loading{ + position: absolute; + left: 50%; + top: 45%; + @include fx-transfor-me(translate(-50%,-50%)); + + } + + .status-label{ + position: absolute; + left: 50%; + top: 50%; + text-align: center; + @include fx-transfor-me(translate(-50%,-50%)); + color: rgba(190, 190, 190, 1); + font-size: 16px; + } + + } + + //show only the status only correspondent tab content + $statuses: "ready" "error" "loading" "empty"; + + @each $status in $statuses { + + &[data-status="#{$status}"] { + + [data-content="#{$status}"] { + display: block; + + } + + } + + } + +} + +[data-content="ready"]{ + + .tab-content{ + height: 380px !important; + } + + + + + &:before{ + content: ""; + height: 1px; + background-color: $fenix-hr; + width: 100%; + position: absolute; + top: 42px; + left: 0px; + } + + .tab-content{ + margin-top: 8px; + + [data-container="table"]{ + .gt-grid{ + height: 290px !important; + + + .gt-viewport{ + height: 250px !important; + + .gt-body-div{ + height: 225px !important; + } + + } + + + } + + + } + + .selection-info{ + margin-top: 10px; + + } + + } + + + + +} + +.remove-widget-btn{ + +} + +.small-icons-analysis{ + + + .fx-widget-icons.icojam_download_1{ + position: absolute; + top: -26px; + left: auto; + right: 15px; + } +} + +.fx-analysis-item{ + padding: 22px 0 0 0; + margin-bottom: 25px; +} + +.fx-dataset-details-container{ + right: 0; + width: 100%; + + .fx-widget-icons{ + position: absolute; + font-size: 18px; + right: 6px; + top: 1px; + cursor: pointer; + } + +} + +/* FINE DANI*/ + + +[data-container="chart"]{ + + [data-role="content"]{ + + height: 100%; + + } + +} + +.analyze-compare-results{ + .fx-widget{ + &:before{ + display: none; + + } + } +} + + + + + + + +/* Extra small devices (phones, less than 768px) */ +/* No media query since this is the default in Bootstrap */ + +/* Small devices (tablets, 768px and up) */ +@media (min-width: $screen-sm-min) { + + .analyze-compare-selectors { + + .first-row { + border-top: 1px solid $fenix-light-hr; + } + + .col-sm-height { + border-right: 1px solid $fenix-light-hr; + + &:nth-child(3) { + border-right-color: transparent; + + } + + } + + } + +} + +/* Medium devices (desktops, 992px and up) */ +@media (min-width: $screen-md-min) { +} + +/* Large devices (large desktops, 1200px and up) */ +@media (min-width: $screen-lg-min) { +} diff --git a/src/css/pages/_browse-data.scss b/src/css/pages/_browse-data.scss new file mode 100644 index 00000000..c3e00519 --- /dev/null +++ b/src/css/pages/_browse-data.scss @@ -0,0 +1,97 @@ +/* Browse Data */ + +#fx-filter-grid_filter-browse.container-fluid{ + padding-left: 0; + padding-right: 0; + + + .fx-filter-grid-module{ + padding-left: 0; + padding-right: 0; + + } + +} + +.fx-filter-range-from-holder{ + width: 40%; + float: left; +} + + +.filter-container{ + .fx-arrow-time{ + position: relative; + display: block; + width: 10%; + margin: 0 5%; + top: 25px; + //left: 35%; + height: 5px; + float: left; + } + +} + + + +.fx-filter-range-to-holder{ + width: 40%; + float: left; +} + + +.fx-title-bar { + background-color: white; + padding-top: 10px; + min-height: 60px; +} + +#fx-title { + padding-left: 15px; +} + + +.fx-filter-icon { + padding-left: 5px; +} + +.current-sel-element{ + //margin-right: 0; + + &:after{ + content: ' /'; + color: #999; + position: relative; + right: -3px; + } + +} + + +.indicator-name{ + .name{ + padding-left: 30px; + } + +} + +.indicator-value{ + font-weight: bold; + font-size: 18px; + color: $light-text; + padding-left: 0; +} + + +.adam-entry-point-content{ + + .anchor{ + position: relative; + left: 2px; + } + +} + + + diff --git a/src/css/pages/_home.scss b/src/css/pages/_home.scss index 1ff0b6c5..ed3e53ff 100644 --- a/src/css/pages/_home.scss +++ b/src/css/pages/_home.scss @@ -1,5 +1,97 @@ /* Home */ +[data-page="home"]{ + .breadcrumb{ + opacity: 0; + } +} + + +.welcome-container{ + position: relative; + + img{ + width: 100%; + height: auto; + + } + + .welcome-content{ + position: absolute; + bottom: 0; + background-color:rgba(0,0,0,0.5); + padding: 25px 25px 50px 25px; + + h1{ + font-size:32px; + color: white; + + } + p{ + font-size: 16px; + color: white; + } + + } + +} + + + #side-faostat{ display: none; +} + +//.custom-list-content{ +// ul { +// list-style: none; +// padding:0; +// margin:0; +// } +// +// li { +// padding-left: 1em; +// text-indent: -.7em; +// line-height: 20px; +// } +// +// li:before { +// content: "•"; +// color: $fx-cool-blue; /* or whatever color you prefer */ +// position: relative; +// left: -7px; +// +// } +//} + +.factsheets{ + margin-bottom: 15px; + + h1{ + margin-top: 0; + + } + + .ad-home-select{ + width: 100%; + } + +} + + +.home-topic-container{ + text-align: center; + border-right: 1px solid $fenix-light-hr; + padding: 0 30px; + margin: 25px 0; + + h2{ + margin-top: 0; + } + + &:last-child{ + border: none; + + } + } \ No newline at end of file diff --git a/src/css/theme/_default.scss b/src/css/theme/_default.scss index f6ced909..1b2788c9 100644 --- a/src/css/theme/_default.scss +++ b/src/css/theme/_default.scss @@ -1,317 +1,273 @@ -/* Base style File */ +/* Default Styles */ -body{ - background: url(../../src/css/img/bg-tool.gif) repeat-x #dbe7ee; -} - -a{ - color: $custom-color8; // Fao Orange; -} -.fx-sandbox{ +.container{ + background-color: white; -h1.flude-analysis-title{ - color:white; - display: inline-block; } -h1.flude-analysis-title-results{ +.website-title{ + + font-size: 24px; + color: black; } -h2.filter-opener-flude, h2.filter-opener-faostat{ - margin-top: 10px; +.fit-height{ + height: 100%; } +/* Compare Result */ +.fixed-height{ + height: 350px; +} -.flude-topic-selector{ - width: calc(100% - 250px) !important; +h1{ + color: #333; } +h2{ + color: $fx-cool-blue; - -.home-logo{ - background-image:url(../../src/css/img/flude-logo.jpg) ; - height: 75px; - background-repeat: no-repeat; - position: relative; - left: -15px; - max-width: 80%; } +.obj-box-header{ + z-index: 1; -.compare-wrapper{ - position: absolute; - right: 15px; - top: 3px; - width: 420px; - height: 46px; - @include fx-border-radius(5px); - background-color: white; - border: 1px solid #3883c0; -} -.compare-title{ - color: $buttons; - margin: 0; - display: inline-block; - position: relative; - left: 15px; - top: 13px; -} + .btn-default{ + position: absolute; + right: 25px; + top: 6px; + } + h1{ + margin: 0; + } -.toggle-wrapper{ - position: absolute; - right: 10px; - top: 7px; + p{ + margin: 0; + } + padding: 5px 15px; + //height: 34px; + border: 1px solid #C2C2C2; + background: #fafafa; + box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); + -moz-box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); + -webkit-box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); } -input#toggle-side-faostat + label { - display: block; + +.obj-box{ + margin-top: 0; position: relative; - box-shadow: inset 0 0 0px 1px #d5d5d5; - text-indent: -5000px; - height: 30px; - width: 50px; - border-radius: 15px; + //min-height: 155px; + //z-index: 1; // Removed to avoid overlapping between boxes (dropdown) } -input#toggle-side-faostat + label:before { - content: ""; - position: absolute; - display: block; - height: 30px; - width: 30px; - top: 0; - left: 0; - border-radius: 15px; - background: rgba(19, 191, 17, 0); - -moz-transition: .25s ease-in-out; - -webkit-transition: .25s ease-in-out; - transition: .25s ease-in-out; -} +.adam-entry-point{ + position: relative; -input#toggle-side-faostat + label:after { - content: ""; - position: absolute; - display: block; - height: 30px; - width: 30px; - top: 0; - left: 0px; - border-radius: 15px; - background: white; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .2), 0 2px 4px rgba(0, 0, 0, .2); - -moz-transition: .25s ease-in-out; - -webkit-transition: .25s ease-in-out; - transition: .25s ease-in-out; -} -input#toggle-side-faostat:checked + label:before { - width: 50px; - background: rgba(19, 191, 17, 1); - border-width: 0; -} + &:nth-child(odd){ + + .adam-entry-point-content{ + &:before{ + content:''; + display: block; + position: absolute; + bottom: 0; + width: 80%; + left: 10%; + height: 1px; + background-color: #dfdfdf; + } + + + &:after{ + content:''; + display: block; + position: absolute; + right: 0; + width: 1px; + top: 10%; + height: 80%; + background-color: #dfdfdf; + } -input#toggle-side-faostat:checked + label:after { - left: 20px; - box-shadow: inset 0 0 0 1px rgba(19, 191, 17, 1), 0 2px 4px rgba(0, 0, 0, .2); -} + } + } + &:nth-child(even){ -.home-back-btn{ - height: 75px; - width: 86px; - background-image:url(../../src/css/img/home-btn.jpg) ; - position: absolute; - top: 0; - right: 0; - cursor: pointer; - .return-btn{ - display: block; - height: 100%; - width: 100%; - } + .adam-entry-point-content{ + &:before{ + content:''; + display: block; + position: absolute; + bottom: 0; + width: 80%; + left: 10%; + height: 1px; + background-color: #dfdfdf; + } -} + } -//.proto-text{ -// position: absolute; -// top: 0; -// right: 100px; -// font-size: 18px; -// color: white; -// height: 100%; -// line-height: 75px; -//} + } -.filter-container{ - min-height: 70px; -} + &:last-child{ -.filter-container-fs{ - min-height: 65px; -} -.obj-box-header{ + .adam-entry-point-content{ + margin-bottom:100px ; - .btn-default{ - position: absolute; - right: 25px; -top: 6px; - } + } - h1{ - color: #333; - margin: 0; } - padding: 5px 15px; - height: 34px; - border: 1px solid #C2C2C2; - background: #fafafa; - box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); - -moz-box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); - -webkit-box-shadow: inset 0 -2px 0 rgba(0,0,0,.05); -} + .adam-entry-point-content{ + padding: 35px; + } -.obj-box{ - margin-top: 0; - position: relative; - min-height: 155px; - #flude-download{ - width: 230px; - position: absolute; - right: 15px; - top: 35px; + h2{ + font-size: 16px; + color: $fenix-text; } -} + p.title{ + color: $custom-color8; + font-size: 28px; + } -.invi{display:none} + p.text-justify{ + color: $fenix-secondary-text; + } -.truncate { - min-width: 250px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } -.upper{ - text-transform: uppercase; +.tree-holder { + height: 150px; + overflow-y: auto; + //overflow-x: hidden; + } -.btn{ - @include fx-border-radius(2); - min-width: 100px; - padding: 3px 12px; - font-size: 12px; - //text-transform: uppercase; - background-color: $buttons; - border: 1px solid #3883c0; - color: white; +.fx-arrow-time{ + position: absolute; + top: 55px; + left: 0; + width: 100%; + display: block; + &:before{ + content: ''; + position: absolute; + top: 3px; + width: 100%; + height: 1px; + display: block; + background-color: $fenix-secondary-text; + } - &:hover, - &:focus, - &:active, - &:visited{ - background-color: #3e90d4; - //border-color: transparent; - border: 1px solid #2f7dbe; - color: white; + &:after{ + content: ''; + width: 0; + height: 0; + display: block; + right: -1px; + position: absolute; + border-style: solid; + border-width: 4px 0 4px 8px; + border-color: transparent transparent transparent $fenix-secondary-text; } } -//.container, .container-fluid { -// background-color: white; -//} - -/* TEMPORARY */ - -.btn.btn-default.json-editor-btn-collapse { - color: $fx-cool-blue !important; - border-color: transparent !important; - i { - color: $fx-cool-blue !important; - &:before{ - content:'EXPAND'; - font-size:10px; - color: $fenix-text; - } - } +#browse-top-link-fixed{ + position: fixed; + left: -150px; + bottom: 100px; + opacity: 0; + @include animate(); +} + +#browse-top-link-fixed.affix{ + left: 15px; + opacity: 1; + z-index: 2; } -.btn-table-go, .btn-scores-go{ - background-color: $buttons; - color: white; +a{ + color: $fx-cool-blue; + &:focus{ + outline: none; + } - &:hover, &:active, &:visited, &:focus{ - background-color: $buttons; - border-color: transparent; - color: white; + &:active{ + outline: none; } } -.btn-reset{ - background-color: white; - color: $fenix-text; - border-color: transparent; - - &:hover, &:active, &:visited, &:focus{ - background-color: white; - border-color: transparent; - color: $fenix-text; - } +.dropdown-menu > li > a{ + font-weight: 300; + color:$fenix-text; } +h1{ + font: $fx-text-h1; + color: $fx-cool-blue; +} -.whole-btn{ - background-color: #e19a0e; - border-color: #a4812f; +h2{ + font: $fx-text-h2; + color: desaturate( $fx-cool-blue, 30% ); +} - &:hover, - &:focus, - &:active{ +h3{ + font: $fx-text-h3; + color: desaturate( $fx-cool-blue, 50% ); +} - background-color: #a4812f; - border-color: #a4812f; - } +h4{ + font: $fx-text-h4; + color: desaturate( $fx-cool-blue, 70% ); +} +h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small{ + font-family: Roboto; + font-weight: 700; + color: $fx-cool-blue; + text-transform: uppercase; + font-size: 12px; } -.fm-legend-layertitle{ - font-size: 0 !important; - &:before{ - content: 'Legend'; - font: $standard-text; - } +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.fm-legendtitle { -} -} \ No newline at end of file + diff --git a/src/css/theme/_variables.scss b/src/css/theme/_variables.scss index ae97c50b..f8ac0f3b 100644 --- a/src/css/theme/_variables.scss +++ b/src/css/theme/_variables.scss @@ -11,22 +11,22 @@ $host-menu-height : 40px; // Typography $small-text : 12px; $standard-text-size: 12px; -$standard-text : normal normal 300 $standard-text-size/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$standard-text-bold : normal normal 500 14px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$standard-text-big : normal normal 300 16px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; +$standard-text : normal normal 300 $standard-text-size/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$standard-text-bold : normal normal 500 14px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$standard-text-big : normal normal 300 16px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; -$fx-text-h1: normal normal 300 18px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$fx-text-h2: normal normal 300 14px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$fx-text-h3: normal normal 500 12px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$fx-text-h4: normal normal 300 11px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; +$fx-text-h1: normal normal 300 18px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$fx-text-h2: normal normal 300 16px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$fx-text-h3: normal normal 500 12px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$fx-text-h4: normal normal 300 11px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; -$fx-text-smalltitle-normal: normal normal 400 10px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; -$fx-text-smalltitle-bold: normal normal 700 10px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; +$fx-text-smalltitle-normal: normal normal 400 10px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; +$fx-text-smalltitle-bold: normal normal 700 10px/normal "FrutigerLTW02-45Light",Arial,Helvetica,Verdana,sans-serif; ; // Fenix Colors $fenix-standard-blue: rgba(53, 166, 220, 1); -$fx-cool-blue: #0f6eae; +$fx-cool-blue: #2686ba; $fx-secondary-color: desaturate( $fx-cool-blue, 50% ); @@ -35,9 +35,9 @@ $fx-main-color-light: lighten($fx-cool-blue, 42%); // Ideal for selection $fx-main-color-lighter: lighten($fx-cool-blue, 42%); // Ideal for hovers $fx-main-color-darker: darken($fx-cool-blue, 20%); // Ideal for hovers +$fx-selector-focused: lighten($fx-cool-blue, 30%); - -$fenix-text: #666666; +$fenix-text: #333333; $fenix-secondary-text: #999999; $fenix-light-gray: #dddddd; @@ -50,10 +50,10 @@ $light-brown: #f3efe0; $box-bg: #ededed; $superlight-gray: #f2f2f2; -$buttons: #4387bf; +$buttons: #2ab896; $fenix-hr: #D2D0D0; -$fenix-light-hr: #cccccc; +$fenix-light-hr: #eeeeee; $fenix-thin-border: 1px solid $fenix-hr; @@ -66,6 +66,9 @@ $black-alpha : rgba(0, 0, 0, 0.8); // background: color position/size repeat origin clip attachment image|initial|inherit; $fx-site-bg: $fenix-light-bg; + +$light-text: #aab5b7; + // Border Radius $fx-border-radius: 0; $custom-color1: lighten($fx-cool-blue, 42%); //Arancio diff --git a/src/js/controllers/analyse-controller.js b/src/js/controllers/analyse-controller.js new file mode 100644 index 00000000..78676059 --- /dev/null +++ b/src/js/controllers/analyse-controller.js @@ -0,0 +1,73 @@ +/*global define*/ +define([ + 'chaplin', + 'controllers/base/controller', + 'views/analyse-view', + 'views/analyse/priority_analysis/priority-analysis-view', + 'views/analyse/compare/compare-view', + 'views/analyse/partner_matrix/partner-matrix-view', + 'views/analyse/comp_advantage/comp-advantage-view', + // 'views/analyze/projects/projects-view' +], function (Chaplin, Controller, AnalyzeView, PriorityAnalysisView, CompareView, ResourcePartnerMatrixView, ComparativeAdvantageView /**, , ProjectsView**/) { + + 'use strict'; + + var page_type; + + var AnalyzeController = Controller.extend({ + + show: function (params) { + this.view = new AnalyzeView({ + region: 'main', + page: Backbone.history.fragment + }); + }, + + priority_analysis: function (params, route) { + this.view = new PriorityAnalysisView({ + region: 'main', + filter: route.action, + page: Backbone.history.fragment + }); + }, + + compare: function (params, route) { + this.view = new CompareView({ + region: 'main', + filter: route.action, + page: Backbone.history.fragment + }); + }, + + partner_matrix: function (params, route) { + this.view = new ResourcePartnerMatrixView({ + region: 'main', + filter: route.action, + page: Backbone.history.fragment + }); + }, + + comp_advantage: function (params, route) { + this.view = new ComparativeAdvantageView({ + region: 'main', + filter: route.action, + page: Backbone.history.fragment + }); + } + + + + + + // projects: function (params, route) { + // this.view = new ProjectsView({ + // region: 'main', + // filter: route.action, + // page: Backbone.history.fragment + // }); + // } + + }); + + return AnalyzeController; +}); diff --git a/src/js/controllers/browse-controller.js b/src/js/controllers/browse-controller.js index 357a56db..5cfc02ba 100644 --- a/src/js/controllers/browse-controller.js +++ b/src/js/controllers/browse-controller.js @@ -3,12 +3,10 @@ define([ 'chaplin', 'controllers/base/controller', 'views/browse-view', - 'views/breadcrumb-list-view', - 'models/breadcrumb', - 'models/breadcrumb-list', + 'views/browse/browse-by-view', 'rsvp', 'globals/AuthManager' -], function (Chaplin, Controller, View, BreadcrumbListView, BreadcrumbModel, BreadcrumbList, RSVP, AuthManager) { +], function (Chaplin, Controller, View, BrowseByView, RSVP, AuthManager) { 'use strict'; var BrowseController = Controller.extend({ @@ -35,35 +33,26 @@ define([ show: function (params) { -/* if (this.authorized === false) { - Chaplin.utils.redirectTo({controller: 'login', action: 'show'}); - return; - }*/ - - - // USE fx-menu: for breadcrumbs - //FM.prototype.addItemsToBreadcrumb = function (path); - - - - //var breadcrumbModel = new BreadcrumbModel({name : 'Browse Data ',link : '#browse'}); - //var breadcrumbModel2 = new BreadcrumbModel({name : 'By '+params.filter,link : '#browse/'+params.filter}); - - //var breadcrumbList = new BreadcrumbList([breadcrumbModel, breadcrumbModel2]); - - // this.breadcrumbListView = new BreadcrumbListView( - // { - // region: 'main', - // collection: breadcrumbList - // } - // ); + /* if (this.authorized === false) { + Chaplin.utils.redirectTo({controller: 'login', action: 'show'}); + return; + }*/ this.view = new View({ + region: 'main', + page: Backbone.history.fragment + }); + }, + + browseby: function (params) { + this.view = new BrowseByView({ region: 'main', filter: params.filter, - breadcrumb: 'Browse Data / '+params.filter + recipientcode: params.recipientcode, + page: Backbone.history.fragment }); } + }); return BrowseController; diff --git a/src/js/controllers/home-controller.js b/src/js/controllers/home-controller.js new file mode 100644 index 00000000..4d311c0c --- /dev/null +++ b/src/js/controllers/home-controller.js @@ -0,0 +1,19 @@ +/*global define*/ +define([ + 'controllers/base/controller', + 'views/home-view' +], function (Controller, View) { + 'use strict'; + + var HomeController = Controller.extend({ + + show: function (params) { + + this.view = new View({ + region: 'main' + }); + } + }); + + return HomeController; +}); diff --git a/src/js/lib/config-utils.js b/src/js/lib/config-utils.js new file mode 100644 index 00000000..bdbc7dff --- /dev/null +++ b/src/js/lib/config-utils.js @@ -0,0 +1,70 @@ +/*global define, requirejs*/ +define([ + 'jquery', + 'underscore' +], function ($, _) { + + 'use strict'; + + function ConfigUtils() { + return this; + } + + ConfigUtils.prototype.findById = function (json, id) { + var found = _.find(json, function(item){ + return item.id = id; + }); + + return found; + }; + + ConfigUtils.prototype.findByPropValue = function (json, prop, value) { + var found = _.find(json, function(item){ + if(item[prop] == value) + return item; + }); + + return found; + }; + + ConfigUtils.prototype.process = function (parent, key, value, match, replace, keyvalue) { + if(key === match && keyvalue){ + parent[replace] = keyvalue; + delete parent[key]; + } + if(value === match){ + parent[key] = replace; + } + }; + + ConfigUtils.prototype.findAndReplace = function (o, match, replace, keyvalue) { + for(var i in o){ + this.process(o, i, o[i], match, replace, keyvalue); + if(o[i] !== null && (typeof (o[i]) =="object")){ + //step down into the object tree + this.findAndReplace(o[i], match, replace, keyvalue) + } + } + }; + + ConfigUtils.prototype.objectContainsValue = function (o, value) { + var hasValue = false; + var allChildren = _.flatten(_.pluck(o,'codes')); + + var child = _.find(allChildren,function(child){ + if(child) { + if (child.codes[0] == value){ + return child; + } + } + }); + + if(child) + hasValue = true; + + return hasValue; + }; + + + return ConfigUtils; +}); diff --git a/src/js/lib/utils.js b/src/js/lib/utils.js index ad157311..8e65b08d 100644 --- a/src/js/lib/utils.js +++ b/src/js/lib/utils.js @@ -1,9 +1,10 @@ /*global define, requirejs*/ define([ + 'jquery', 'handlebars', 'underscore', 'chaplin' -], function (Handlebars, _, Chaplin) { +], function ($, Handlebars, _, Chaplin) { 'use strict'; @@ -47,6 +48,32 @@ define([ return out; }); + Handlebars.registerHelper('ifIn', function(value, property, list, options) { + + var subcontext = [], result = list.filter(function( obj ) { + //console.log(obj[property] + ' - ' + value); + return obj[property] == value; + }); + + if(result.length > 0) + subcontext.push(result[0]); + + return options.fn(subcontext); + + }); + + + Handlebars.registerHelper('divideBy12', function(size) { + var modulus = 12 % size; + + if(modulus == 0){ + return 12 / size; + } + else { + return Math.floor(12 / size); // round down + } + }); + Handlebars.registerHelper('i18n', function (keyword) { var lang = requirejs.s.contexts._.config.i18n.locale; @@ -55,10 +82,24 @@ define([ }); + + Handlebars.registerHelper('decimal', function(number) { + return number.toFixed(2); + }); + + Handlebars.registerHelper('commaSeparator', function(number) { + return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + }); + utils.getLabel = function (obj) { return obj[requirejs.s.contexts._.config.i18n.locale.toUpperCase()]; }; + utils.getLocale = function () { + return requirejs.s.contexts._.config.i18n.locale.toUpperCase(); + }; + + utils.sortArray = function (prop, arr) { prop = prop.split('.'); var len = prop.length; @@ -77,5 +118,23 @@ define([ return arr; }; + utils.createMenuBreadcrumbItem = function (label, id, target) { + var self = this; + var item = null; + + if (typeof id !== 'undefined') { + item = {}; + item = {attrs: {id: id}, target: "#"+ target, label: {}}; + item["label"][self.getLocale()] = label; + } + + return item; + }; + + utils.getI18nLabel = function (id, labels, prefix) { + + return labels[prefix + id]; + }; + return utils; }); diff --git a/src/js/models/analyse/dashboard.js b/src/js/models/analyse/dashboard.js new file mode 100644 index 00000000..16c2e8a0 --- /dev/null +++ b/src/js/models/analyse/dashboard.js @@ -0,0 +1,11 @@ +define([ + 'models/base/model' +], function(Model) { + 'use strict'; + + var Dashboard = Model.extend({ + type: "Dashboard" + }); + + return Dashboard; +}); \ No newline at end of file diff --git a/src/js/models/analyse/table.js b/src/js/models/analyse/table.js new file mode 100644 index 00000000..ea992556 --- /dev/null +++ b/src/js/models/analyse/table.js @@ -0,0 +1,11 @@ +define([ + 'models/base/model' +], function(Model) { + 'use strict'; + + var Table = Model.extend({ + type: "Table" + }); + + return Table; +}); \ No newline at end of file diff --git a/src/js/models/breadcrumb-list.js b/src/js/models/breadcrumb-list.js deleted file mode 100644 index 542c1d9b..00000000 --- a/src/js/models/breadcrumb-list.js +++ /dev/null @@ -1,12 +0,0 @@ -define([ - 'models/base/collection', - 'models/breadcrumb' -], function(Collection, Model) { - 'use strict'; - - var BreadcrumbList = Collection.extend({ - model: Model - }); - - return BreadcrumbList; -}); diff --git a/src/js/models/breadcrumb.js b/src/js/models/breadcrumb.js deleted file mode 100644 index b5034175..00000000 --- a/src/js/models/breadcrumb.js +++ /dev/null @@ -1,14 +0,0 @@ -define([ - 'models/base/model' -], function(Model) { - 'use strict'; - - var Breadcrumb = Model.extend({ - defaults:{ - name : '', - link : '' - } - }); - - return Breadcrumb; -}); diff --git a/src/js/models/browse/dashboard.js b/src/js/models/browse/dashboard.js new file mode 100644 index 00000000..16c2e8a0 --- /dev/null +++ b/src/js/models/browse/dashboard.js @@ -0,0 +1,11 @@ +define([ + 'models/base/model' +], function(Model) { + 'use strict'; + + var Dashboard = Model.extend({ + type: "Dashboard" + }); + + return Dashboard; +}); \ No newline at end of file diff --git a/src/js/models/browse/indicators.js b/src/js/models/browse/indicators.js new file mode 100644 index 00000000..63f69742 --- /dev/null +++ b/src/js/models/browse/indicators.js @@ -0,0 +1,11 @@ +define([ + 'models/base/model' +], function(Model) { + 'use strict'; + + var Indicator = Model.extend({ + type: "Indicator" + }); + + return Indicator; +}); \ No newline at end of file diff --git a/src/js/routes.js b/src/js/routes.js index e6983a30..b7d592de 100644 --- a/src/js/routes.js +++ b/src/js/routes.js @@ -5,13 +5,22 @@ define(function () { // The routes for the application. This module returns a function. // `match` is match method of the Router return function (match) { - match('', 'browse#show'); - match('index', 'analysis#show'); - match('home', 'analysis#show'); + match('', 'home#show'); + match('home', 'home#show'); + //match('index', 'analysis#show'); + // match('home', 'analysis#show'); match('browse', 'browse#show'); - match('browse/:filter', 'browse#show'); - //match('login', 'login#show'); - match('analysis', 'analysis#show'); + match('browse/:filter', 'browse#browseby'); + match('browse/:filter/:recipientcode', 'browse#browseby'); + match('analyse', 'analyse#show'); + match('analyse/priority_analysis', 'analyse#priority_analysis'); + match('analyse/compare', 'analyse#compare'); + match('analyse/partner_matrix', 'analyse#partner_matrix'); + match('analyse/comp_advantage', 'analyse#comp_advantage'); + + // match('analyse/projects', 'analyse#projects'); + match('login', 'login#show'); + // match('analysis', 'analysis#show'); match('*anything', '404#show'); }; }); diff --git a/src/js/templates/analyse/analyse.hbs b/src/js/templates/analyse/analyse.hbs new file mode 100644 index 00000000..559f3635 --- /dev/null +++ b/src/js/templates/analyse/analyse.hbs @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/js/templates/analyse/bases.hbs b/src/js/templates/analyse/bases.hbs new file mode 100644 index 00000000..d0536463 --- /dev/null +++ b/src/js/templates/analyse/bases.hbs @@ -0,0 +1,702 @@ +
+ +
+ +
+
+ +
+ +
+
+ +
+
+ +

MAIN INFORMATION

+
+ +
Capital City
+
{{ capital_city }}
+ +
Flag
+
{{ flag }}
+ +
GAUL code
+
{{ gaul_code }}
+ +
Area
+
{{ area }}
+ +
Currency
+
{{ currency }}
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+

Mid-year population

+ +
+
+
+ + +
+
+

Average growth rate

+ +
+
+
+ +
+ + +
+ +
+
+

Mid-year population by age group

+ +
+
+
+ + +
+
+

Mid-year population by sex

+ +
+
+
+ +
+
+

Life expectancy (table)

+ +
+
+
+ + +
+ +
+ +
+
+

Population Pyramid

+ + + Responsive image +
+
+ + +
+
+

Table Urbanization Rate

+ +
+
+
+ + +
+ + +
+ +
+ +
+
+

Enrolment primary school

+ +
+
+
+ +
+
+

Enrolment primary school by gender

+ +
+
+
+ +
+
+

Literacy rate by gender

+ +
+
+
+ + +
+ +
+ +
+ +
+
+

Percentage of children provided the vaccines

+ +
+
+
+ + +
+
+

Prevalence of undernourishment

+ +
+
+ +
+ + +
+ + +
+
+

Percentage of underweight children (under-five)

+ +
+
+
+ + +
+
+

Infrastructure (doctor-hospital)

+ +
+
+
+ + +
+
+

Infrastructure (doctor-hospital)

+ +
+
+
+ + +
+ + +
+ +
+ +
+
+

Economically active population

+ +
+
+
+ + +
+
+

By sector

+ +
+
+ +
+ + +
+ + +
+ + + + + +
+ +
+ + +
+ +
+ +
+ +
+
+
+

Domestic credit

+ +
+
+
+ + +
+
+

Components of domestic credit

+ +
+
+
+ +
+ + +
+
+

Net foreign assets

+ +
+
+
+ + +
+ +
+
+

International Reserves

+ +
+
+
+ + +
+
+

Money Supply (M1)

+ +
+
+
+ + +
+ + +
+ +
+
+

Quasi-money

+ +
+
+
+ + +
+ + +
+ +
+ + +
+
+

Total revenues and grants

+ +
+
+
+ + +
+
+

Components of total revenues and grants

+ +
+
+
+ + +
+
+

Total expenditures and net lending

+ +
+
+
+ + +
+
+
+

Total expenditures and net lending (current and capital expenditure)

+ +
+
+
+ +
+
+

Current expenditure

+ +
+
+
+ +
+ + +
+
+

Fiscal Balance

+ +
+
+
+ + +
+ + +
+ + +
+ + +
+

Current account balance

+ +
+
+
+ +
+
+
+

Capital and financial account

+ +
+
+
+ + +
+
+

Disaggregated Capital and Financial account

+ +
+
+
+ + +
+ + +
+
+

Trade balance

+ +
+
+
+ + +
+ + +
+ + +
+
+

Production of electricity

+ +
+
+
+ + +
+ + +
+ + +
+
+

GDP growth (annual %)

+ +
+
+
+ + +
+
+

GDP per capita

+ +
+
+
+ + +
+ + +
+ +
+ + +
+ + +
+
+
+

Net Total Official Development assistance

+ +
+
+
+ +
+
+

Net Foreign Direct Investment Inflows

+ +
+
+
+
+ + +
+
+
+

Distribution of Net Foreign Direct Investment Inflows by country

+ +
+
+

Note: Last year available (2012)

+
+ + +
+
+ +
+
+

Table of Net Foreign Direct Investment Inflows by year

+ +
+
+
+
+ + +
+
+
+

Distribution of Origin of FDI Inflows by country

+ +
+
+

Note: Last year available (2012)

+
+ + +
+
+ +
+
+

Table of Origin of FDI Inflows by year

+ +
+
+
+
+ + +
+ + +
+ + +
+
+

Total Government Domestic Debt

+ +
+
+
+ + +
+
+
+

Total External Debt

+ +
+
+
+ + +
+
+

Total External Debt - Public/Private

+ +
+
+
+ +
+ + +
+ + +
+ + +
+
+
+

Roads, total network

+ +
+
+
+ + +
+
+

Paved roads (percentage of total network)

+ +
+
+
+ +
+ + +
+
+
+

Mobile-cellular/Fixed-telephone subscriptions

+ +
+
+
+
+ + +
+ + +
+ +
+ +
+
+

Inflation, consumer prices (annual %)

+ +
+
+
+ + +
+
+

Inflation, GDP deflator (annual%)

+ +
+
+
+ +
+ + +
+
+

Inflation by kind of commodity

+ +
+
+
+ + +
+ +
+ + +
+
+

Total contribution to GDP and Employment

+ +
+
+
+ + +
+
+
+

International tourism, number of arrivals

+ +
+
+
+ + +
+
+

International tourism, receipts

+ +
+
+
+ +
+
+

Rooms in hotel and similar establishments

+ +
+
+
+ +
+ + +
+ + +
+ +
+ + +
\ No newline at end of file diff --git a/src/js/templates/analyse/comp_advantage/comp-advantage.hbs b/src/js/templates/analyse/comp_advantage/comp-advantage.hbs new file mode 100644 index 00000000..fbb5db12 --- /dev/null +++ b/src/js/templates/analyse/comp_advantage/comp-advantage.hbs @@ -0,0 +1,25 @@ +
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + diff --git a/src/js/templates/analyse/comp_advantage/filters.hbs b/src/js/templates/analyse/comp_advantage/filters.hbs new file mode 100644 index 00000000..4cdec71d --- /dev/null +++ b/src/js/templates/analyse/comp_advantage/filters.hbs @@ -0,0 +1,7 @@ + +
+
+ +
+ +
diff --git a/src/js/templates/analyse/comp_advantage/table-dashboard.hbs b/src/js/templates/analyse/comp_advantage/table-dashboard.hbs new file mode 100644 index 00000000..7f22c359 --- /dev/null +++ b/src/js/templates/analyse/comp_advantage/table-dashboard.hbs @@ -0,0 +1,11 @@ +
+
+
+

{{comparative-advantage}}: {{label}}

+
+ +
+
+
+
+
\ No newline at end of file diff --git a/src/js/templates/analyse/comp_advantage/table-item.hbs b/src/js/templates/analyse/comp_advantage/table-item.hbs new file mode 100644 index 00000000..9eb42de0 --- /dev/null +++ b/src/js/templates/analyse/comp_advantage/table-item.hbs @@ -0,0 +1,19 @@ +
+ +
+ +
+ +
+

+ {{comp_advantage_desc_1}} + {{comp_advantage_desc_2}} {{comp_advantage_desc_3}}. +

+

{{rowsFound}}:

+
+ +
+ +
+
+ diff --git a/src/js/templates/analyse/compare/compare.hbs b/src/js/templates/analyse/compare/compare.hbs new file mode 100644 index 00000000..33a6eb6f --- /dev/null +++ b/src/js/templates/analyse/compare/compare.hbs @@ -0,0 +1,41 @@ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+ + diff --git a/src/js/templates/browse/dashboard.hbs b/src/js/templates/analyse/dashboard.hbs similarity index 67% rename from src/js/templates/browse/dashboard.hbs rename to src/js/templates/analyse/dashboard.hbs index 098c9937..0169ea0f 100644 --- a/src/js/templates/browse/dashboard.hbs +++ b/src/js/templates/analyse/dashboard.hbs @@ -91,7 +91,7 @@ -
+
@@ -205,123 +205,6 @@
-
-
- -
-
-

Indicator distribution by country

-
-
-
- -
-
- -
- -
-

Distribution of the selected indicator by country

-
-
-

Note: Only the top 25 countries are shown in the chart.

-
- - -
-
- -
-
-

Aggregation by region

-
-
-
- -
-
- -
- -
-

Aggregation by region in the selected year

-
-
-
- -
-
- -
-
-

Aggregation by subregion

-
-
-
-
- -
- -
-
-

Aggregation by subregion in the selected year

-
-
-
- -
-
- - -
-
-

Aggregation by climatic domain

-
-
-
- -
-
- -
- -
-

Aggregation by climatic domain in the selected year

-
-
-
-
-
- - -
-
-

Aggregation by level of income

-
-
-
-
- -
- -
- -
-

Aggregation by level of income in the selected year

-
-
-
- -
-
- -
- - - - - - diff --git a/src/js/templates/analyse/error.hbs b/src/js/templates/analyse/error.hbs new file mode 100644 index 00000000..a7eaccb4 --- /dev/null +++ b/src/js/templates/analyse/error.hbs @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/src/js/templates/analyse/partner_matrix/charts-dashboard.hbs b/src/js/templates/analyse/partner_matrix/charts-dashboard.hbs new file mode 100644 index 00000000..9ff33719 --- /dev/null +++ b/src/js/templates/analyse/partner_matrix/charts-dashboard.hbs @@ -0,0 +1,116 @@ +
+
+ +
+
+

{{top-partners-fao-oda}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+

{{top-channels}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+

{{top-partners}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+

{{top-fao-partners}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+ +
+
+

{{top-recipients-fao-oda}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+

{{top-channels}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+

{{top-recipients}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+

{{top-fao-recipients}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+ +
+
+

{{tot-fao-oda}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+

{{top-channels}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
diff --git a/src/js/templates/analyse/partner_matrix/filters.hbs b/src/js/templates/analyse/partner_matrix/filters.hbs new file mode 100644 index 00000000..995a6e4e --- /dev/null +++ b/src/js/templates/analyse/partner_matrix/filters.hbs @@ -0,0 +1,7 @@ + +
+
+ +
+ +
diff --git a/src/js/templates/analyse/partner_matrix/partner-matrix.hbs b/src/js/templates/analyse/partner_matrix/partner-matrix.hbs new file mode 100644 index 00000000..33c25297 --- /dev/null +++ b/src/js/templates/analyse/partner_matrix/partner-matrix.hbs @@ -0,0 +1,30 @@ +
+ +
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+ + diff --git a/src/js/templates/analyse/partner_matrix/table-dashboard.hbs b/src/js/templates/analyse/partner_matrix/table-dashboard.hbs new file mode 100644 index 00000000..286fade5 --- /dev/null +++ b/src/js/templates/analyse/partner_matrix/table-dashboard.hbs @@ -0,0 +1,36 @@ +
+
+
+
+

{{partner-matrix}} / {{by-recipient}}: {{label}}

+
+ +
+
+
+
+
+
+
+
+

{{partner-matrix}} / {{by-partner}}: {{label}}

+
+ +
+
+
+
+
+ +
+
+
+

{{partner-matrix}}: {{label}}

+
+ +
+
+
+
+
+
\ No newline at end of file diff --git a/src/js/templates/analyse/partner_matrix/table-item.hbs b/src/js/templates/analyse/partner_matrix/table-item.hbs new file mode 100644 index 00000000..101670c3 --- /dev/null +++ b/src/js/templates/analyse/partner_matrix/table-item.hbs @@ -0,0 +1,15 @@ +
+ +
+ +
+ +
+

{{rowsFound}}:

+
+ +
+ +
+
+ diff --git a/src/js/templates/analyse/priority_analysis/charts-dashboard.hbs b/src/js/templates/analyse/priority_analysis/charts-dashboard.hbs new file mode 100644 index 00000000..e0d817de --- /dev/null +++ b/src/js/templates/analyse/priority_analysis/charts-dashboard.hbs @@ -0,0 +1,46 @@ +
+
+
+

{{top-partners}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+

{{top-recipients}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+

{{financing-priorities-partners}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+
+
+

{{financing-priorities-recipients}}: {{label}}

+
+

{{hover_values}}

+
+
+
+
+ +
diff --git a/src/js/templates/analyse/priority_analysis/filters.hbs b/src/js/templates/analyse/priority_analysis/filters.hbs new file mode 100644 index 00000000..b51f8c37 --- /dev/null +++ b/src/js/templates/analyse/priority_analysis/filters.hbs @@ -0,0 +1,7 @@ + +
+
+ +
+ +
diff --git a/src/js/templates/analyse/priority_analysis/priorities-dashboard.hbs b/src/js/templates/analyse/priority_analysis/priorities-dashboard.hbs new file mode 100644 index 00000000..ef63a0c9 --- /dev/null +++ b/src/js/templates/analyse/priority_analysis/priorities-dashboard.hbs @@ -0,0 +1,37 @@ +
+ +
+
+

{{priorities-table}}

+
+
+
+
+
+ +
+
+

{{venn-diagram}}

+
+
+
+
+
+
+
+

+ + {{venn-diagram-info}} + +

+

+ +

+ +
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/js/templates/analyse/priority_analysis/priority-analysis.hbs b/src/js/templates/analyse/priority_analysis/priority-analysis.hbs new file mode 100644 index 00000000..8d2ad93b --- /dev/null +++ b/src/js/templates/analyse/priority_analysis/priority-analysis.hbs @@ -0,0 +1,35 @@ +
+ +
+ +
+
+
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + diff --git a/src/js/templates/analyse/priority_analysis/table-item.hbs b/src/js/templates/analyse/priority_analysis/table-item.hbs new file mode 100644 index 00000000..206a2d1f --- /dev/null +++ b/src/js/templates/analyse/priority_analysis/table-item.hbs @@ -0,0 +1,24 @@ +
+
+
+
+

{{rowsFound}}:

+
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+ + diff --git a/src/js/templates/analyse/projects/dashboard.hbs b/src/js/templates/analyse/projects/dashboard.hbs new file mode 100644 index 00000000..ac212b55 --- /dev/null +++ b/src/js/templates/analyse/projects/dashboard.hbs @@ -0,0 +1,13 @@ +
+
+
+
+

Table

+
+
+
+
+
+
+ +
diff --git a/src/js/templates/analyse/projects/projects.hbs b/src/js/templates/analyse/projects/projects.hbs new file mode 100644 index 00000000..49051841 --- /dev/null +++ b/src/js/templates/analyse/projects/projects.hbs @@ -0,0 +1,31 @@ +
+ +
+ + +
+
+
+
+
+ +
+ +
+ +
+ + +
+
+
+ dashboard +
+ +
+
+ +
+ + +
diff --git a/src/js/templates/breadcrumbs/breadcrumb-list.hbs b/src/js/templates/breadcrumbs/breadcrumb-list.hbs deleted file mode 100644 index 98f57852..00000000 --- a/src/js/templates/breadcrumbs/breadcrumb-list.hbs +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/src/js/templates/breadcrumbs/breadcrumb.hbs b/src/js/templates/breadcrumbs/breadcrumb.hbs deleted file mode 100644 index 1c50ead6..00000000 --- a/src/js/templates/breadcrumbs/breadcrumb.hbs +++ /dev/null @@ -1,2 +0,0 @@ -{{name}} - diff --git a/src/js/templates/browse/browse.hbs b/src/js/templates/browse/browse.hbs index 14cb18ce..d8c9ab12 100644 --- a/src/js/templates/browse/browse.hbs +++ b/src/js/templates/browse/browse.hbs @@ -1,38 +1,41 @@ -

{{title}}

-
-
- +
+
+
+
+
-
-
-
Choose Topic
-
- -
- -

{{ filter }}

- -
-
- +
+
+
+
-
- - + +
+
+
+
-
-

Results

+
-
- dashboard + + + +
+
@@ -40,3 +43,5 @@
+ + diff --git a/src/js/templates/browse/filters.hbs b/src/js/templates/browse/filters.hbs new file mode 100644 index 00000000..f2c10c3f --- /dev/null +++ b/src/js/templates/browse/filters.hbs @@ -0,0 +1,7 @@ + +
+
+ +
+ +
diff --git a/src/js/templates/browse/indicators-country.hbs b/src/js/templates/browse/indicators-country.hbs new file mode 100644 index 00000000..d4414e88 --- /dev/null +++ b/src/js/templates/browse/indicators-country.hbs @@ -0,0 +1,54 @@ + +
+ {{#ifIn 'INCOME.LEVEL' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} + + {{#ifIn 'POP.TOT' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} + + {{#ifIn 'NET.ODA.REC' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} + + {{#ifIn 'SI.POV.GINI' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} +
+
+ {{#ifIn 'NY.GNP.ATLS.CD' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx}} + {{/ifIn}} + {{#ifIn 'RUR.POP.PERC' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} + + {{#ifIn 'NET.ODA.REC.PC' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} +
+
+ {{#ifIn 'NY.GNP.PCAP.CD' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx}} + {{/ifIn}} + + {{#ifIn 'AGRI.LAND.PERC' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} + + {{#ifIn 'DT.ODA.ODAT.GN.ZS' 'code' data.indicators}} + {{> indicatorPartial self=this colIdx=../data.colIdx }} + {{/ifIn}} +
+ +
+
+
+ +
+ {{> indicatorsFooterPartial data=data }} +
+ + + diff --git a/src/js/templates/browse/indicators-dashboard.hbs b/src/js/templates/browse/indicators-dashboard.hbs new file mode 100644 index 00000000..e307e25a --- /dev/null +++ b/src/js/templates/browse/indicators-dashboard.hbs @@ -0,0 +1,22 @@ +
+
+
+
+

{{development_indicators}}: {{selected_country}}

+
+
+
+
+
+
+
+
+
+

{{development_indicators}}: {{selected_country}}

+
+
+
+
+
+
+
diff --git a/src/js/templates/browse/indicators-donor.hbs b/src/js/templates/browse/indicators-donor.hbs new file mode 100644 index 00000000..0eed8c8d --- /dev/null +++ b/src/js/templates/browse/indicators-donor.hbs @@ -0,0 +1,23 @@ + +{{#grouped_each 3 data.indicators}} +
+ {{#each this }} +
+
+

{{this.name}} ({{this.period}}){{this.footnote}}

+

{{commaSeparator this.value}} {{this.unit}}

+
+
+ {{/each}} +
+{{/grouped_each}} + +
+
+
+ +
+ {{> indicatorsFooterPartial data=data }} +
+ + diff --git a/src/js/templates/browse/indicators-footer-partial.hbs b/src/js/templates/browse/indicators-footer-partial.hbs new file mode 100644 index 00000000..1822039d --- /dev/null +++ b/src/js/templates/browse/indicators-footer-partial.hbs @@ -0,0 +1,22 @@ +
+
    +
  • {{data.source}}:
  • + {{#each data.footnotes}} +
  • {{this.footnote}} + {{#each this.sourceArray}} + {{this}} + {{#unless @last}}{{../../../data.and}}{{/unless}} + {{/each}} + {{#if this.note.length}} + - {{this.note}} + {{/if}} + +
  • + {{/each}} +
+
+ diff --git a/src/js/templates/browse/indicators-indicator-partial.hbs b/src/js/templates/browse/indicators-indicator-partial.hbs new file mode 100644 index 00000000..16df1439 --- /dev/null +++ b/src/js/templates/browse/indicators-indicator-partial.hbs @@ -0,0 +1,9 @@ +{{#if self.length}} +
+
+

{{self.0.name}} ({{self.0.period}}){{self.0.footnote}}

+

{{commaSeparator self.0.value}} {{self.0.unit}}

+
+
+{{/if}} + diff --git a/src/js/templates/browse/indicators.hbs b/src/js/templates/browse/indicators.hbs new file mode 100644 index 00000000..36ef1f8a --- /dev/null +++ b/src/js/templates/browse/indicators.hbs @@ -0,0 +1,44 @@ + +{{#grouped_each 3 data.indicators}} +
+ {{#each this }} +
+
+ +

{{this.name}} ({{this.period}}){{this.footnote}}

+

{{commaSeparator this.value}} {{this.unit}}

+
+
+ {{/each}} +
+{{/grouped_each}} + +
+
+
+ +
+
+
    +
  • {{data.source}}:
  • + {{#each data.footnotes}} +
  • {{this.footnote}} + {{#each this.sourceArray}} + {{this}} + {{#unless @last}}{{../../../data.and}}{{/unless}} + {{/each}} + {{#if this.note.length}} + - {{this.note}} + {{/if}} + +
  • + {{/each}} +
+
+
+ + diff --git a/src/js/templates/browse/oda-dashboard.hbs b/src/js/templates/browse/oda-dashboard.hbs new file mode 100644 index 00000000..d88b1eeb --- /dev/null +++ b/src/js/templates/browse/oda-dashboard.hbs @@ -0,0 +1,367 @@ +
+
+
+
+

{{tot-oda}}: {{label}}

+
+

Hover for values and click and drag to zoom

+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{top-partners}}: {{label}}

+
+
+
+
+
+

{{top-partners-others}}: {{label}}

+
+
+
+
+
+
+ +
: +

{{top-partners}}: {{label}}

+
+
+
+
+
+
+ +
+

{{top-recipients}}: {{label}}

+
+
+
+
+
+

{{top-recipients-others}}: {{label}}

+
+
+
+
+
+
+ +
+

{{top-recipients}}: {{label}}

+
+
+
+
+
+
+
+

{{top-channels}}: {{label}}

+
+
+
+
+
+ +
+
+

{{top-sectors}}: {{label}}

+
+
+
+
+
+
+
+

{{top-subsectors}}: {{label}}

+
+
+
+
+
+
+
+

{{oda-regional}}: {{label}}

+
+
+
+
+
+
+
+

{{country-map}}: {{label}}

+ +
+
+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{top-sectors}}: {{label}}

+
+
+
+
+
+

{{top-sectors-others}}: {{label}}

+
+
+
+
+
+
+
+

{{top-partners}}: {{label}}

+
+
+
+
+
+

{{top-partners-others}}: {{label}}

+
+
+
+
+
+
+
+

{{top-channels}}: {{label}}

+
+
+
+
+
+

{{top-subsectors}}: {{label}}

+
+
+
+
+
+ + + + +
+
+

{{regional-map}}: {{label}}

+ +
+
+
+
+
+ +
+
+ +
+
+

{{tot-oda-gni}}

+
+
+
+
+
+ +
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+ +
+
+
+

{{top-recipients}}: {{label}}

+
+
+
+
+
+

{{top-recipients-others}}: {{label}}

+
+
+
+
+
+
+
+

{{top-sectors}}: {{label}}

+
+
+
+
+
+

{{top-sectors-others}}: {{label}}

+
+
+
+
+
+
+
+

{{top-channels}}: {{label}}

+
+
+
+
+
+

{{top-subsectors}}: {{label}}

+
+
+
+
+
+
+
+

{{oda-regional}}: {{label}}

+
+
+
+
+
+
+
+

{{country-map}}: {{label}}

+ +
+
+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{tot-oda}}: {{label}}

+
+
+
+
+
+
+
+

{{top-channels}}: {{label}}

+
+
+
+
+
+
+
+

{{top-sectors}}: {{label}}

+
+
+
+
+
+
+

{{top-sectors-others}}: {{label}}

+
+
+
+
+
+
+
+
+

{{top-subsectors}}: {{label}}

+
+
+
+
+
+
+
diff --git a/src/js/templates/browse/options.hbs b/src/js/templates/browse/options.hbs deleted file mode 100644 index fdadc930..00000000 --- a/src/js/templates/browse/options.hbs +++ /dev/null @@ -1,24 +0,0 @@ - -
- -
- -
- - -
- {{#grouped_each 2 modules}} -
- {{#each this }} -
-

{{i18n title}}

- -

{{{i18n body}}}

-
- {{/each}} -
- {{/grouped_each}} -
-
-
- diff --git a/src/js/templates/common/modules.hbs b/src/js/templates/common/modules.hbs new file mode 100644 index 00000000..eac6a541 --- /dev/null +++ b/src/js/templates/common/modules.hbs @@ -0,0 +1,15 @@ +
+ + {{#grouped_each 2 modules}} + {{#each this }} + + +
+

{{i18n header}}

+

{{i18n title}}

+

{{{i18n body}}}

+
+
+ {{/each}} + {{/grouped_each}} +
diff --git a/src/js/templates/common/progress-bar.hbs b/src/js/templates/common/progress-bar.hbs new file mode 100644 index 00000000..1fdf0fed --- /dev/null +++ b/src/js/templates/common/progress-bar.hbs @@ -0,0 +1,5 @@ +
+
+ +
+
\ No newline at end of file diff --git a/src/js/templates/common/title.hbs b/src/js/templates/common/title.hbs new file mode 100644 index 00000000..9021a179 --- /dev/null +++ b/src/js/templates/common/title.hbs @@ -0,0 +1 @@ +
diff --git a/src/js/templates/home/home.hbs b/src/js/templates/home/home.hbs new file mode 100644 index 00000000..2e71ea6a --- /dev/null +++ b/src/js/templates/home/home.hbs @@ -0,0 +1,392 @@ +
+ +
+ + +
+ + + +
+

Welcome to Agricultural Development Assistance Mapping (ADAM)

+

ADAM gathers information from diverse databases to help users analyse Official Development Assistance (ODA) flows with a focus on Food Security, Nutrition, Agriculture and Rural Development, and determine priorities for assistance and formulate resource mobilization strategies.

+
+ +
+ +
+ +
+ +
+ +
+
+

ADAM Factsheets

+ +
+
+ +
+ +
+ + + +
+ +
+
+ +
+

Demo

+
+
+ + + +
+ +
+ +
+ +
+
+ +
+
+ +

Browse Data

+ +

Find out which resource partners are operating where and when; determine the top ten resource partners in the country/region of your choice; and analyse past spending in specific OECD-DAC sectors and subsectors.

+ +
+
+ +

Analyse Data

+ +

Analyse common priorities between FAO, national governments and resource partners; view information on + previously implemented projects; assess FAO's comparative advantage; and create a snapshot of resource + partners' past activity.

+ +
+
+ +

Resource Partner Profiles

+ +

Gather information on a resource partner's stated priority themes, preferred geographic areas of focus, + spending patterns, favoured funding mechanisms and internal processes. Contacts and web links are also + provided.

+ +
+ +
+ +
+
+
+
+
+

ODA Map

+ +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/js/templates/site.hbs b/src/js/templates/site.hbs index c16b6998..0b5b8d12 100644 --- a/src/js/templates/site.hbs +++ b/src/js/templates/site.hbs @@ -1,49 +1,56 @@ + + - -
-
-
- -
-
-
- - - -
-
-
-
-
-
-
- - -
-
-
- -
-
-
- - -
-
-
+ +
+
+
+

ADAM / Agricultural Development Assistance Mapping

+
+
+
+
+
+
+
+
-
+ +
+
+
+ +
+
+
- - - - - - - + +
+
+
- - + +
@@ -55,147 +62,172 @@
+
+ + +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
-
\ No newline at end of file diff --git a/src/js/views/analyse-view.js b/src/js/views/analyse-view.js new file mode 100644 index 00000000..449a57fc --- /dev/null +++ b/src/js/views/analyse-view.js @@ -0,0 +1,54 @@ +/*global define, amplify*/ +define([ + 'views/base/view', + 'text!templates/common/modules.hbs', + 'i18n!nls/analyse-modules', + 'config/Events', + 'handlebars', + 'amplify' +], function (View, modulesTemplate, moduleLabels, E) { + + 'use strict'; + + var AnalyseView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analysis', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: modulesTemplate, + + initialize: function (params) { + this.page = params.page; + + View.prototype.initialize.call(this, arguments); + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + //remove Breadcrumbs + amplify.publish(E.MENU_RESET_BREADCRUMB); + + //update State + amplify.publish(E.STATE_CHANGE, {menu: 'analyse'}); + + + this._displayAnalyseOptions() ; + }, + + _displayAnalyseOptions: function () { + var html = this.template({modules: moduleLabels["modules"]}); + + this.$el.html(html); + } + + }); + + return AnalyseView; +}); diff --git a/src/js/views/analyse/comp_advantage/comp-advantage-view.js b/src/js/views/analyse/comp_advantage/comp-advantage-view.js new file mode 100644 index 00000000..f31acb08 --- /dev/null +++ b/src/js/views/analyse/comp_advantage/comp-advantage-view.js @@ -0,0 +1,335 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'jquery-ui', + 'views/base/view', + 'views/common/title-view', + 'views/analyse/comp_advantage/filter-view', + 'views/analyse/comp_advantage/dashboard-table-view', + 'models/analyse/dashboard', + 'models/analyse/table', + 'text!templates/analyse/comp_advantage/comp-advantage.hbs', + 'i18n!nls/analyse', + 'config/Events', + 'config/Config', + 'config/analyse/comp_advantage/Events', + 'config/analyse/comp_advantage/config-comp-advantage', + 'config/analyse/comp_advantage/config-filter', + 'config/analyse/comp_advantage/config-table', + 'lib/utils', + 'amplify', + 'underscore' +], function ($, $UI, View, TitleSubView, FilterSubView, DashboardTableSubView, DashboardModel, TableModel, template, i18nLabels, Events, GeneralConfig, BaseMatrixEvents, BasePartnerMatrixConfig, BaseFilterConfig, TableConfig, Utils, amplify, _) { + + 'use strict'; + + var s = { + css_classes: { + TITLE_BAR_ITEMS: "#analyse-ca-fx-title-items", + FILTER_HOLDER: "#analyse-ca-filter-holder", + DASHBOARD_CHARTS_HOLDER: "#analyse-ca-charts-content", + DASHBOARD_TABLE_HOLDER: "#analyse-ca-table-content" + }, + dashboardModel: { + LABEL: 'label' + }, + values: { + ALL: 'all' + }, + paths: { + TABLE_CONFIG: 'config/analyse/comp_advantage/config-table-' + } + }; + + + /** + * + * Creates a new Resource Partner Matrix View + * Resource Partner Matrix View comprises of a series of subviews: title view, filter view and 2 dashboard views (charts dashboard and table dashboard) + * @class ResourcePartnerMatrixView + * @extends View + */ + var ComparativeAdvantageView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analyse-comp-advantage', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.analyse_type = params.filter; + this.page = params.page; + this.datasetType = GeneralConfig.DEFAULT_UID; + + View.prototype.initialize.call(this, arguments); + }, + + getTemplateData: function () { + return i18nLabels; + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + //update State + amplify.publish(Events.STATE_CHANGE, {menu: 'analyse', breadcrumb: this._createMenuBreadcrumbItem()}); + + this._bindEventListeners(); + + }, + + render: function () { + View.prototype.render.apply(this, arguments); + + this._initSubViews(); + }, + + + /** + * Initializes all sub views: Title, Filter, Table Dashboard and Charts Dashboard + * @private + */ + + _initSubViews: function () { + + View.prototype.render.apply(this, arguments); + + // Filter Configuration + if (!BaseFilterConfig || !BaseFilterConfig.filter) { + alert("Impossible to find filter configuration "); + return; + } + + // Table Dashboard Configuration + if (!TableConfig || !TableConfig.dashboard) { + alert("Impossible to find TABLE dashboard configuration" ); + return; + } + + this.tableConfig = TableConfig; + + // Set TITLE Sub View + var titleSubView = new TitleSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.TITLE_BAR_ITEMS), + title: i18nLabels.selections + }); + this.subview('title', titleSubView); + + // Set FILTER Sub View + var filtersSubView = new FilterSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.FILTER_HOLDER), + config: BaseFilterConfig.filter + }); + this.subview('filters', filtersSubView); + + // Set TABLE DASHBOARD Model + this.tableDashboardModel = new TableModel(); + + // Set DASHBOARD Table Sub View + var dashboardTableSubView = new DashboardTableSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_TABLE_HOLDER), + model: this.tableDashboardModel + }); + dashboardTableSubView.setDashboardConfig(this.tableConfig.dashboard); + this.subview('tableDashboard', dashboardTableSubView); + + }, + + /** + * Create the Menu breadcrumb item for the page + * @private + */ + _createMenuBreadcrumbItem: function () { + var label = ""; + var self = this; + + if (typeof self.analyse_type !== 'undefined') { + label = i18nLabels[self.analyse_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.analyse_type, self.page); + }, + + + _bindEventListeners: function () { + amplify.subscribe(BaseMatrixEvents.FILTER_ON_READY, this, this._filtersLoaded); + amplify.subscribe(BaseMatrixEvents.FILTER_ON_CHANGE, this, this._filtersChanged); + }, + + /** + * When the filters have all loaded the TitleView is built using the currently selected filter values + * and the dashboards are rendered + * @param payload Selected Filter Items + * @private + */ + _filtersLoaded: function (payload) { + + var selectedFilterItems = payload.labels; + + // Set Dashboard Properties + if (payload["props"]) { + this.subview('tableDashboard').setProperties(payload["props"]); + } + + // Build Title View + this.subview('title').setLabels(selectedFilterItems); + this.subview('title').build(); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + this._updateTableDashboardModelValues(); + + // Render each Dashboard + this.subview('tableDashboard').renderDashboard(); + + }, + + + /** + * When a filter selection changes the view is updated + * @param changedFilter The filter which has changed + * @private + */ + _filtersChanged: function (changedFilter) { + + var allFilterValues = this.subview('filters').getFilterValues(); + + this._updateView(changedFilter, allFilterValues); + + }, + + /** + * Each Dashboard and Title Sub View is rebuilt/refreshed + * @param changedFilter The filter which has changed + * @param allFilterValues All (selected) filter values + * @private + */ + + _updateView: function (changedFilter, allFilterValues) { + + var filterValues = allFilterValues; + + // console.log("================= filter values =============== "); + // console.log(filterValues); + + console.log("================= selectedfilter =============== "); + console.log(changedFilter); + + if (changedFilter) { + + // If the changed filter has a value + if (changedFilter.values.values.length > 0) { + + + // All is selected + if (changedFilter.values.values[0] === s.values.ALL) { + + // Update the TitleView (Remove Item) + amplify.publish(Events.TITLE_REMOVE_ITEM, changedFilter.id); + + } else { + // Update the TitleView (Add Item) + amplify.publish(Events.TITLE_ADD_ITEM, this._createTitleItem(changedFilter)); + } + + this._getDashboardConfiguration(filterValues); + } + + } + + }, + + + /** + * Get the appropriate Dashboard JS configuration file via requireJS, if the topic has changed + * @param topic + * @param filterValues + * @private + */ + _getDashboardConfiguration: function (filterValues) { + var self = this; + + // Rebuild dashboards with existing configurations + self._rebuildDashboards(filterValues, self.subview('tableDashboard').getDashboardConfig()); + }, + + /** + * Rebuild the dashboards + * @param filterValues + * @param tableDashboardConfig + * @private + */ + + _rebuildDashboards: function (filterValues, tableDashboardConfig) { + + //console.log("================= _rebuildDashboards 1 =============== "); + //console.log(dashboardConfig); + + // Set Dashboard Configuration + this.subview('tableDashboard').setDashboardConfig(tableDashboardConfig); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + this._updateTableDashboardModelValues(); + + + //console.log("================= _rebuildDashboard 3 =============== "); + // console.log(ovalues); + + // Rebuild Dashboards + this.subview('tableDashboard').rebuildDashboard(filterValues); + }, + + + /** + * Create the Title Item (from the filterItem's id and label) + * @param filterItem + * @private + */ + + _createTitleItem: function (filterItem) { + + var titleItem = {}, labels = filterItem.values.labels; + + titleItem.id = filterItem.id; + + var key = Object.keys(labels)[0]; + titleItem.label = labels[key]; + + return titleItem; + }, + + _unbindEventListeners: function () { + // Remove listeners + amplify.unsubscribe(BaseMatrixEvents.FILTER_ON_READY, this._filtersLoaded); + amplify.unsubscribe(BaseMatrixEvents.FILTER_ON_CHANGE, this._filtersChanged); + + }, + + + _updateTableDashboardModelValues: function () { + this.tableDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getTitleAsLabel()); + }, + + + dispose: function () { + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return ComparativeAdvantageView; +}); diff --git a/src/js/views/analyse/comp_advantage/dashboard-table-view.js b/src/js/views/analyse/comp_advantage/dashboard-table-view.js new file mode 100644 index 00000000..264f9e3b --- /dev/null +++ b/src/js/views/analyse/comp_advantage/dashboard-table-view.js @@ -0,0 +1,314 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/comp_advantage/table-dashboard.hbs', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/analyse', + 'i18n!nls/analyse-comp-advantage', + 'views/common/progress-bar', + 'handlebars', + 'lib/config-utils', + 'amplify' +], function ($, _, View, template, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, ProgressBar, Handlebars, ConfigUtils) { + + 'use strict'; + + var defaultOptions = { + container: '-container', + PROGRESS_BAR_CONTAINER: '#analyse-ca-progress-bar-holder', + paths: { + TABLE_ITEM: 'views/analyse/comp_advantage/table-item' + }, + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new Table View, which is composed of a custom Table and associated filter item + * Instantiates the FENIX dashboard submodule and responsible for the table dashboard related functionality. + * @class TableView + * @extends View + */ + + var TableView = View.extend({ + + // Automatically render after initialize + autoRender: false, + + className: 'dashboard-comp-advantage', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + // $.extend(true, this, defaultOptions); + var self = this; + + // this.container = params.container; + this.model = params.model; + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.source = $(this.template).prop('outerHTML'); + + this.dashboards = []; + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + this.setElement(this.container); + this._unbindEventListeners(); + + // Update the language related labels in the item configurations (charts) + for (var it in this.config.items) { + var item = this.config.items[it]; + // this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + $(this.el).html(this.getTemplateFunction()); + + //Initialize Progress Bar + this.progressBar = new ProgressBar({ + container: defaultOptions.PROGRESS_BAR_CONTAINER + }); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + + // Update the language related labels in the dashboard template + + this.compiledTemplate = Handlebars.compile(this.source); + + var model = this.model.toJSON(); + + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + }, + + + updateDashboardItemConfiguration: function (itemid, property, values) { + var item = _.filter(this.config.items, {id: itemid})[0]; + + if (item) { + if (item.config && item.config[property]) { + if (values[0] === 'false' || values[0] === 'true') + item.config[property] = $.parseJSON(values[0]); // returns a Boolean + else + item.config[property] = values[0]; + + } + } + }, + + renderDashboard: function () { + var self = this; + + this.config.el = this.$el; + // this.config.el = this.$el; + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: defaultOptions.paths.TABLE_ITEM + } + }; + + this.dashboard = new Dashboard(this.config); + + this._loadProgressBar(); + + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + if (props) { + if (props["oda"]) + this.config.uid = props["oda"]; + + } + }, + + /*_updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config ) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + },*/ + + rebuildDashboard: function (filter) { + var self = this; + + this._disposeDashboards(); + this.config.filter = filter; + + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path:defaultOptions.paths.TABLE_ITEM + } + }; + + // Build new dashboard + this.dashboard = new Dashboard(this.config); + + + // Load Progress bar + this._loadProgressBar(); + + }, + + + getDashboardConfig: function () { + return this.config; + }, + + _loadProgressBar: function () { + var self = this, increment = 0, percent = Math.round(100 / this.config.items.length); + + this.progressBar.reset(); + this.progressBar.show(); + + + this.dashboard.on('ready', function () { + self.progressBar.finish(); + // amplify.publish(BaseEvents.DASHBOARD_ON_READY); + }); + + + this.dashboard.on('ready.item', function () { + increment = increment + percent; + self.progressBar.update(increment); + }); + }, + + + _bindEventListeners: function () { + + }, + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return TableView; +}); diff --git a/src/js/views/analyse/comp_advantage/filter-view.js b/src/js/views/analyse/comp_advantage/filter-view.js new file mode 100644 index 00000000..f346eeb0 --- /dev/null +++ b/src/js/views/analyse/comp_advantage/filter-view.js @@ -0,0 +1,485 @@ +define( + [ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/comp_advantage/filters.hbs', + 'i18n!nls/filter', + 'fx-filter/start', + 'fx-common/utils', + 'lib/utils', + 'config/Config', + 'config/analyse/comp_advantage/config-comp-advantage', + 'config/analyse/comp_advantage/Events', + 'amplify' + ], function ($, _, View, template, i18nLabels, Filter, FxUtils, Utils, BaseConfig, PartnerMatrixConfig, BaseEvents, amplify) { + + 'use strict'; + + var s = { + css_classes: { + FILTER_ANALYSE_COMP_ADVANTAGE: "#filter-analyse-comp-advantage" + }, + exclusions: { + ALL: 'all' + }, + range: { + FROM: 'from', + TO: 'to' + } + }; + + + /** + * Creates a new Filter View. + * Instantiates the FENIX filter submodule and responsible for all filter related functionality. + * @class FilterView + * @extends View + */ + var FilterView = View.extend({ + /** @lends FilterView */ + + // Automatically render after initialize + autoRender: true, + + className: 'filter-analyse-comp-advantage', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.config = params.config; + + View.prototype.initialize.call(this, arguments); + }, + + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + this._buildFilters(); + }, + + + /** + * Updates filter configuration and renders the filter. + * @private + */ + _buildFilters: function () { + var self = this; + + + var filterConfig = this._getUpdatedFilterConfig(); + + if (!_.isEmpty(filterConfig)) { + this.$el.find(s.css_classes.FILTER_ANALYSE_COMP_ADVANTAGE).show(); + this._renderFilter(filterConfig); + } else { + this.$el.find(s.css_classes.FILTER_ANALYSE_COMP_ADVANTAGE).hide(); + } + }, + + /** + * + * Instantiates the FENIX Filter Sub Module with the configuration and sets the Filter Event Handlers + * @param config + * @private + */ + _renderFilter: function (config) { + var self = this; + + // dispose of filter + if (this.filter && $.isFunction(this.filter.dispose)) { + this.filter.dispose(); + } + + // instantiate new filter + this.filter = new Filter({ + el: this.$el.find(s.css_classes.FILTER_ANALYSE_COMP_ADVANTAGE), + environment: BaseConfig.ENVIRONMENT, + items: config, + common: { + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + }); + + + + // Set filter event handlers + // Filter on Ready: Set some additional properties based on the current selections then publish Filter Ready Event + // SELECTED_TOPIC Property - based on the Recipient Country and Resource Partner selections + // ODA Property - based on the ODA selection, then publish Filter Ready Event + this.filter.on('ready', function () { + + amplify.publish(BaseEvents.FILTER_ON_READY, self._getFilterValues()); + + }); + + + this.filter.on('click', function (payload) { + + var filterItem = self.$el.find("[data-selector="+payload.id+"]")[0]; + var selectize = $(filterItem).find("[data-role=dropdown]")[0].selectize; + selectize.clear(true); + + }); + + + // Filter on Change: Set some base properties for Recipient and the ODA, then publish Filter On Change Event + this.filter.on('change', function (payload) { + + // console.log("FILTER ALL =========="); + // console.log(payload.values.values); + + var fc = self._getFilterConfigById(payload.id); + var dependencies = []; + if (fc && fc.dependencies) { + for (var id in fc.dependencies) { + dependencies.push(id); + } + + payload["dependencies"] = dependencies; + } + + if (payload.id === BaseConfig.SELECTORS.YEAR_TO || payload.id === BaseConfig.SELECTORS.YEAR_FROM) { + var newRange = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + if (newRange) { + payload.id = BaseConfig.SELECTORS.YEAR; + payload.values.labels = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + payload.values.values = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedValues()); + } + + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + + + }); + + + }, + /** + * Updates the filter configuration including setting the language related labels in the filter template + * Returns: Updated Configuration + * @returns {Object} updatedConf + * @private + */ + _getUpdatedFilterConfig: function () { + + var conf = $.extend(true, {}, this.config), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_"); + obj.template.headerIconTooltip = Utils.getI18nLabel(key, i18nLabels, "filter_tooltip_"); + + }, this)); + + return updatedConf; + }, + + /** + * Format the time range and ODA values + * @returns {Object} + * @private + */ + + + _getFilterValues: function () { + + var timerange = { + values: {year: [{value: '', parent: s.range.FROM}, {value: '', parent: s.range.TO}]}, + labels: {year: {range: ''}} + }; + + var updatedValuesWithYear = {}, updatedValuesWithODA = {}, extendedValues = $.extend(true, {}, this.filter.getValues(), timerange); + + updatedValuesWithYear = this._processTimeRange(extendedValues); + + + return updatedValuesWithYear; + + }, + + /** + * Get the selected filter values + * @returns {Object} values + * @private + */ + + _getSelectedValues: function () { + return this._getFilterValues().values; + }, + + + /** + * Get the selected filter labels + * @returns {Object} labels + * @private + */ + _getSelectedLabels: function () { + return this._getFilterValues().labels; + }, + + + /** + * Get the filter configuration associated to the ID + * @param id + * @returns {Object} values + * @private + */ + + _getFilterConfigById: function (id) { + var filter; + + $.each(this.config, function (key, obj) { + if (key === id) { + return filter = obj; + } + }); + + return filter; + }, + + /** + * Get the full filter values object (consists of labels and values) + * @returns {Object} filterValues + */ + getFilterValues: function () { + + console.log("FINAL getFilterValues ============ 1"); + + + var values = this._getFilterValues(); + + + //clear uid values + values.values["uid"] = []; + + values.values[BaseConfig.SELECTORS.YEAR_FROM] = []; + values.values[BaseConfig.SELECTORS.YEAR_TO] = []; + + + console.log("FINAL getFilterValues ============ END"); + console.log(values); + return values; + }, + + /** + * Clear Values for the filter id + * @param filterid + * @param values + * @returns {Object} values + */ + + clearFilterValue: function (filterid, values) { + + if (values.values[filterid]) { + values.values[filterid] = []; + } + + return values; + }, + + /** + * Process the time range so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processTimeRange: function (filter) { + + var year_from = filter.values[BaseConfig.SELECTORS.YEAR_FROM], year_to = filter.values[BaseConfig.SELECTORS.YEAR_TO]; + + //reformat to and from years + filter.values.year[0].value = year_from[0]; + filter.values.year[1].value = year_to[0]; + + filter.labels.year.range = year_from[0] + '-' + year_to[0]; + filter.labels[BaseConfig.SELECTORS.YEAR_FROM] = []; + filter.labels[BaseConfig.SELECTORS.YEAR_TO] = []; + + return filter; + }, + + + + /** + * Process and get the filter values relevant to the OECD/ODA Dashboard + * @returns {Object} values + */ + + getOECDValues: function () { + + var values = this._getSelectedValues(); + + return this._updateValues(values); + }, + + + /** + * Check if values exist for the filter id + * @param filterid + * @returns {boolean} + */ + + hasValues: function (filterid) { + var values = this._getSelectedValues(); + return this._hasSelections(filterid, values); + }, + + + /** + * Get the values for the filter id + * @returns {Object} values + */ + getSelectedValues: function (filterId) { + var values = this._getSelectedValues(); + + var selectedValues = {}; + var itemSelected = this._hasSelections(filterId, values); + + if (itemSelected) { + selectedValues = values[filterId]; + //var filterObj = this._getObject(filterId, values); + //selectedValues = this._getSelected(filterObj); + } + + return selectedValues; + }, + + + /** + * Check if a filter has selections + * @param id + * @returns {*|boolean} + */ + isFilterSelected: function (id) { + var values = this._getSelectedValues(); + + + return this._hasSelections(id, values); + }, + + + + /** + * + * @param values + * @returns {*} + * @private + */ + _updateValues: function (values) { + + return values; + }, + + /** + * Check if filter id has selections + * @param id + * @param data + * @returns {boolean} + * @private + */ + _hasSelections: function (id, data) { + //console.log(id); + if (_.has(data, id)) { + if (data[id].length > 0) { + // if (_.has(data[id], 'codes')) { + return true; + } + } + }, + /** + * Get the Object from the data based on the id (key) + * @param id + * @param data + * @returns {*} + * @private + */ + _getObject: function (id, data) { + if (_.has(data, id)) { + if (data[id].length > 0 || !_.isEmpty(data[id])) { + // if (_.has(data[id], 'codes')) { + return data[id]; + } + } + }, + + + _getFilterConfig: function (id) { + //console.log(this.config); + + var filter = _.find(this.config, function (obj, key) { + + return key === id; + // return obj.components[0].id === id; + }); + + + return filter; + }, + + _hasProp: function (filter, prop) { + var hasProp = _.find(filter, function (obj) { + if (filter[prop]) { + return true; + } + }); + return hasProp; + }, + + getConfigPropValue: function (id, prop) { + + // console.log("===============getConfigPropValue "+id + ' | '+prop); + var filterValue; + var filterItem = this._getFilterConfig(id); + + // console.log(filterItem); + + if (this._hasProp(filterItem, prop)) + filterValue = filterItem[prop]; + + // console.log(filterValue); + return filterValue; + }, + + _getPropertiesObject: function (id, value) { + var additionalProperties = {}; + additionalProperties[id] = value; + + return additionalProperties; + }, + + + + _unbindEventListeners: function () { + + }, + + dispose: function () { + this._unbindEventListeners(); + View.prototype.dispose.call(this, arguments); + } + + }); + + return FilterView; + }); diff --git a/src/js/views/analyse/comp_advantage/table-item.js b/src/js/views/analyse/comp_advantage/table-item.js new file mode 100644 index 00000000..07f70bc1 --- /dev/null +++ b/src/js/views/analyse/comp_advantage/table-item.js @@ -0,0 +1,303 @@ +/*global define, Promise, amplify */ + +define([ + "jquery", + "loglevel", + 'underscore', + 'fx-dashboard/config/errors', + 'fx-dashboard/config/events', + 'fx-dashboard/config/config', + 'text!templates/analyse/comp_advantage/table-item.hbs', + 'fx-table/start', + 'fx-filter/start', + 'fx-common/pivotator/fenixtool', + 'config/analyse/comp_advantage/config-table-filter', + 'lib/utils', + 'i18n!nls/table', + 'i18n!nls/filter', + 'i18n!nls/analyse-comp-advantage', + 'fx-common/utils', + 'handlebars', + 'amplify' +], function ($, log, _, ERR, EVT, C, Template, OlapCreator, Filter, FenixTool, FilterModel, Utils, i18nTableLabels, i18nLabels, i18nLabelsComparativeAdvantage, FxUtils, Handlebars) { + + 'use strict'; + + var Model; + + var s = { + TABLE_INFO: "#table-info", + TABLE_DESC: "#table-description", + TABLE_FILTER: "#table-filter", + TABLE: "#table", + TABLE_SIZE: "#table-size" + }; + + var defaultOptions = {}; + + /** + * + * Returns a customised item for the Table Dashboard View + * Formats the payload and renders the table template + * @class TableItem + */ + + function TableItem(o) { + + var self = this; + this.model = {}; + + $.extend(true, this, defaultOptions, o); + this.$el = $(this.el); + + this._renderTemplate(); + + this._initVariables(); + + this._render(); + + this._bindEventListeners(); + + //force async execution + window.setTimeout(function () { + self.status.ready = true; + amplify.publish(self._getEventName(EVT.SELECTOR_READY), self); + self._trigger("ready"); + }, 0); + + return this; + } + + /** + * Disposition method + * Mandatory method + */ + TableItem.prototype.dispose = function () { + + this._dispose(); + + log.info("Selector disposed successfully"); + + }; + + /** + * refresh method + * Mandatory method + */ + TableItem.prototype.refresh = function () { + + log.info("Item refresh successfully"); + + }; + + /** + * pub/sub + * @return {Object} component instance + */ + TableItem.prototype.on = function (channel, fn, context) { + var _context = context || this; + if (!this.channels[channel]) { + this.channels[channel] = []; + } + this.channels[channel].push({context: _context, callback: fn}); + + return this; + }; + + TableItem.prototype._trigger = function (channel) { + + if (!this.channels[channel]) { + return false; + } + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0, l = this.channels[channel].length; i < l; i++) { + var subscription = this.channels[channel][i]; + subscription.callback.apply(subscription.context, args); + } + + return this; + }; + + TableItem.prototype._getStatus = function () { + return this.status; + }; + + TableItem.prototype._renderTemplate = function () { + this.indicatortemplate = Handlebars.compile(Template); + + var labels = $.extend(true, i18nTableLabels, i18nLabelsComparativeAdvantage); + + + var data = $.extend(true, {data: this.model}, labels); + var html = this.indicatortemplate(data); + + $(this.el).html(html); + }; + + TableItem.prototype._initVariables = function () { + + this.fenixTool = new FenixTool(); + + //Init status + this.status = {}; + + // pub/sub + this.channels = {}; + + //TODO + }; + + TableItem.prototype._render = function () { + + // this.controller._trigger('table_ready', {data: {size: this.model.size}}); + + + if (this.model.size > 0) { + var metadata = this.model.metadata.dsd.columns; + this._processPayload(); + } else { + $(this.el).find(s.TABLE_SIZE).html(0); + } + + }; + + TableItem.prototype._processPayloadWithFilter = function () { + + var config = this._getUpdatedFilterConfig(FilterModel); + + // Display filter if more than one data row + if (this.model.size > 1) { + this.filter = new Filter({ + el: s.TABLE_FILTER, + items: config + }); + + + this.filter.on("ready", _.bind(function () { + + var config = this._getOlapConfigFromFilter(); + + config = $.extend(true, {}, { + model: this.model, + el: s.TABLE + }, config + ); + + + for (var d in config.derived) { + config.aggregations.push(d); + } + + this.olap = new OlapCreator(config); + + + }, this)); + + this.filter.on("change", _.bind(function () { + + var config = this._getOlapConfigFromFilter(); + this.olap.update(config); + + }, this)); + + } + // Hide filter if only one data row + else { + + this.config.model = this.model; + this.config.el = s.TABLE; + + for (var d in this.config.derived) { + this.config.aggregations.push(d); + } + + this.olap = new OlapCreator(this.config); + } + + }; + + TableItem.prototype._processPayload = function () { + + var config = this._getUpdatedFilterConfig(FilterModel); + + this.config.model = this.model; + this.config.el = s.TABLE; + + for (var d in this.config.derived) { + this.config.aggregations.push(d); + } + + this.olap = new OlapCreator(this.config); + + }; + + + TableItem.prototype._getUpdatedFilterConfig = function (items) { + var conf = $.extend(true, {}, items), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_"); + + }, this)); + + return updatedConf; + + }; + + TableItem.prototype._getOlapConfigFromFilter = function () { + var values = this.filter.getValues(); + var groupedRow = false; + + if (values.values.groupedRow.length > 0) { + groupedRow = true; + } + + this.config.groupedRow = groupedRow; + + return this.config; + + }; + + + TableItem.prototype._destroyCustomItem = function () { + //TODO + log.info("Destroyed Custom: " + this.id); + }; + + TableItem.prototype._bindEventListeners = function () { + var self = this; + + this.olap.on('ready', function () { + var rowSize = this.olap.model.rows.length; + $(self.el).find(s.TABLE_SIZE).html(rowSize); + }); + }; + + TableItem.prototype._unbindEventListeners = function () { + //this.olap.off('ready'); + //this.filter.off('ready'); + }; + + TableItem.prototype._dispose = function () { + + this._unbindEventListeners(); + + this._destroyCustomItem(); + + }; + + TableItem.prototype._getEventName = function (evt) { + + return this.controller.id + evt; + }; + + return TableItem; + +}); \ No newline at end of file diff --git a/src/js/views/analyse/compare/compare-view.js b/src/js/views/analyse/compare/compare-view.js new file mode 100644 index 00000000..2941310e --- /dev/null +++ b/src/js/views/analyse/compare/compare-view.js @@ -0,0 +1,249 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'loglevel', + 'underscore', + 'lib/utils', + 'fx-common/utils', + 'views/base/view', + 'text!templates/analyse/compare/compare.hbs', + 'text!templates/analyse/error.hbs', + 'i18n!nls/analyse-compare', + 'i18n!nls/errors', + 'i18n!nls/filter', + 'config/Events', + 'config/Config', + 'config/analyse/compare/Config', + 'fx-filter/start', + 'fx-analysis/start', + 'amplify' +], function ($, log, _, Utils, FxUtils, View, template, errorTemplate, i18nLabels, i18nErrors, i18nFilter, E, GC, AC, Filter, Analysis) { + + 'use strict'; + + var s = { + FILTER: "#compare-filter", + FILTER_SUMMARY: "#compare-filter-summary", + ANALYSIS: "#compare-analysis", + ADD_BTN: "#add-btn" + }; + + var CompareView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analysis-compare', + + template: template, + + getTemplateData: function () { + return i18nLabels; + }, + + initialize: function (params) { + this.analyse_type = params.filter; + this.page = params.page; + + View.prototype.initialize.call(this, arguments); + }, + + _initMenuBreadcrumbItem: function () { + var label = ""; + var self = this; + + if (typeof self.analyse_type !== 'undefined') { + label = i18nLabels[self.analyse_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.analyse_type, self.page); + }, + + _initVariables: function () { + + this.$addBnt = this.$el.find(s.ADD_BTN); + + this.readyComponents = 0; + }, + + _bindEventListeners: function () { + + this.$addBnt.on("click", _.bind(this._onAddBtnClick, this)); + + this.analysis.on("ready", _.bind(this._onComponentReady, this)); + + this.filter.on("ready", _.bind(this._onComponentReady, this)); + }, + + _onComponentReady: function () { + + this.readyComponents++; + + if (this.readyComponents === 2) { + this.$addBnt.prop('disabled', false); + } + }, + + _onAddBtnClick: function () { + var config = this._getBoxModelFromFilter(); + + this.analysis.add(config); + }, + + _getBoxModelFromFilter: function () { + + var config = {}, + values = this.filter.getValues(), + from = FxUtils.getNestedProperty("values.year-from", values)[0], + to = FxUtils.getNestedProperty("values.year-to", values)[0], + process = this.filter.getValues("fenix", ["recipientcode", "donorcode", "parentsector_code", "purposecode"]); + + config.uid = FxUtils.getNestedProperty("values.oda", values)[0]; + + config.title = createTitle(values); + + process["year"] = { + time: [{ + from: from, + to: to + }] + }; + + config.process = [{ + name: "filter", + parameters: { + rows: process, + columns: ["donorcode", "parentsector_code", "year", "value", "unitcode"] + } + }, + { + "name": "group", + "parameters": { + "by": [ + "year", + "donorcode", + "parentsector_code" + ], + "aggregations": [ + { + "columns": [ + "value" + ], + "rule": "SUM" + }, + { + "columns": [ + "unitcode" + ], + "rule": "MAX" + } + ] + } + }]; + + return config; + + function createTitle(values) { + + var labels = []; + labels.push(getLabels("recipientcode", values)); + labels.push(getLabels("donorcode", values)); + labels.push(getLabels("parentsector_code", values)); + labels.push(getLabels("purposecode", values)); + labels.push(getLabels("year-from", values)); + labels.push(getLabels("year-to", values)); + + labels = cleanArray(labels); + + return labels.join(" / "); + + } + + function getLabels(field, values) { + + var labels = [], + obj = FxUtils.getNestedProperty("labels." + field, values), + keys = Object.keys(obj); + + for (var i = 0; i < keys.length; i++) { + labels.push(obj[keys[i]]); + } + + return labels.length > 0 ? labels.join(", ") : null; + } + + function cleanArray(actual) { + var newArray = []; + for (var i = 0; i < actual.length; i++) { + if (actual[i]) { + newArray.push(actual[i]); + } + } + return newArray; + } + }, + + _initComponents: function () { + + var filterConfig = $.extend(true, {}, AC.filter, { + el: this.$el.find(s.FILTER), + summaryEl: this.$el.find(s.FILTER_SUMMARY), + environment: GC.ENVIRONMENT, + cache: GC.cache + }), + analysisConfig = $.extend(true, {}, AC.analysis, { + el: this.$el.find(s.ANALYSIS), + environment: GC.ENVIRONMENT, + catalog: false, + cache: GC.cache + }); + + _.each(filterConfig.items, function (value, key) { + if (!value.template) { + value.template = {}; + } + value.template.title = i18nFilter["filter_" + key]; + }); + + this.filter = new Filter(filterConfig); + + this.analysis = new Analysis(analysisConfig); + + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + //update State + amplify.publish(E.STATE_CHANGE, {menu: 'analyse', breadcrumb: this._initMenuBreadcrumbItem()}); + + this._initVariables(); + + this._initComponents(); + + this._bindEventListeners(); + + log.info("Page attached successfully"); + }, + + _unbindEventListeners: function () { + + this.$addBnt.off(); + }, + + dispose: function () { + + this._unbindEventListeners(); + + this.filter.dispose(); + + this.analysis.dispose(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return CompareView; +}); diff --git a/src/js/views/analyse/partner_matrix/dashboard-charts-view.js b/src/js/views/analyse/partner_matrix/dashboard-charts-view.js new file mode 100644 index 00000000..4d91d404 --- /dev/null +++ b/src/js/views/analyse/partner_matrix/dashboard-charts-view.js @@ -0,0 +1,322 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/partner_matrix/charts-dashboard.hbs', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/analyse', + 'i18n!nls/analyse-partner-matrix', + 'i18n!nls/chart', + 'config/analyse/partner_matrix/Events', + 'handlebars', + 'lib/config-utils', + 'config/submodules/fx-chart/highcharts_template', + 'views/common/progress-bar', + 'amplify' +], function ($, _, View, template, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, i18nChartLabels, BaseEvents, Handlebars, ConfigUtils, HighchartsTemplate, ProgressBar) { + + 'use strict'; + + var defaultOptions = { + item_container_id: '-container', + PROGRESS_BAR_CONTAINER: '#analyse-partner-matrix-progress-bar-holder', + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new Charts Dashboard View + * Instantiates the FENIX dashboard submodule, ProgressBar and responsible for all charts dashboard related functionality. + * Including updates to the Dashboard model. + * @class ChartsDashboardView + * @extends View + */ + + var ChartsDashboardView = View.extend({ + + // DO NOT automatically render after initialize + autoRender: false, + + className: 'analyse-partner-matrix-dashboard-charts', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.topic = params.topic; + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.dashboards = []; + + this.source = $(this.template).find("[data-topic='" + this.topic + "']").prop('outerHTML'); + + //Initialize Progress Bar + this.progressBar = new ProgressBar({ + container: defaultOptions.PROGRESS_BAR_CONTAINER + }); + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + this.setElement(this.container); + this._unbindEventListeners(); + + // Update the language related labels in the dashboard item configurations + for (var it in this.config.items) { + var item = this.config.items[it]; + this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + $(this.el).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + this.compiledTemplate = Handlebars.compile(this.source); + var model = this.model.toJSON(); + + // Update the language related labels in the dashboard template + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels, i18nChartLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + // Sets Highchart config for each chart + _.each(this.config.items, _.bind(function (item) { + if (!_.isEmpty(item)) { + if (item.type == defaultOptions.itemTypes.CHART) { + if (item.config.config) { + item.config.config = $.extend(true, {}, HighchartsTemplate, item.config.config); + } else { + item.config.config = $.extend(true, {}, HighchartsTemplate); + } + } + } + + }, this)); + + + }, + + + + updateDashboardItemConfiguration: function (itemid, property, values) { + var item = _.filter(this.config.items, {id: itemid})[0]; + + if (item) { + if (item.config && item.config[property]) { + if(values[0] === 'false' || values[0] === 'true') + item.config[property] = $.parseJSON(values[0]); // returns a Boolean + else + item.config[property] = values[0]; + + } + } + }, + + renderDashboard: function () { + var self = this; + + this.config.el = this.el; + + //console.log("===================== renderDashboard =============="); + //console.log(this.config); + this.dashboard = new Dashboard(this.config); + + this._loadProgressBar(); + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + if (props) { + if (props["oda"]) + this.config.uid = props["oda"]; + + } + }, + + _updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + }, + + rebuildDashboard: function (filter, topic) { + var self = this; + + this._disposeDashboards(); + this.config.filter = filter; + + // Re-Render the source template + if(topic) { + this.topic = topic; + this.source = $(this.template).find("[data-topic='" + this.topic + "']").prop('outerHTML'); + this.render(); + } + + + // Build new dashboard + this.dashboard = new Dashboard( + this.config + ); + + // Load Progress bar + this._loadProgressBar(); + + }, + + + getDashboardConfig: function () { + return this.config; + }, + + + + + _loadProgressBar: function () { + var self = this, increment = 0, percent = Math.round(100 / this.config.items.length); + + this.progressBar.reset(); + this.progressBar.show(); + + + this.dashboard.on('ready', function () { + self.progressBar.finish(); + // amplify.publish(BaseEvents.DASHBOARD_ON_READY); + }); + + + this.dashboard.on('ready.item', function () { + increment = increment + percent; + self.progressBar.update(increment); + }); + }, + + + _bindEventListeners: function () { + + }, + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return ChartsDashboardView; +}); diff --git a/src/js/views/analyse/partner_matrix/dashboard-table-view.js b/src/js/views/analyse/partner_matrix/dashboard-table-view.js new file mode 100644 index 00000000..85ab7395 --- /dev/null +++ b/src/js/views/analyse/partner_matrix/dashboard-table-view.js @@ -0,0 +1,303 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/partner_matrix/table-dashboard.hbs', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/analyse', + 'i18n!nls/analyse-partner-matrix', + 'config/analyse/partner_matrix/Events', + 'handlebars', + 'lib/config-utils', + 'amplify' +], function ($, _, View, template, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, BaseEvents, Handlebars, ConfigUtils) { + + 'use strict'; + + var defaultOptions = { + item_container_id: '-container', + PROGRESS_BAR_CONTAINER: '#progress-bar-holder', + paths: { + TABLE_ITEM: 'views/analyse/partner_matrix/table-item' + }, + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new Table View, which is composed of a custom Table and associated filter item + * Instantiates the FENIX dashboard submodule and responsible for the table dashboard related functionality. + * @class TableView + * @extends View + */ + + var TableView = View.extend({ + + // Automatically render after initialize + autoRender: false, + + className: 'dashboard-table', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.topic = params.topic; + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.dashboards = []; + + this.source = $(this.template).find("[data-topic='" + this.topic + "']").prop('outerHTML'); + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + this.setElement(this.container); + this._unbindEventListeners(); + + // Update the language related labels in the item configurations (charts) + for (var it in this.config.items) { + var item = this.config.items[it]; + // this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + $(this.el).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + + // Update the language related labels in the dashboard template + + this.compiledTemplate = Handlebars.compile(this.source); + + var model = this.model.toJSON(); + + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + }, + + + updateDashboardItemConfiguration: function (itemid, property, values) { + var item = _.filter(this.config.items, {id: itemid})[0]; + + if (item) { + if (item.config && item.config[property]) { + if (values[0] === 'false' || values[0] === 'true') + item.config[property] = $.parseJSON(values[0]); // returns a Boolean + else + item.config[property] = values[0]; + + } + } + }, + + renderDashboard: function () { + var self = this; + + this.config.el = this.$el; + + if(this.config.items.length > 0) + this.config.items[0].topic = this.topic; + + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: defaultOptions.paths.TABLE_ITEM//'views/analyse/partner_matrix/table-item' + } + }; + + this.dashboard = new Dashboard(this.config); + + this.dashboard.on('table_ready', function (payload) { + + //if (payload.data.size > 0) { + //$(this.el).show(); + // } + + }); + + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + if (props) { + if (props["oda"]) + this.config.uid = props["oda"]; + + } + }, + + /*_updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config ) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + },*/ + + rebuildDashboard: function (filter, topic) { + var self = this; + + this._disposeDashboards(); + this.config.filter = filter; + + + // Re-Render the source template + if (topic) { + this.topic = topic; + this.source = $(this.template).find("[data-topic='" + this.topic + "']").prop('outerHTML'); + this.render(); + } + + + this.config.items[0].topic = this.topic; + + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: defaultOptions.paths.TABLE_ITEM //'views/analyse/partner_matrix/table-item' + } + }; + + // Build new dashboard + this.dashboard = new Dashboard(this.config); + + + }, + + + getDashboardConfig: function () { + return this.config; + }, + + + _bindEventListeners: function () { + + }, + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return TableView; +}); diff --git a/src/js/views/analyse/partner_matrix/filter-view.js b/src/js/views/analyse/partner_matrix/filter-view.js new file mode 100644 index 00000000..1f4fc581 --- /dev/null +++ b/src/js/views/analyse/partner_matrix/filter-view.js @@ -0,0 +1,651 @@ +define( + [ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/partner_matrix/filters.hbs', + 'i18n!nls/filter', + 'fx-filter/start', + 'fx-common/utils', + 'lib/utils', + 'config/Config', + 'config/analyse/partner_matrix/config-partner-matrix', + 'config/analyse/partner_matrix/Events', + 'amplify' + ], function ($, _, View, template, i18nLabels, Filter, FxUtils, Utils, BaseConfig, PartnerMatrixConfig, BaseEvents, amplify) { + + 'use strict'; + + var s = { + css_classes: { + FILTER_ANALYSE_PARTNER_MATRIX: "#filter-analyse-partner-matrix" + }, + exclusions: { + ALL: 'all' + }, + range: { + FROM: 'from', + TO: 'to' + } + }; + + + /** + * Creates a new Filter View. + * Instantiates the FENIX filter submodule and responsible for all filter related functionality. + * @class FilterView + * @extends View + */ + var FilterView = View.extend({ + /** @lends FilterView */ + + // Automatically render after initialize + autoRender: true, + + className: 'filter-analyse-partner-matrix', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.config = params.config; + + View.prototype.initialize.call(this, arguments); + }, + + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + this._buildFilters(); + }, + + + /** + * Updates filter configuration and renders the filter. + * @private + */ + _buildFilters: function () { + var self = this; + + + var filterConfig = this._getUpdatedFilterConfig(); + + if (!_.isEmpty(filterConfig)) { + this.$el.find(s.css_classes.FILTER_ANALYSE_PARTNER_MATRIX).show(); + this._renderFilter(filterConfig); + } else { + this.$el.find(s.css_classes.FILTER_ANALYSE_PARTNER_MATRIX).hide(); + } + }, + + /** + * + * Instantiates the FENIX Filter Sub Module with the configuration and sets the Filter Event Handlers + * @param config + * @private + */ + _renderFilter: function (config) { + var self = this; + + // dispose of filter + if (this.filter && $.isFunction(this.filter.dispose)) { + this.filter.dispose(); + } + + // instantiate new filter + this.filter = new Filter({ + el: this.$el.find(s.css_classes.FILTER_ANALYSE_PARTNER_MATRIX), + environment: BaseConfig.ENVIRONMENT, + items: config, + common: { + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + }); + + + + // Set filter event handlers + // Filter on Ready: Set some additional properties based on the current selections then publish Filter Ready Event + // SELECTED_TOPIC Property - based on the Recipient Country and Resource Partner selections + // ODA Property - based on the ODA selection, then publish Filter Ready Event + this.filter.on('ready', function (payload) { + + + // For the Recipient Country, set the topic as RECIPIENT_COUNTRY_SELECTED + if (self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY] || self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER]) { + + var partnerValues = self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0]; + var recipientValues = self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0]; + + var topic; + + //FROM FILTER: All Resource Partners selected + if (partnerValues === 'all') { + // FROM FILTER: All recipients are selected + // --> All Recipients + All Partners + if (recipientValues === 'all') { + topic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + // FROM PAYLOAD: 1 recipients selected + // --> 1 Recipient + All Partners + else { + topic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + } + //FROM FILTER: 1 Resource Partners selected + else { + // FROM PAYLOAD: All recipients are selected + // --> All Recipients + 1 Partner + if (recipientValues === 'all') { + topic = PartnerMatrixConfig.topic.RESOURCE_PARTNER_SELECTED; + } + // FROM PAYLOAD: 1 recipients selected + // --> 1 Recipients + 1 Partner + else { + topic = PartnerMatrixConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + } + } + + var additionalProperties = self._getPropertiesObject(PartnerMatrixConfig.topic.SELECTED_TOPIC, topic); + + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + + } + + // For ODA set its value to the props object + else if (self._getFilterValues().values[BaseConfig.SELECTORS.ODA]) { + var additionalProperties = self._getPropertiesObject(BaseConfig.SELECTORS.ODA, self._getFilterValues().values[BaseConfig.SELECTORS.ODA].enumeration[0]); + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + } + else { + amplify.publish(BaseEvents.FILTER_ON_READY, self._getFilterValues()); + } + + }); + + + this.filter.on('click', function (payload) { + + var filterItem = self.$el.find("[data-selector="+payload.id+"]")[0]; + var selectize = $(filterItem).find("[data-role=dropdown]")[0].selectize; + selectize.clear(true); + + }); + + + // Filter on Change: Set some base properties for Recipient and the ODA, then publish Filter On Change Event + this.filter.on('change', function (payload) { + + // console.log("FILTER ALL =========="); + // console.log(payload.values.values); + + var fc = self._getFilterConfigById(payload.id); + var dependencies = []; + if (fc && fc.dependencies) { + for (var id in fc.dependencies) { + dependencies.push(id); + } + + payload["dependencies"] = dependencies; + } + + if (payload.id === BaseConfig.SELECTORS.YEAR_TO || payload.id === BaseConfig.SELECTORS.YEAR_FROM) { + var newRange = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + if (newRange) { + payload.id = BaseConfig.SELECTORS.YEAR; + payload.values.labels = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + payload.values.values = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedValues()); + } + + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + else if (payload.id === BaseConfig.SELECTORS.ODA) { + var additionalProperties = self._getPropertiesObject(BaseConfig.SELECTORS.ODA, payload.values.values[0]); + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + } + else if (payload.id === BaseConfig.SELECTORS.RECIPIENT_COUNTRY) { + + if(payload.values.values.length > 0) { + + var recipientPayloadValue = payload.values.values[0]; + var partnerValues = self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0]; + var topic; + //FROM FILTER: All Resource Partners selected + if (partnerValues === 'all') { + // FROM PAYLOAD: All recipients are selected + // --> All Recipients + All Partners + if (recipientPayloadValue === 'all') { + topic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + // FROM PAYLOAD: 1 recipients selected + // --> 1 Recipient + All Partners + else { + topic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + } + //FROM FILTER: 1 Resource Partners selected + else { + // FROM PAYLOAD: All recipients are selected + // --> All Recipients + 1 Partner + if (recipientPayloadValue === 'all') { + topic = PartnerMatrixConfig.topic.RESOURCE_PARTNER_SELECTED; + } + // FROM PAYLOAD: 1 recipients selected + // --> 1 Recipients + 1 Partner + else { + topic = PartnerMatrixConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + } + } + + var additionalProperties = self._getPropertiesObject(PartnerMatrixConfig.topic.SELECTED_TOPIC, topic); + + //console.log("========================= FilterView: ON CHANGE COUNTRY ============== " + topic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + } + + } + else if (payload.id === BaseConfig.SELECTORS.RESOURCE_PARTNER) { + + if(payload.values.values.length > 0) { + + var partnerPayloadValue = payload.values.values[0]; + var recipientValues = self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0]; + var selectedTopic; + + //FROM FILTER: All Recipients selected + if (recipientValues === 'all') { + // FROM PAYLOAD: All partners are selected + // --> All Partners + All Recipients + if (partnerPayloadValue === 'all') { + selectedTopic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + // FROM PAYLOAD: 1 partner selected + // --> 1 Partner + All Recipients + else { + selectedTopic = PartnerMatrixConfig.topic.RESOURCE_PARTNER_SELECTED; + } + } + //FROM FILTER: 1 Recipient selected + else { + // FROM PAYLOAD: All partners are selected + // --> All Partners + 1 Recipient + if (partnerPayloadValue === 'all') { + selectedTopic = PartnerMatrixConfig.topic.RECIPIENT_COUNTRY_SELECTED; + } + // FROM PAYLOAD: 1 partner selected + // --> 1 Partner + 1 Recipient + else { + selectedTopic = PartnerMatrixConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + } + } + + var additionalProperties = self._getPropertiesObject(PartnerMatrixConfig.topic.SELECTED_TOPIC, selectedTopic); + + //console.log("========================= FilterView: ON PARTNER ============== " + selectedTopic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + + } + + } + else { + console.log("========================= FilterView: ELSE ============== "+selectedTopic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + + }); + + + }, + /** + * Updates the filter configuration including setting the language related labels in the filter template + * Returns: Updated Configuration + * @returns {Object} updatedConf + * @private + */ + _getUpdatedFilterConfig: function () { + + var conf = $.extend(true, {}, this.config), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_"); + obj.template.headerIconTooltip = Utils.getI18nLabel(key, i18nLabels, "filter_tooltip_"); + + }, this)); + + return updatedConf; + }, + + /** + * Format the time range and ODA values + * @returns {Object} + * @private + */ + + + _getFilterValues: function () { + + var timerange = { + values: {year: [{value: '', parent: s.range.FROM}, {value: '', parent: s.range.TO}]}, + labels: {year: {range: ''}} + }; + + var updatedValuesWithYear = {}, updatedValuesWithODA = {}, extendedValues = $.extend(true, {}, this.filter.getValues(), timerange); + + updatedValuesWithYear = this._processTimeRange(extendedValues); + + updatedValuesWithODA = this._processODA(updatedValuesWithYear); + + return updatedValuesWithODA; + + }, + + /** + * Get the selected filter values + * @returns {Object} values + * @private + */ + + _getSelectedValues: function () { + return this._getFilterValues().values; + }, + + + /** + * Get the selected filter labels + * @returns {Object} labels + * @private + */ + _getSelectedLabels: function () { + return this._getFilterValues().labels; + }, + + + /** + * Get the filter configuration associated to the ID + * @param id + * @returns {Object} values + * @private + */ + + _getFilterConfigById: function (id) { + var filter; + + $.each(this.config, function (key, obj) { + if (key === id) { + return filter = obj; + } + }); + + return filter; + }, + + /** + * Get the full filter values object (consists of labels and values) + * @returns {Object} filterValues + */ + getFilterValues: function () { + + console.log("FINAL getFilterValues ============ 1"); + + + var values = this._getFilterValues(); + + + //clear uid values + values.values["uid"] = []; + + values.values[BaseConfig.SELECTORS.YEAR_FROM] = []; + values.values[BaseConfig.SELECTORS.YEAR_TO] = []; + + + // if all values selected clear + if(values.values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0] === s.exclusions.ALL) { + values.values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY] = []; + } + + // if all values selected clear + if(values.values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0] === s.exclusions.ALL) { + values.values[BaseConfig.SELECTORS.RESOURCE_PARTNER] = []; + } + + console.log("FINAL getFilterValues ============ END"); + console.log(values); + return values; + }, + + /** + * Clear Values for the filter id + * @param filterid + * @param values + * @returns {Object} values + */ + + clearFilterValue: function (filterid, values) { + + if (values.values[filterid]) { + values.values[filterid] = []; + } + + return values; + }, + + /** + * Process the time range so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processTimeRange: function (filter) { + + var year_from = filter.values[BaseConfig.SELECTORS.YEAR_FROM], year_to = filter.values[BaseConfig.SELECTORS.YEAR_TO]; + + //reformat to and from years + filter.values.year[0].value = year_from[0]; + filter.values.year[1].value = year_to[0]; + + filter.labels.year.range = year_from[0] + '-' + year_to[0]; + filter.labels[BaseConfig.SELECTORS.YEAR_FROM] = []; + filter.labels[BaseConfig.SELECTORS.YEAR_TO] = []; + + return filter; + }, + + + /** + * Process the ODA so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processODA: function (filter) { + + var enumeration = [], oda = filter.values[BaseConfig.SELECTORS.ODA][0]; + enumeration.push(oda); + + filter.values[BaseConfig.SELECTORS.ODA] = {}; + filter.values[BaseConfig.SELECTORS.ODA].enumeration = enumeration; + + + return filter; + }, + + + /** + * Process and get the filter values relevant to the OECD/ODA Dashboard + * @returns {Object} values + */ + + getOECDValues: function () { + + var values = this._getSelectedValues(); + + return this._updateValues(values); + }, + + + /** + * Check if values exist for the filter id + * @param filterid + * @returns {boolean} + */ + + hasValues: function (filterid) { + var values = this._getSelectedValues(); + return this._hasSelections(filterid, values); + }, + + + /** + * Get the values for the filter id + * @returns {Object} values + */ + getSelectedValues: function (filterId) { + var values = this._getSelectedValues(); + + var selectedValues = {}; + var itemSelected = this._hasSelections(filterId, values); + + if (itemSelected) { + selectedValues = values[filterId]; + //var filterObj = this._getObject(filterId, values); + //selectedValues = this._getSelected(filterObj); + } + + return selectedValues; + }, + + + /** + * Check if a filter has selections + * @param id + * @returns {*|boolean} + */ + isFilterSelected: function (id) { + var values = this._getSelectedValues(); + + + return this._hasSelections(id, values); + }, + + + + /** + * + * @param values + * @returns {*} + * @private + */ + _updateValues: function (values) { + + return values; + }, + + /** + * Check if filter id has selections + * @param id + * @param data + * @returns {boolean} + * @private + */ + _hasSelections: function (id, data) { + //console.log(id); + if (_.has(data, id)) { + if (data[id].length > 0) { + // if (_.has(data[id], 'codes')) { + return true; + } + } + }, + /** + * Get the Object from the data based on the id (key) + * @param id + * @param data + * @returns {*} + * @private + */ + _getObject: function (id, data) { + if (_.has(data, id)) { + if (data[id].length > 0 || !_.isEmpty(data[id])) { + // if (_.has(data[id], 'codes')) { + return data[id]; + } + } + }, + + + _getFilterConfig: function (id) { + //console.log(this.config); + + var filter = _.find(this.config, function (obj, key) { + + return key === id; + // return obj.components[0].id === id; + }); + + + return filter; + }, + + _hasProp: function (filter, prop) { + var hasProp = _.find(filter, function (obj) { + if (filter[prop]) { + return true; + } + }); + return hasProp; + }, + + getConfigPropValue: function (id, prop) { + + // console.log("===============getConfigPropValue "+id + ' | '+prop); + var filterValue; + var filterItem = this._getFilterConfig(id); + + // console.log(filterItem); + + if (this._hasProp(filterItem, prop)) + filterValue = filterItem[prop]; + + // console.log(filterValue); + return filterValue; + }, + + _getPropertiesObject: function (id, value) { + var additionalProperties = {}; + additionalProperties[id] = value; + + return additionalProperties; + }, + + _unbindEventListeners: function () { + + }, + + dispose: function () { + this._unbindEventListeners(); + View.prototype.dispose.call(this, arguments); + } + + }); + + return FilterView; + }); diff --git a/src/js/views/analyse/partner_matrix/partner-matrix-view.js b/src/js/views/analyse/partner_matrix/partner-matrix-view.js new file mode 100644 index 00000000..429bbd3c --- /dev/null +++ b/src/js/views/analyse/partner_matrix/partner-matrix-view.js @@ -0,0 +1,402 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'jquery-ui', + 'views/base/view', + 'views/common/title-view', + 'views/analyse/partner_matrix/filter-view', + 'views/analyse/partner_matrix/dashboard-charts-view', + 'views/analyse/partner_matrix/dashboard-table-view', + 'models/analyse/dashboard', + 'models/analyse/table', + 'text!templates/analyse/partner_matrix/partner-matrix.hbs', + 'i18n!nls/analyse', + 'config/Events', + 'config/Config', + 'config/analyse/partner_matrix/Events', + 'config/analyse/partner_matrix/config-partner-matrix', + 'config/analyse/partner_matrix/config-filter', + 'lib/utils', + 'amplify', + 'underscore' +], function ($, $UI, View, TitleSubView, FilterSubView, DashboardChartsSubView, DashboardTableSubView, DashboardModel, TableModel, template, i18nLabels, Events, GeneralConfig, BaseMatrixEvents, BasePartnerMatrixConfig, BaseFilterConfig, Utils, amplify, _) { + + 'use strict'; + + var s = { + css_classes: { + TITLE_BAR_ITEMS: "#analyse-partner-matrix-fx-title-items", + FILTER_HOLDER: "#analyse-partner-matrix-filter-holder", + DASHBOARD_CHARTS_HOLDER: "#analyse-partner-matrix-charts-content", + DASHBOARD_TABLE_HOLDER: "#analyse-partner-matrix-table-content" + }, + dashboardModel: { + LABEL: 'label' + }, + values: { + ALL: 'all' + }, + paths: { + CHARTS_CONFIG: 'config/analyse/partner_matrix/config-charts-', + TABLE_CONFIG: 'config/analyse/partner_matrix/config-table-' + } + }; + + + /** + * + * Creates a new Resource Partner Matrix View + * Resource Partner Matrix View comprises of a series of subviews: title view, filter view and 2 dashboard views (charts dashboard and table dashboard) + * @class ResourcePartnerMatrixView + * @extends View + */ + var ResourcePartnerMatrixView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analyse-partner-matrix', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.analyse_type = params.filter; + this.topic = BasePartnerMatrixConfig.dashboard.DEFAULT_TOPIC; + this.page = params.page; + this.datasetType = GeneralConfig.DEFAULT_UID; + + View.prototype.initialize.call(this, arguments); + }, + + getTemplateData: function () { + return i18nLabels; + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + //update State + amplify.publish(Events.STATE_CHANGE, {menu: 'analyse', breadcrumb: this._createMenuBreadcrumbItem()}); + + this._bindEventListeners(); + + }, + + render: function () { + View.prototype.render.apply(this, arguments); + + this._loadConfigurations(); + }, + + /** + * Based on the topic, which is determined by the current filter selections (see filter-view) + * the appropriate dashboard JS configuration files are loaded via requireJS + * @private + */ + _loadConfigurations: function () { + require([s.paths.CHARTS_CONFIG + this.topic, s.paths.TABLE_CONFIG + this.topic], _.bind(this._initSubViews, this)); + }, + + /** + * Initializes all sub views: Title, Filter, Table Dashboard and Charts Dashboard + * @param ChartsConfig Chart Dashboard configuration + * @param TableConfig Table Dashboard configuration + * @private + */ + + _initSubViews: function (ChartsConfig, TableConfig) { + + View.prototype.render.apply(this, arguments); + + // Filter Configuration + if (!BaseFilterConfig || !BaseFilterConfig.filter) { + alert("Impossible to find filter configuration for the topic: " + this.topic); + return; + } + + // Charts Dashboard Configuration + if (!ChartsConfig || !ChartsConfig.dashboard) { + alert("Impossible to find CHARTS dashboard/filter configuration for the topic: " + this.topic); + return; + } + + // Table Dashboard Configuration + if (!TableConfig || !TableConfig.dashboard) { + alert("Impossible to find TABLE dashboard configuration for the topic: " + this.topic); + return; + } + + this.chartsConfig = ChartsConfig; + this.tableConfig = TableConfig; + + // Set TITLE Sub View + var titleSubView = new TitleSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.TITLE_BAR_ITEMS), + title: i18nLabels.selections + }); + this.subview('title', titleSubView); + + // Set FILTER Sub View + var filtersSubView = new FilterSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.FILTER_HOLDER), + config: BaseFilterConfig.filter + }); + this.subview('filters', filtersSubView); + + // Set CHARTS DASHBOARD Model + this.chartsDashboardModel = new DashboardModel(); + + // Set CHARTS DASHBOARD Sub View + var dashboardChartsSubView = new DashboardChartsSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_CHARTS_HOLDER), + topic: this.topic, + model: this.chartsDashboardModel + }); + dashboardChartsSubView.setDashboardConfig(this.chartsConfig.dashboard); + this.subview('chartsDashboard', dashboardChartsSubView); + + // Set TABLE DASHBOARD Model + this.tableDashboardModel = new TableModel(); + + // Set DASHBOARD Table Sub View + var dashboardTableSubView = new DashboardTableSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_TABLE_HOLDER), + topic: this.topic, + model: this.tableDashboardModel + }); + dashboardTableSubView.setDashboardConfig(this.tableConfig.dashboard); + this.subview('tableDashboard', dashboardTableSubView); + + }, + + /** + * Create the Menu breadcrumb item for the page + * @private + */ + _createMenuBreadcrumbItem: function () { + var label = ""; + var self = this; + + if (typeof self.analyse_type !== 'undefined') { + label = i18nLabels[self.analyse_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.analyse_type, self.page); + }, + + + _bindEventListeners: function () { + amplify.subscribe(BaseMatrixEvents.FILTER_ON_READY, this, this._filtersLoaded); + amplify.subscribe(BaseMatrixEvents.FILTER_ON_CHANGE, this, this._filtersChanged); + }, + + /** + * When the filters have all loaded the TitleView is built using the currently selected filter values + * and the dashboards are rendered + * @param payload Selected Filter Items + * @private + */ + _filtersLoaded: function (payload) { + + var selectedFilterItems = payload.labels; + + // Set Dashboard Properties + if (payload["props"]) { + this.subview('chartsDashboard').setProperties(payload["props"]); + this.subview('tableDashboard').setProperties(payload["props"]); + } + + // Build Title View + this.subview('title').setLabels(selectedFilterItems); + this.subview('title').build(); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + this._updateChartsDashboardModelValues(); + this._updateTableDashboardModelValues(); + + // Render each Dashboard + this.subview('chartsDashboard').renderDashboard(); + this.subview('tableDashboard').renderDashboard(); + + }, + + + /** + * When a filter selection changes the view is updated + * @param changedFilter The filter which has changed + * @private + */ + _filtersChanged: function (changedFilter) { + + var allFilterValues = this.subview('filters').getFilterValues(); + + this._updateView(changedFilter, allFilterValues); + + }, + + /** + * Each Dashboard and Title Sub View is rebuilt/refreshed + * @param changedFilter The filter which has changed + * @param allFilterValues All (selected) filter values + * @private + */ + + _updateView: function (changedFilter, allFilterValues) { + + var filterValues = allFilterValues; + + // console.log("================= filter values =============== "); + // console.log(filterValues); + + console.log("================= selectedfilter =============== "); + console.log(changedFilter); + + if (changedFilter) { + + var topic = this.topic; + + // If the changed filter has a value + if (changedFilter.values.values.length > 0) { + + // Get topic + if (changedFilter['props']) { + if (changedFilter['props']['selected_topic']) { + topic = changedFilter['props']['selected_topic']; + } + } + + // All is selected + if (changedFilter.values.values[0] === s.values.ALL) { + + // Update the TitleView (Remove Item) + amplify.publish(Events.TITLE_REMOVE_ITEM, changedFilter.id); + + } else { + // Update the TitleView (Add Item) + amplify.publish(Events.TITLE_ADD_ITEM, this._createTitleItem(changedFilter)); + } + + this._getDashboardConfiguration(topic, filterValues); + } + + } + + }, + + + /** + * Get the appropriate Dashboard JS configuration file via requireJS, if the topic has changed + * @param topic + * @param filterValues + * @private + */ + _getDashboardConfiguration: function (topic, filterValues) { + var self = this; + // console.log("================= _getDashboardConfiguration Start =============== "); + //console.log(filtervalues); + + // If the topic has changed, rebuild dashboards with new configuration + if (topic !== this.topic) { + // Re set the current topic + this.topic = topic; + + //Load new configuration files + require([s.paths.CHARTS_CONFIG + topic, s.paths.TABLE_CONFIG + topic], function (TopicChartsConfig, TopicTableConfig) { + // Rebuild dashboards with new configurations + self._rebuildDashboards(filterValues, TopicChartsConfig.dashboard, TopicTableConfig.dashboard); + }); + } + else { + // Rebuild dashboards with existing configurations + self._rebuildDashboards(filterValues, self.subview('chartsDashboard').getDashboardConfig(), self.subview('tableDashboard').getDashboardConfig()); + } + }, + + /** + * Rebuild the dashboards + * @param filterValues + * @param chartsDashboardConfig + * @param tableDashboardConfig + * @private + */ + + _rebuildDashboards: function (filterValues, chartsDashboardConfig, tableDashboardConfig) { + + //console.log("================= _rebuildDashboards 1 =============== "); + //console.log(dashboardConfig); + + // Set Dashboard Configuration + this.subview('chartsDashboard').setDashboardConfig(chartsDashboardConfig); + this.subview('tableDashboard').setDashboardConfig(tableDashboardConfig); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + this._updateChartsDashboardModelValues(); + this._updateTableDashboardModelValues(); + + + //console.log("================= _rebuildDashboard 3 =============== "); + // console.log(ovalues); + + // Rebuild Dashboards + this.subview('chartsDashboard').rebuildDashboard(filterValues, this.topic); + this.subview('tableDashboard').rebuildDashboard(filterValues, this.topic); + }, + + + /** + * Create the Title Item (from the filterItem's id and label) + * @param filterItem + * @private + */ + + _createTitleItem: function (filterItem) { + + var titleItem = {}, labels = filterItem.values.labels; + + titleItem.id = filterItem.id; + + var key = Object.keys(labels)[0]; + titleItem.label = labels[key]; + + return titleItem; + }, + + _unbindEventListeners: function () { + // Remove listeners + amplify.unsubscribe(BaseMatrixEvents.FILTER_ON_READY, this._filtersLoaded); + amplify.unsubscribe(BaseMatrixEvents.FILTER_ON_CHANGE, this._filtersChanged); + + }, + + + _updateChartsDashboardModelValues: function () { + this.chartsDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getTitleAsLabel()); + }, + + _updateTableDashboardModelValues: function () { + this.tableDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getTitleAsLabel()); + }, + + + dispose: function () { + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return ResourcePartnerMatrixView; +}); diff --git a/src/js/views/analyse/partner_matrix/table-item.js b/src/js/views/analyse/partner_matrix/table-item.js new file mode 100644 index 00000000..fce83467 --- /dev/null +++ b/src/js/views/analyse/partner_matrix/table-item.js @@ -0,0 +1,297 @@ +/*global define, Promise, amplify */ + +define([ + "jquery", + "loglevel", + 'underscore', + 'fx-dashboard/config/errors', + 'fx-dashboard/config/events', + 'fx-dashboard/config/config', + 'text!templates/analyse/partner_matrix/table-item.hbs', + 'fx-table/start', + 'fx-filter/start', + 'fx-common/pivotator/fenixtool', + 'config/analyse/partner_matrix/config-table-filter', + 'lib/utils', + 'i18n!nls/table', + 'i18n!nls/filter', + 'fx-common/utils', + 'handlebars', + 'amplify' +], function ($, log, _, ERR, EVT, C, Template, OlapCreator, Filter, FenixTool, FilterModel, Utils, i18nTableLabels, i18nLabels, FxUtils, Handlebars) { + + 'use strict'; + + var Model; + + var s = { + TABLE_INFO: "#table-info", + TABLE_FILTER: "#table-filter", + TABLE: "#table", + TABLE_SIZE: "#table-size" + }; + + var defaultOptions = {}; + + /** + * + * Returns a customised item for the Table Dashboard View + * Formats the payload and renders the table template + * @class TableItem + */ + + function TableItem(o) { + + var self = this; + this.model = {}; + + $.extend(true, this, defaultOptions, o); + this.$el = $(this.el); + + this._renderTemplate(); + + this._initVariables(); + + this._render(); + + this._bindEventListeners(); + + //force async execution + window.setTimeout(function () { + self.status.ready = true; + amplify.publish(self._getEventName(EVT.SELECTOR_READY), self); + self._trigger("ready"); + }, 0); + + return this; + } + + /** + * Disposition method + * Mandatory method + */ + TableItem.prototype.dispose = function () { + + this._dispose(); + + log.info("Selector disposed successfully"); + + }; + + /** + * refresh method + * Mandatory method + */ + TableItem.prototype.refresh = function () { + + log.info("Item refresh successfully"); + + }; + + /** + * pub/sub + * @return {Object} component instance + */ + TableItem.prototype.on = function (channel, fn, context) { + var _context = context || this; + if (!this.channels[channel]) { + this.channels[channel] = []; + } + this.channels[channel].push({context: _context, callback: fn}); + + return this; + }; + + TableItem.prototype._trigger = function (channel) { + + if (!this.channels[channel]) { + return false; + } + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0, l = this.channels[channel].length; i < l; i++) { + var subscription = this.channels[channel][i]; + subscription.callback.apply(subscription.context, args); + } + + return this; + }; + + TableItem.prototype._getStatus = function () { + return this.status; + }; + + TableItem.prototype._renderTemplate = function () { + this.indicatortemplate = Handlebars.compile(Template); + + var data = $.extend(true, {data: this.model}, i18nTableLabels); + var html = this.indicatortemplate(data); + + $(this.el).html(html); + }; + + TableItem.prototype._initVariables = function () { + + this.fenixTool = new FenixTool(); + + //Init status + this.status = {}; + + // pub/sub + this.channels = {}; + + //TODO + }; + + TableItem.prototype._render = function () { + + // this.controller._trigger('table_ready', {data: {size: this.model.size}}); + + if (this.model.size > 0) { + var metadata = this.model.metadata.dsd.columns; + this._processPayload(); + } else { + $(this.el).find(s.TABLE_SIZE).html(0); + } + + }; + + TableItem.prototype._processPayloadWithFilter = function () { + + var config = this._getUpdatedFilterConfig(FilterModel); + + // Display filter if more than one data row + if (this.model.size > 1) { + this.filter = new Filter({ + el: s.TABLE_FILTER, + items: config + }); + + + this.filter.on("ready", _.bind(function () { + + var config = this._getOlapConfigFromFilter(); + + config = $.extend(true, {}, { + model: this.model, + el: s.TABLE + }, config + ); + + + for (var d in config.derived) { + config.aggregations.push(d); + } + + this.olap = new OlapCreator(config); + + + }, this)); + + this.filter.on("change", _.bind(function () { + + var config = this._getOlapConfigFromFilter(); + this.olap.update(config); + + }, this)); + + } + // Hide filter if only one data row + else { + + this.config.model = this.model; + this.config.el = s.TABLE; + + for (var d in this.config.derived) { + this.config.aggregations.push(d); + } + + this.olap = new OlapCreator(this.config); + } + + }; + + TableItem.prototype._processPayload = function () { + + var config = this._getUpdatedFilterConfig(FilterModel); + + this.config.model = this.model; + this.config.el = s.TABLE; + + for (var d in this.config.derived) { + this.config.aggregations.push(d); + } + + this.olap = new OlapCreator(this.config); + + }; + + + TableItem.prototype._getUpdatedFilterConfig = function (items) { + var conf = $.extend(true, {}, items), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_" + this.topic + "_"); + + }, this)); + + return updatedConf; + + }; + + TableItem.prototype._getOlapConfigFromFilter = function () { + var values = this.filter.getValues(); + var groupedRow = false; + + if (values.values.groupedRow.length > 0) { + groupedRow = true; + } + + this.config.groupedRow = groupedRow; + + return this.config; + + }; + + + TableItem.prototype._destroyCustomItem = function () { + //TODO + log.info("Destroyed Custom: " + this.id); + }; + + TableItem.prototype._bindEventListeners = function () { + var self = this; + + this.olap.on('ready', function () { + var rowSize = this.olap.model.rows.length; + $(self.el).find(s.TABLE_SIZE).html(rowSize); + }); + }; + + TableItem.prototype._unbindEventListeners = function () { + //this.olap.off('ready'); + //this.filter.off('ready'); + }; + + TableItem.prototype._dispose = function () { + + this._unbindEventListeners(); + + this._destroyCustomItem(); + + }; + + TableItem.prototype._getEventName = function (evt) { + + return this.controller.id + evt; + }; + + return TableItem; + +}); \ No newline at end of file diff --git a/src/js/views/analyse/priority_analysis/dashboard-charts-view.js b/src/js/views/analyse/priority_analysis/dashboard-charts-view.js new file mode 100644 index 00000000..9455e7d6 --- /dev/null +++ b/src/js/views/analyse/priority_analysis/dashboard-charts-view.js @@ -0,0 +1,320 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/priority_analysis/charts-dashboard.hbs', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/analyse', + 'i18n!nls/analyse-priority-analysis', + 'i18n!nls/chart', + 'config/analyse/priority_analysis/Events', + 'handlebars', + 'lib/config-utils', + 'config/submodules/fx-chart/highcharts_template', + 'config/submodules/fx-chart/jvenn_template', + 'views/common/progress-bar', + 'amplify' +], function ($, _, View, template, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, i18nChartLabels, BaseEvents, Handlebars, ConfigUtils, HighchartsTemplate, JVennTemplate, ProgressBar) { + + 'use strict'; + + var defaultOptions = { + item_container_id: '-container', + PROGRESS_BAR_CONTAINER: '#analyse-pa-charts-progress-bar-holder', + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart', + VENN: 'venn' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new Charts Dashboard View + * Instantiates the FENIX dashboard submodule, ProgressBar and responsible for all charts dashboard related functionality. + * Including updates to the Dashboard model. + * @class ChartsDashboardView + * @extends View + */ + + var ChartsDashboardView = View.extend({ + + // DO NOT automatically render after initialize + autoRender: false, + + className: 'analyse-priority-analysis-dashboard-charts', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.topic = params.topic; + //this.model = params.model; + this.container = params.container; + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.dashboards = []; + + this.source = $(this.template).prop('outerHTML'); + + // console.log("INITIALIZE FOR "+this.topic); + //console.log(this.source) + //Initialize Progress Bar + this.progressBar = new ProgressBar({ + container: defaultOptions.PROGRESS_BAR_CONTAINER + }); + + + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + // this.el = this.container; + this._unbindEventListeners(); + + // Update the language related labels in the dashboard item configurations + for (var it in this.config.items) { + var item = this.config.items[it]; + this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + + $(this.container).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + this.compiledTemplate = Handlebars.compile(this.source); + var model = this.model.toJSON(); + + // Update the language related labels in the dashboard template + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels, i18nChartLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + var baseTemplate = HighchartsTemplate; + + // Sets Highchart config for each chart + _.each(this.config.items, _.bind(function (item) { + if (!_.isEmpty(item)) { + if (item.type == defaultOptions.itemTypes.CHART) { + if(item.config.type == defaultOptions.itemTypes.VENN){ + baseTemplate = JVennTemplate; + } + + if (item.config.config) { + item.config.config = $.extend(true, {}, baseTemplate, item.config.config); + } else { + item.config.config = $.extend(true, {}, baseTemplate); + } + } + } + + }, this)); + + + }, + + + + updateDashboardItemConfiguration: function (itemid, property, values) { + var item = _.filter(this.config.items, {id: itemid})[0]; + + if (item) { + if (item.config && item.config[property]) { + if(values[0] === 'false' || values[0] === 'true') + item.config[property] = $.parseJSON(values[0]); // returns a Boolean + else + item.config[property] = values[0]; + + } + } + }, + + renderDashboard: function () { + this.render(); + + this.config.el = this.container; + this.dashboard = new Dashboard(this.config); + + this._bindEventListeners(); + this._loadProgressBar(); + }, + + + clear: function () { + this.container.empty(); + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + if (props) { + if (props["oda"]) + this.config.uid = props["oda"]; + + } + }, + + _updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + }, + + + + getDashboardConfig: function () { + return this.config; + }, + + + + + _loadProgressBar: function () { + var self = this, increment = 0, percent = Math.round(100 / this.config.items.length); + + this.progressBar.reset(); + this.progressBar.show(); + + + this.dashboard.on('ready', function () { + self.progressBar.finish(); + // amplify.publish(BaseEvents.DASHBOARD_ON_READY); + }); + + + this.dashboard.on('ready.item', function () { + increment = increment + percent; + self.progressBar.update(increment); + }); + + + }, + + + _bindEventListeners: function () { + + }, + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + // console.log("======================== DISPOSE ME CHARTS================="); + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return ChartsDashboardView; +}); diff --git a/src/js/views/analyse/priority_analysis/dashboard-priorities-view.js b/src/js/views/analyse/priority_analysis/dashboard-priorities-view.js new file mode 100644 index 00000000..e3539add --- /dev/null +++ b/src/js/views/analyse/priority_analysis/dashboard-priorities-view.js @@ -0,0 +1,539 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/priority_analysis/priorities-dashboard.hbs', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/analyse', + 'i18n!nls/analyse-priority-analysis', + 'config/analyse/priority_analysis/Events', + 'config/submodules/fx-chart/jvenn_template', + 'config/analyse/priority_analysis/config-priority-analysis', + 'views/common/progress-bar', + 'handlebars', + 'lib/config-utils', + 'amplify' +], function ($, _, View, template, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, BaseEvents, JVennTemplate, BasePriorityAnalysisConfig, ProgressBar, Handlebars, ConfigUtils) { + + 'use strict'; + + var defaultOptions = { + container: '-container', + PROGRESS_BAR_CONTAINER: '#analyse-pa-priorities-progress-bar-holder', + paths: { + TABLE_ITEM: 'views/analyse/priority_analysis/table-item' + }, + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart', + VENN: 'venn' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new PrioritiesView, which is composed of a custom Table and Venn Chart + * Instantiates the FENIX dashboard submodule and responsible for the priorities dashboard related functionality. + * @class TableView + * @extends View + */ + + var PrioritiesView = View.extend({ + + // Automatically render after initialize + autoRender: false, + + className: 'dashboard-priorities', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.topic = params.topic; + + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.dashboards = []; + + this.source = $(this.template).prop('outerHTML'); + + //Initialize Progress Bar + this.progressBar = new ProgressBar({ + container: defaultOptions.PROGRESS_BAR_CONTAINER + }); + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + this.setElement(this.container); + this._unbindEventListeners(); + + // Update the language related labels in the item configurations (charts) + for (var it in this.config.items) { + var item = this.config.items[it]; + // this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + $(this.el).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + + // Update the language related labels in the dashboard template + + this.compiledTemplate = Handlebars.compile(this.source); + + var model = this.model.toJSON(); + + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + var baseTemplate = JVennTemplate; + + // Sets Highchart config for each chart + _.each(this.config.items, _.bind(function (item) { + if (!_.isEmpty(item)) { + if (item.type == defaultOptions.itemTypes.CHART) { + if (item.config.config) { + item.config.config = $.extend(true, {}, baseTemplate, item.config.config); + } else { + item.config.config = $.extend(true, {}, baseTemplate); + } + } + } + + }, this)); + + + }, + + + updateDashboardItemConfiguration: function (itemid, property, values) { + var item = _.filter(this.config.items, {id: itemid})[0]; + + if (item) { + if (item.config && item.config[property]) { + if (values[0] === 'false' || values[0] === 'true') + item.config[property] = $.parseJSON(values[0]); // returns a Boolean + else + item.config[property] = values[0]; + + } + } + }, + + renderDashboard: function () { + var self = this; + + this.config.el = this.$el; + + if(this.config.items.length > 0) + this.config.items[0].config.topic = this.topic; + + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: 'views/analyse/priority_analysis/table-item' + } + }; + + this.dashboard = new Dashboard(this.config); + + this._bindEventListeners(); + + this._loadProgressBar(); + + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.container; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + + if (props) { + + this._updateItems(props); + + if (props["oda"]) + this.config.uid = props["oda"]; + + } + }, + + /*_updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config ) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + },*/ + + rebuildDashboard: function (filter, topic, props) { + var self = this; + + this._disposeDashboards(); + this.config.filter = filter; + + + if(props) + this._updateItems(props); + + /* if(selections) { + + var keys; + // find item + for (var idx in selections) { + var item = selections[idx]; + + if(_.contains(Object.keys(item), BasePriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED)){ + keys = item; + } + + this._updateDashboardItem(BasePriorityAnalysisConfig.items.VENN_DIAGRAM, item); + } + + if(keys) { + var fao = {fao: keys[BasePriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED]}; + this._updateDashboardItem(BasePriorityAnalysisConfig.items.VENN_DIAGRAM, fao); + + // set recipient selection info on table config, to understand selection status + this.config.items[0].config.selections = keys; + } + + }*/ + + // Re-Render the source template + if (topic) { + this.topic = topic; + this.source = $(this.template).prop('outerHTML'); + this.render(); + } + + + if(this.config.items.length > 0) + this.config.items[0].config.topic = this.topic; + + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: defaultOptions.paths.TABLE_ITEM + } + }; + + // Build new dashboard + this.dashboard = new Dashboard(this.config); + + + // Bind the events + this._bindEventListeners(); + + // Load Progress bar + this._loadProgressBar(); + + }, + + + _updateItems: function(props){ + + var selectionsObj = _.find(props, function(obj){ + if(obj['selections']) + return obj; + }); + + if (selectionsObj) { + var selections = selectionsObj['selections']; + var keys; + // find item + for (var idx in selections) { + var item = selections[idx]; + + if(_.contains(Object.keys(item), BasePriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED)){ + keys = item; + } + + this._updateDashboardItem(BasePriorityAnalysisConfig.items.VENN_DIAGRAM, item); + } + + if(keys) { + var fao = {fao: keys[BasePriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED]}; + this._updateDashboardItem(BasePriorityAnalysisConfig.items.VENN_DIAGRAM, fao); + + // set recipient selection info on table config, to understand selection status + this.config.items[0].config.selections = keys; + } + } + }, + + getDashboardConfig: function () { + return this.config; + }, + + + _updateDashboardItem: function(itemid, props){ + + for(var idx in props){ + var type = idx; + var value = props[idx]; + + // find item + var item = _.find(this.config.items, function(o){ + return o.id === itemid; + }); + + // update the process + if(item) { + var process = _.filter(item.postProcess, function(obj){ + return obj.rid && obj.rid.uid === type; + }); + + // update the indicator value + if(process && process.length === 1) + var label = value; + if(i18nDashboardLabels[value]) + label = i18nDashboardLabels[value]; + + process[0].parameters.value = i18nDashboardLabels[type] + ' ('+ label +')'; + } + + } + }, + + + _loadProgressBar: function () { + + this.progressBar.reset(); + this.progressBar.show(); + + }, + + + _bindEventListeners: function () { + + var self = this, increment = 0, percent = Math.round(100 / this.config.items.length); + + + this.dashboard.on('ready', function () { + self.progressBar.finish(); + }); + + this.dashboard.on('ready.item', function () { + increment = increment + percent; + self.progressBar.update(increment); + }); + + this.dashboard.on('click.item', function (values) { + + // reset others + $("div[id^='resultC']").css('color', 'black'); + + //set selected + $(values.selected).css('color', 'red'); + + var listnames = values.listnames; + var list = values.list; + var series = values.series; + + var title = ""; + if (listnames.length == 1) { + title += i18nDashboardLabels.prioritiesOnlyIn + " "; + } else { + title += i18nDashboardLabels.commonPrioritiesIn + " "; + } + + // get first list + var firstList = listnames[0]; + + // find associated series code/label list + var seriesCodeLabels= _.find(series,function(rw){ + return rw.name == firstList; + }); + + // title + var count = 0; + for (var name in listnames) { + title += listnames[name]; + + if(count < listnames.length-2){ + title += ", "; + } + + if(count == listnames.length - 2){ + title += " "+i18nDashboardLabels.and + " "; + } + + count++; + } + + $('#'+values.id+'-title').html(title); + + // priorities list + var value = ""; + var codes = []; + var codeGroups = []; + if (seriesCodeLabels) { + for (var val in list) { + var label = list[val]; + var id = seriesCodeLabels.codelist.find(function(o){ + if (o.title=== label) { + return o; + } + }).id; + + + codes.push(id); + + var codeGrp = id.substring(0, 2); + + if($.inArray(codeGrp, codeGroups) === -1) { + codeGroups.push(codeGrp); + if(codeGroups.length > 1){ + value += "\n"; + } + } + + //value += label + " - " + id+ "\n"; + value += label + "\n"; + + } + } + + // No priorities + if(value.length === 0){ + value = i18nDashboardLabels.none; + } + + + $('#'+values.id+'-info').val(value); + + if(codes.length > 0) { + amplify.publish(BaseEvents.VENN_ON_CHANGE,{values: {purposecode: codes}}); + } else { + amplify.publish(BaseEvents.VENN_NO_VALUES); + } + + }); + }, + + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return PrioritiesView; +}); diff --git a/src/js/views/analyse/priority_analysis/filter-view.js b/src/js/views/analyse/priority_analysis/filter-view.js new file mode 100644 index 00000000..2a045b65 --- /dev/null +++ b/src/js/views/analyse/priority_analysis/filter-view.js @@ -0,0 +1,745 @@ +define( + [ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/analyse/priority_analysis/filters.hbs', + 'i18n!nls/filter', + 'fx-filter/start', + 'fx-common/utils', + 'lib/utils', + 'config/Config', + 'config/analyse/priority_analysis/config-priority-analysis', + 'config/analyse/partner_matrix/Events', + 'amplify' + ], function ($, _, View, template, i18nLabels, Filter, FxUtils, Utils, BaseConfig, PriorityAnalysisConfig, BaseEvents, amplify) { + + 'use strict'; + + var s = { + css_classes: { + FILTER_ANALYSE_PRIORITY_ANALYSIS: "#filter-analyse-priority-analysis" + }, + exclusions: { + ALL: 'all' + }, + range: { + FROM: 'from', + TO: 'to' + } + }; + + + /** + * Creates a new Filter View. + * Instantiates the FENIX filter submodule and responsible for all filter related functionality. + * @class FilterView + * @extends View + */ + var FilterView = View.extend({ + /** @lends FilterView */ + + // Automatically render after initialize + autoRender: true, + + className: 'filter-analyse-priority-analysis', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.config = params.config; + + View.prototype.initialize.call(this, arguments); + }, + + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + this._buildFilters(); + }, + + + /** + * Updates filter configuration and renders the filter. + * @private + */ + _buildFilters: function () { + var self = this; + + + var filterConfig = this._getUpdatedFilterConfig(); + + if (!_.isEmpty(filterConfig)) { + this.$el.find(s.css_classes.FILTER_ANALYSE_PRIORITY_ANALYSIS).show(); + this._renderFilter(filterConfig); + } else { + this.$el.find(s.css_classes.FILTER_ANALYSE_PRIORITY_ANALYSIS).hide(); + } + }, + + /** + * + * Instantiates the FENIX Filter Sub Module with the configuration and sets the Filter Event Handlers + * @param config + * @private + */ + _renderFilter: function (config) { + var self = this; + + // dispose of filter + if (this.filter && $.isFunction(this.filter.dispose)) { + this.filter.dispose(); + } + + // instantiate new filter + this.filter = new Filter({ + el: this.$el.find(s.css_classes.FILTER_ANALYSE_PRIORITY_ANALYSIS), + environment: BaseConfig.ENVIRONMENT, + items: config, + common: { + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + }); + + + + // Set filter event handlers + // Filter on Ready: Set some additional properties based on the current selections then publish Filter Ready Event + // SELECTED_TOPIC Property - based on the Recipient Country and Resource Partner selections + // ODA Property - based on the ODA selection, then publish Filter Ready Event + this.filter.on('ready', function () { + + // For the Recipient Country or resource Partner set the topic and properties + if (self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY] || self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER]) { + + var recipientValue = self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0]; + var partnerValue = self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0]; + var selections = [], topic, topicProps, properties; + + if (recipientValue === 'all') { + selections = []; + + // FROM FILTER: ALL resource partners selected + if (partnerValue === 'all') { + // --> All partners + All recipients + selections = []; + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + } + // FROM FILTER: 1 resource partner selected + else { + // --> 1 partner + All recipients + topic = PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER_SELECTED))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + } + } + // FROM FILTER: 1 Recipient Country selected + else { + selections = []; + + // All resource partners selected + if (partnerValue === 'all') { + // --> All partner + 1 recipient + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + } + // 1 resource partners selected + else { + // --> 1 partner + 1 recipient + topic = PriorityAnalysisConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + } + } + + topicProps = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, topic); + properties = [topicProps, {selections: selections}]; + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": properties})); + } + // For ODA set its value to the props object + else if (self._getFilterValues().values[BaseConfig.SELECTORS.ODA]) { + var additionalProperties = self._getPropertiesObject(BaseConfig.SELECTORS.ODA, self._getFilterValues().values[BaseConfig.SELECTORS.ODA].enumeration[0]); + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + } + + + /* //=================================================================================== + + // For the Recipient Country, set the topic as RECIPIENT_COUNTRY_SELECTED + if (self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY]) { + var selected = []; + selected.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + var selectedTopic = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED); + + // If both the Recipient Country and Resource Partner selected, set the topic as RECIPIENT_AND_PARTNER_SELECTED + if (self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER]) { + selectedTopic = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, PriorityAnalysisConfig.topic.RECIPIENT_AND_PARTNER_SELECTED); + selected.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + } + + var additionalProps = [selectedTopic, {selections: selected}]; + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProps})); + + } + // If Resource Partner selected, set the topic as RESOURCE_PARTNER_SELECTED + else if (self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER]) { + + var selected = []; + selected.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + var selectedTopic = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED); + + // If both the Recipient Country and Resource Partner selected, set the topic as RECIPIENT_AND_PARTNER_SELECTED + if (self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY]) { + selectedTopic = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, PriorityAnalysisConfig.topic.RECIPIENT_AND_PARTNER_SELECTED); + selected.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + + } + + var additionalProps = [selectedTopic, {selections: selected}]; + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + + } + // For ODA set its value to the props object + else if (self._getFilterValues().values[BaseConfig.SELECTORS.ODA]) { + var additionalProperties = self._getPropertiesObject(BaseConfig.SELECTORS.ODA, self._getFilterValues().values[BaseConfig.SELECTORS.ODA].enumeration[0]); + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + } + else { + amplify.publish(BaseEvents.FILTER_ON_READY, self._getFilterValues()); + } +*/ + }); + + + + this.filter.on('click', function (payload) { + + var filterItem = self.$el.find("[data-selector="+payload.id+"]")[0]; + var selectize = $(filterItem).find("[data-role=dropdown]")[0].selectize; + selectize.clear(true); + + }); + + + // Filter on Change: Set some base properties for Recipient and the ODA, then publish Filter On Change Event + this.filter.on('change', function (payload) { + + //console.log("FILTER ALL =========="); + //console.log(payload.values.values); + + var topic, selections = [], topicProps, properties; + + var fc = self._getFilterConfigById(payload.id); + var dependencies = []; + if (fc && fc.dependencies) { + for (var id in fc.dependencies) { + dependencies.push(id); + } + + payload["dependencies"] = dependencies; + } + + if (payload.id === BaseConfig.SELECTORS.YEAR_TO || payload.id === BaseConfig.SELECTORS.YEAR_FROM) { + var newRange = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + if (newRange) { + payload.id = BaseConfig.SELECTORS.YEAR; + payload.values.labels = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedLabels()); + payload.values.values = self._getObject(BaseConfig.SELECTORS.YEAR, self._getSelectedValues()); + } + + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + else if (payload.id === BaseConfig.SELECTORS.ODA) { + var additionalProperties = self._getPropertiesObject(BaseConfig.SELECTORS.ODA, payload.values.values[0]); + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + } + else if (payload.id === BaseConfig.SELECTORS.RECIPIENT_COUNTRY) { + if(payload.values.values.length > 0) { + + var partnerValue = self._getFilterValues().values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0]; + var payloadRecipientValue = payload.values.values[0]; + + // FROM FILTER VALUES: ALL Resource Partners selected + if (partnerValue === 'all') { + selections = []; + + // FROM PAYLOAD: ALL recipients are selected + if (payloadRecipientValue === 'all') { + // --> All recipient + All partners + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + + } + // FROM PAYLOAD: 1 recipients selected + else { + // --> 1 recipient + All partners + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + } + } + // FROM FILTER VALUES: 1 Resource Partner selected + else { + selections = []; + + // FROM PAYLOAD: All recipients are selected + if (payloadRecipientValue === 'all') { + // --> All recipient + 1 partner + topic = PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + + } + // FROM PAYLOAD: 1 recipient selected + else { + // --> 1 recipient + 1 partner + topic = PriorityAnalysisConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + } + } + + topicProps = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, topic); + properties = [topicProps, {selections: selections}]; + + //console.log("========================= FilterView: ON CHANGE COUNTRY ============== " + topic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": properties})); + } + + } + else if (payload.id === BaseConfig.SELECTORS.RESOURCE_PARTNER) { + + if(payload.values.values.length > 0) { + + var recipientValue = self._getFilterValues().values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0]; + var payloadPartnerValue = payload.values.values[0]; + + // FROM FILTER: ALL Recipients selected + if (recipientValue === 'all') { + selections = []; + + // FROM PAYLOAD: ALL resource partners selected + if (payloadPartnerValue === 'all') { + // --> All partners + All recipients + selections = []; + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + } + // FROM PAYLOAD: 1 resource partner selected + else { + // --> 1 partner + All recipients + topic = PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, PriorityAnalysisConfig.selections.ALL)); + } + } + // FROM FILTER: 1 Recipient Country selected + else { + selections = []; + + // All resource partners selected + if (payloadPartnerValue === 'all') { + // --> All partner + 1 recipient + topic = PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, PriorityAnalysisConfig.selections.ALL)); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + } + // 1 resource partners selected + else { + // --> 1 partner + 1 recipient + topic = PriorityAnalysisConfig.topic.RECIPIENT_AND_PARTNER_SELECTED; + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RESOURCE_PARTNER_SELECTED, self._getLabel(BaseConfig.SELECTORS.RESOURCE_PARTNER))); + selections.push(self._getPropertiesObject(PriorityAnalysisConfig.topic.RECIPIENT_COUNTRY_SELECTED, self._getLabel(BaseConfig.SELECTORS.RECIPIENT_COUNTRY))); + } + } + + topicProps = self._getPropertiesObject(PriorityAnalysisConfig.topic.SELECTED_TOPIC, topic); + properties = [topicProps, {selections: selections}]; + + //console.log("========================= FilterView: ON PARTNER ============== " + topic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": properties})); + + } + + } + else { + //console.log("========================= FilterView: ELSE ============== "+topic); + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + + }); + + + }, + /** + * Updates the filter configuration including setting the language related labels in the filter template + * Returns: Updated Configuration + * @returns {Object} updatedConf + * @private + */ + _getUpdatedFilterConfig: function () { + + var conf = $.extend(true, {}, this.config), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_"); + obj.template.headerIconTooltip = Utils.getI18nLabel(key, i18nLabels, "filter_tooltip_"); + + }, this)); + + return updatedConf; + }, + + /** + * Format the time range and ODA values + * @returns {Object} + * @private + */ + + + + _getFilterValues: function () { + + var timerange = { + values: {year: [{value: '', parent: s.range.FROM}, {value: '', parent: s.range.TO}]}, + labels: {year: {range: ''}} + }; + + var updatedValuesWithYear = {}, updatedValuesWithODA = {}, extendedValues = $.extend(true, {}, this.filter.getValues(), timerange); + + updatedValuesWithYear = this._processTimeRange(extendedValues); + + //updatedValuesWithODA = this._processODA(updatedValuesWithYear); + + return updatedValuesWithYear; + + }, + + /** + * Get the selected filter values + * @returns {Object} values + * @private + */ + + _getSelectedValues: function () { + return this._getFilterValues().values; + }, + + + /** + * Get the selected filter labels + * @returns {Object} labels + * @private + */ + _getSelectedLabels: function () { + return this._getFilterValues().labels; + }, + + + /** + * Get the filter configuration associated to the ID + * @param id + * @returns {Object} values + * @private + */ + + _getFilterConfigById: function (id) { + var filter; + + $.each(this.config, function (key, obj) { + if (key === id) { + return filter = obj; + } + }); + + return filter; + }, + + /** + * Get the full filter values object (consists of labels and values) + * @returns {Object} filterValues + */ + getFilterValues: function () { + + //console.log("FINAL getFilterValues ============ 1"); + + + var values = this._getFilterValues(); + + + //clear uid values + values.values["uid"] = []; + + values.values[BaseConfig.SELECTORS.YEAR_FROM] = []; + values.values[BaseConfig.SELECTORS.YEAR_TO] = []; + + + // if all values selected clear + if(values.values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY][0] === s.exclusions.ALL) { + values.values[BaseConfig.SELECTORS.RECIPIENT_COUNTRY] = []; + } + + // if all values selected clear + if(values.values[BaseConfig.SELECTORS.RESOURCE_PARTNER][0] === s.exclusions.ALL) { + values.values[BaseConfig.SELECTORS.RESOURCE_PARTNER] = []; + } + + //console.log("FINAL getFilterValues ============ END"); + // console.log(values); + + return values; + }, + + /** + * Clear Values for the filter id + * @param filterid + * @param values + * @returns {Object} values + */ + + clearFilterValue: function (filterid, values) { + + if (values.values[filterid]) { + values.values[filterid] = []; + } + + return values; + }, + + /** + * Process the time range so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processTimeRange: function (filter) { + + var year_from = filter.values[BaseConfig.SELECTORS.YEAR_FROM], year_to = filter.values[BaseConfig.SELECTORS.YEAR_TO]; + + //reformat to and from years + filter.values.year[0].value = year_from[0]; + filter.values.year[1].value = year_to[0]; + + filter.labels.year.range = year_from[0] + '-' + year_to[0]; + filter.labels[BaseConfig.SELECTORS.YEAR_FROM] = []; + filter.labels[BaseConfig.SELECTORS.YEAR_TO] = []; + + return filter; + }, + + + /** + * Process the ODA so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processODA: function (filter) { + + var enumeration = [], oda = filter.values[BaseConfig.SELECTORS.ODA][0]; + enumeration.push(oda); + + filter.values[BaseConfig.SELECTORS.ODA] = {}; + filter.values[BaseConfig.SELECTORS.ODA].enumeration = enumeration; + + + return filter; + }, + + + /** + * Process and get the filter values relevant to the OECD/ODA Dashboard + * @returns {Object} values + */ + + getOECDValues: function () { + + var values = this._getSelectedValues(); + + return this._updateValues(values); + }, + + + /** + * Check if values exist for the filter id + * @param filterid + * @returns {boolean} + */ + + hasValues: function (filterid) { + var values = this._getSelectedValues(); + return this._hasSelections(filterid, values); + }, + + + /** + * Get the values for the filter id + * @returns {Object} values + */ + getSelectedValues: function (filterId) { + var values = this._getSelectedValues(); + + var selectedValues = {}; + var itemSelected = this._hasSelections(filterId, values); + + if (itemSelected) { + selectedValues = values[filterId]; + //var filterObj = this._getObject(filterId, values); + //selectedValues = this._getSelected(filterObj); + } + + return selectedValues; + }, + + + /** + * Check if a filter has selections + * @param id + * @returns {*|boolean} + */ + isFilterSelected: function (id) { + var values = this._getSelectedValues(); + + + return this._hasSelections(id, values); + }, + + + + /** + * + * @param values + * @returns {*} + * @private + */ + _updateValues: function (values) { + + return values; + }, + + /** + * Check if filter id has selections + * @param id + * @param data + * @returns {boolean} + * @private + */ + _hasSelections: function (id, data) { + //console.log(id); + if (_.has(data, id)) { + if (data[id].length > 0) { + // if (_.has(data[id], 'codes')) { + return true; + } + } + }, + /** + * Get the Object from the data based on the id (key) + * @param id + * @param data + * @returns {*} + * @private + */ + _getObject: function (id, data) { + if (_.has(data, id)) { + if (data[id].length > 0 || !_.isEmpty(data[id])) { + // if (_.has(data[id], 'codes')) { + return data[id]; + } + } + }, + + + _getFilterConfig: function (id) { + //console.log(this.config); + + var filter = _.find(this.config, function (obj, key) { + + return key === id; + // return obj.components[0].id === id; + }); + + + return filter; + }, + + _hasProp: function (filter, prop) { + var hasProp = _.find(filter, function (obj) { + if (filter[prop]) { + return true; + } + }); + return hasProp; + }, + + getConfigPropValue: function (id, prop) { + + // console.log("===============getConfigPropValue "+id + ' | '+prop); + var filterValue; + var filterItem = this._getFilterConfig(id); + + // console.log(filterItem); + + if (this._hasProp(filterItem, prop)) + filterValue = filterItem[prop]; + + // console.log(filterValue); + return filterValue; + }, + + _getPropertiesObject: function (id, value) { + var additionalProperties = {}; + additionalProperties[id] = value; + + return additionalProperties; + }, + + + _getLabel: function (filterid) { + + var code = this._getFilterValues().values[filterid][0]; + var label = this._getFilterValues().labels[filterid][code]; + + return label; + }, + + + _unbindEventListeners: function () { + + }, + + dispose: function () { + this._unbindEventListeners(); + View.prototype.dispose.call(this, arguments); + } + + }); + + return FilterView; + }); diff --git a/src/js/views/analyse/priority_analysis/priority-analysis-view.js b/src/js/views/analyse/priority_analysis/priority-analysis-view.js new file mode 100644 index 00000000..9b0a4a2e --- /dev/null +++ b/src/js/views/analyse/priority_analysis/priority-analysis-view.js @@ -0,0 +1,504 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'jquery-ui', + 'views/base/view', + 'views/common/title-view', + 'views/analyse/priority_analysis/filter-view', + 'views/analyse/priority_analysis/dashboard-charts-view', + 'views/analyse/priority_analysis/dashboard-priorities-view', + 'models/analyse/dashboard', + 'models/analyse/table', + 'text!templates/analyse/priority_analysis/priority-analysis.hbs', + 'i18n!nls/analyse', + 'config/Events', + 'config/Config', + 'config/analyse/priority_analysis/Events', + 'config/analyse/priority_analysis/config-table', + 'config/analyse/priority_analysis/config-charts', + 'config/analyse/priority_analysis/config-priority-analysis', + 'config/analyse/priority_analysis/config-filter', + 'lib/utils', + 'amplify', + 'underscore' +], function ($, $UI, View, TitleSubView, FilterSubView, DashboardChartsSubView, DashboardPrioritiesSubView, DashboardModel, TableModel, template, i18nLabels, Events, GeneralConfig, BasePriorityAnalysisEvents, TableConfig, ChartsConfig, BasePriorityAnalysisConfig, BaseFilterConfig, Utils, amplify, _) { + + 'use strict'; + + var s = { + css_classes: { + TITLE_BAR_ITEMS: "#analyse-pa-fx-title-items", + FILTER_HOLDER: "#analyse-pa-filter-holder", + DASHBOARD_CHARTS_HOLDER: "#analyse-pa-charts-content", + DASHBOARD_PRIORITIES_HOLDER: "#analyse-pa-priorities-content" + }, + dashboardModel: { + LABEL: 'label' + }, + values: { + ALL: 'all' + }, + paths: { + VENN_CONFIG: 'config/analyse/priority_analysis/config-venn-' + } + }; + + + /** + * + * Creates a new Priority Analysis View View + * Resource Priority Analysis View comprises of a series of subviews: title view, filter view and 2 dashboard views (prioritiesDashboard and chartsDashboard) + * @class PriorityAnalysisView + * @extends View + */ + var PriorityAnalysisView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analyse-priority-analysis', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.analyse_type = params.filter; + this.topic = BasePriorityAnalysisConfig.dashboard.DEFAULT_TOPIC; + this.page = params.page; + this.datasetType = GeneralConfig.DEFAULT_UID; + + View.prototype.initialize.call(this, arguments); + }, + + getTemplateData: function () { + return i18nLabels; + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this.$el = $(this.el); + + //update State + amplify.publish(Events.STATE_CHANGE, {menu: 'analyse', breadcrumb: this._createMenuBreadcrumbItem()}); + + this._bindEventListeners(); + + }, + + render: function () { + View.prototype.render.apply(this, arguments); + + this._loadConfigurations(); + }, + + /** + * Based on the topic, which is determined by the current filter selections (see filter-view) + * the appropriate dashboard JS configuration files are loaded via requireJS + * @private + */ + _loadConfigurations: function () { + // require([s.paths.CHARTS_CONFIG + this.topic, s.paths.TABLE_CONFIG + this.topic], _.bind(this._initSubViews, this)); + require([s.paths.VENN_CONFIG + this.topic], _.bind(this._initSubViews, this)); + }, + + /** + * Initializes all sub views: Title, Filter, Priorities Dashboard and Charts Dashboard + * @param VennConfig Venn Item configuration + * @private + */ + + _initSubViews: function (VennConfig) { + + View.prototype.render.apply(this, arguments); + + // Filter Configuration + if (!BaseFilterConfig || !BaseFilterConfig.filter) { + alert("Impossible to find filter configuration for the topic: " + this.topic); + return; + } + + + // Charts Dashboard Configuration + if (!ChartsConfig || !ChartsConfig.dashboard) { + alert("Impossible to find CHARTS dashboard/filter configuration for the topic: " + this.topic); + return; + } + + // Table Dashboard Configuration + if (!TableConfig || !TableConfig.dashboard) { + alert("Impossible to find TABLE dashboard configuration for the topic: " + this.topic); + return; + } + + // Venn Configuration + if (!VennConfig || !VennConfig.dashboard) { + alert("Impossible to find VENN dashboard configuration for the topic: " + this.topic); + return; + } + + + this.chartsConfig = ChartsConfig; + + // Append Venn item to table Config + TableConfig.dashboard.items.push(VennConfig.dashboard.items[0]); + this.prioritiesConfig = TableConfig; + + // Set TITLE Sub View + var titleSubView = new TitleSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.TITLE_BAR_ITEMS), + title: i18nLabels.selections + }); + this.subview('title', titleSubView); + + // Set FILTER Sub View + var filtersSubView = new FilterSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.FILTER_HOLDER), + config: BaseFilterConfig.filter + }); + this.subview('filters', filtersSubView); + + // Set CHARTS DASHBOARD Model + this.chartsDashboardModel = new DashboardModel(); + + /* // Set CHARTS DASHBOARD Sub View + var dashboardChartsSubView = new DashboardChartsSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_CHARTS_HOLDER), + topic: this.topic, + model: this.chartsDashboardModel + }); + dashboardChartsSubView.setDashboardConfig(this.chartsConfig.dashboard); + this.subview('chartsDashboard', dashboardChartsSubView);*/ + + // Set TABLE DASHBOARD Model + this.prioritiesDashboardModel = new TableModel(); + + // Set DASHBOARD Table Sub View + var dashboardPrioritiesSubView = new DashboardPrioritiesSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_PRIORITIES_HOLDER), + topic: this.topic, + model: this.prioritiesDashboardModel + }); + dashboardPrioritiesSubView.setDashboardConfig(this.prioritiesConfig.dashboard); + this.subview('prioritiesDashboard', dashboardPrioritiesSubView); + + }, + + /** + * Create the Menu breadcrumb item for the page + * @private + */ + _createMenuBreadcrumbItem: function () { + var label = ""; + var self = this; + + if (typeof self.analyse_type !== 'undefined') { + label = i18nLabels[self.analyse_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.analyse_type, self.page); + }, + + + _bindEventListeners: function () { + amplify.subscribe(BasePriorityAnalysisEvents.FILTER_ON_READY, this, this._filtersLoaded); + amplify.subscribe(BasePriorityAnalysisEvents.FILTER_ON_CHANGE, this, this._filtersChanged); + amplify.subscribe(BasePriorityAnalysisEvents.VENN_ON_CHANGE, this, this._renderChartsDashboards); + amplify.subscribe(BasePriorityAnalysisEvents.VENN_NO_VALUES, this, this._clearChartsDashboards); + }, + + /** + * When the filters have all loaded the TitleView is built using the currently selected filter values + * and the dashboards are rendered + * @param payload Selected Filter Items + * @private + */ + _filtersLoaded: function (payload) { + + var selectedFilterItems = payload.labels; + + // Set topic and set Dashboard Properties + if (payload['props']) { + + var selectedTopicObj = _.find(payload['props'], function(obj){ + if(obj['selected_topic']) + return obj; + }); + + if (selectedTopicObj) { + this.topic = selectedTopicObj["selected_topic"]; + } + + this.subview('prioritiesDashboard').setProperties(payload["props"]); + } + + + // Build Title View + this.subview('title').setLabels(selectedFilterItems); + this.subview('title').build(); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + //this._updateChartsDashboardModelValues(); + this._updatePrioritiesDashboardModelValues(); + + // Render each Dashboard + // this.subview('chartsDashboard').renderDashboard(); + this.subview('prioritiesDashboard').renderDashboard(); + + }, + + + /** + * When a filter selection changes the view is updated + * @param changedFilter The filter which has changed + * @private + */ + _filtersChanged: function (changedFilter) { + + if(this.subview('chartsDashboard')) { + this.subview('chartsDashboard').clear(); + } + + var allFilterValues = this.subview('filters').getFilterValues(); + + this._updateView(changedFilter, allFilterValues); + + }, + + + _clearChartsDashboards: function () { + if(this.subview('chartsDashboard')) { + this.subview('chartsDashboard').clear(); + } + }, + + + /** + * Each Dashboard and Title Sub View is rebuilt/refreshed + * @param changedFilter The filter which has changed + * @param allFilterValues All (selected) filter values + * @private + */ + + _updateView: function (changedFilter, allFilterValues) { + + var filterValues = allFilterValues; + + // console.log("================= filter values =============== "); + // console.log(filterValues); + + //console.log("================= selectedfilter =============== "); + //console.log(changedFilter); + + if (changedFilter) { + + var topic = this.topic, selections; + + // If the changed filter has a value + if (changedFilter.values.values.length > 0) { + + // Get topic + if (changedFilter['props']) { + + var selectedTopicObj = _.find(changedFilter['props'], function(obj){ + if(obj['selected_topic']) + return obj; + }); + + if (selectedTopicObj) { + topic = selectedTopicObj["selected_topic"]; + } + + } + + // All is selected + if (changedFilter.values.values[0] === s.values.ALL) { + + // Update the TitleView (Remove Item) + amplify.publish(Events.TITLE_REMOVE_ITEM, changedFilter.id); + + } else { + // Update the TitleView (Add Item) + amplify.publish(Events.TITLE_ADD_ITEM, this._createTitleItem(changedFilter)); + } + + this._getDashboardConfiguration(topic, filterValues, changedFilter['props']); + } + + } + + }, + + + _renderChartsDashboards: function (newValues) { + + //console.log("================= _renderChartsDashboards =============== "); + + var filterValues = this.subview('filters').getFilterValues(), filterDerivedTopic; + + + var extendedFilterValues = $.extend(true, filterValues, newValues); + + // console.log("======================================= filterValues "); + // console.log(filterValues); + // console.log("======================================= extendedFilterValues"); + //console.log(extendedFilterValues); + + + // Set CHARTS DASHBOARD Sub View + this.chartsConfig.dashboard.filter = extendedFilterValues; + + + var dashboardChartsSubView = new DashboardChartsSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_CHARTS_HOLDER), + topic: this.topic, + model: this.chartsDashboardModel + }); + dashboardChartsSubView.setDashboardConfig(this.chartsConfig.dashboard); + this.subview('chartsDashboard', dashboardChartsSubView); + + this._updateChartsDashboardModelValues(); + this.subview('chartsDashboard').renderDashboard(); + + + // this.subview('chartsDashboard').setDashboardConfig(this.chartsConfig.dashboard); + //this.subview('chartsDashboard').renderDashboard(this.topic); + + + //console.log("================= selectedfilter =============== "); + // console.log(selectedfilter); + + + }, + + /** + * Get the appropriate Dashboard JS configuration file via requireJS, if the topic has changed + * @param topic + * @param filterValues + * @private + */ + _getDashboardConfiguration: function (topic, filterValues, props) { + var self = this; + // console.log("================= _getDashboardConfiguration Start =============== "); + //console.log(filtervalues); + + // If the topic has changed, rebuild dashboards with new configuration + if (topic !== this.topic) { + // Re set the current topic + this.topic = topic; + + //Load new configuration files + require([s.paths.VENN_CONFIG + topic], function (TopicVennConfig) { + + self.chartsConfig = ChartsConfig; + + + var venn = _.find(self.prioritiesConfig.dashboard.items, function(o){ + return o.id === BasePriorityAnalysisConfig.items.VENN_DIAGRAM; + }); + + if(venn) { + self.prioritiesConfig.dashboard.items.pop(); + } + + self.prioritiesConfig.dashboard.items.push(TopicVennConfig.dashboard.items[0]); + + + // Rebuild dashboards with new configurations + self._rebuildDashboards(filterValues, self.prioritiesConfig.dashboard, props); + }); + } + else { + // Rebuild dashboards with existing configurations + self._rebuildDashboards(filterValues, self.subview('prioritiesDashboard').getDashboardConfig(), props); + } + }, + + /** + * Rebuild the dashboards + * @param filterValues + * @param prioritiesDashboardConfig + * @private + */ + + _rebuildDashboards: function (filterValues, prioritiesDashboardConfig, props) { + + //console.log("================= _rebuildDashboards 1 =============== "); + //console.log(dashboardConfig); + + // Set Dashboard Configuration + // this.subview('chartsDashboard').setDashboardConfig(chartsDashboardConfig); + this.subview('prioritiesDashboard').setDashboardConfig(prioritiesDashboardConfig); + + // Update Dashboard Models (with labels - see _updateChartsDashboardModelValues) + // this._updateChartsDashboardModelValues(); + this._updatePrioritiesDashboardModelValues(); + + + //console.log("================= _rebuildDashboard 3 =============== "); + // console.log(ovalues); + + // Rebuild Dashboards + // this.subview('chartsDashboard').rebuildDashboard(filterValues, this.topic); + this.subview('prioritiesDashboard').rebuildDashboard(filterValues, this.topic, props); + }, + + + /** + * Create the Title Item (from the filterItem's id and label) + * @param filterItem + * @private + */ + + _createTitleItem: function (filterItem) { + + var titleItem = {}, labels = filterItem.values.labels; + + titleItem.id = filterItem.id; + + var key = Object.keys(labels)[0]; + titleItem.label = labels[key]; + + return titleItem; + }, + + _unbindEventListeners: function () { + // Remove listeners + amplify.unsubscribe(BasePriorityAnalysisEvents.FILTER_ON_READY, this._filtersLoaded); + amplify.unsubscribe(BasePriorityAnalysisEvents.FILTER_ON_CHANGE, this._filtersChanged); + amplify.unsubscribe(BasePriorityAnalysisEvents.FILTER_ON_CHANGE, this._renderChartsDashboards); + + }, + + + _updateChartsDashboardModelValues: function () { + this.chartsDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getItemText("year")); + }, + + _updatePrioritiesDashboardModelValues: function () { + //console.log(this.subview('title').getTitleAsArray()); + + this.prioritiesDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getItemText("recipientcode")); + }, + + + dispose: function () { + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return PriorityAnalysisView; +}); diff --git a/src/js/views/analyse/priority_analysis/table-item.js b/src/js/views/analyse/priority_analysis/table-item.js new file mode 100644 index 00000000..7259846b --- /dev/null +++ b/src/js/views/analyse/priority_analysis/table-item.js @@ -0,0 +1,347 @@ +/*global define, Promise, amplify */ + +define([ + "jquery", + "loglevel", + 'underscore', + 'fx-dashboard/config/errors', + 'fx-dashboard/config/events', + 'fx-dashboard/config/config', + 'text!templates/analyse/priority_analysis/table-item.hbs', + 'fx-table/start', + 'fx-filter/start', + 'fx-common/pivotator/fenixtool', + 'lib/utils', + 'i18n!nls/table', + 'i18n!nls/filter', + 'fx-common/utils', + 'handlebars', + 'amplify' +], function ($, log, _, ERR, EVT, C, Template, OlapCreator, Filter, FenixTool, Utils, i18nTableLabels, i18nLabels, FxUtils, Handlebars) { + + 'use strict'; + + var Model; + + var s = { + ids: { + TABLE: "#table", + TABLE_SIZE: "#table-size", + TABLE_SOURCE: "#table-source", + CPF: "#cpf", + UNDAF: "#undaf" + }, + LINKS_BASE_URL: "http://fenix.fao.org/demo/adam-docs/cpf-undaf/", + CPF: "CPF", + UNDAF: "UNDAF" + }; + + var defaultOptions = {}; + + /** + * + * Returns a customised item for the Table Dashboard View + * Formats the payload and renders the table template + * @class TableItem + */ + + function TableItem(o) { + + var self = this; + this.model = {}; + + $.extend(true, this, defaultOptions, o); + this.$el = $(this.el); + + this._renderTemplate(); + + this._initVariables(); + + this._render(); + + this._bindEventListeners(); + + //force async execution + window.setTimeout(function () { + self.status.ready = true; + amplify.publish(self._getEventName(EVT.SELECTOR_READY), self); + self._trigger("ready"); + }, 0); + + return this; + } + + /** + * Disposition method + * Mandatory method + */ + TableItem.prototype.dispose = function () { + + this._dispose(); + + log.info("Selector disposed successfully"); + + }; + + /** + * refresh method + * Mandatory method + */ + TableItem.prototype.refresh = function () { + + log.info("Item refresh successfully"); + + }; + + /** + * pub/sub + * @return {Object} component instance + */ + TableItem.prototype.on = function (channel, fn, context) { + var _context = context || this; + if (!this.channels[channel]) { + this.channels[channel] = []; + } + this.channels[channel].push({context: _context, callback: fn}); + + return this; + }; + + TableItem.prototype._trigger = function (channel) { + + if (!this.channels[channel]) { + return false; + } + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0, l = this.channels[channel].length; i < l; i++) { + var subscription = this.channels[channel][i]; + subscription.callback.apply(subscription.context, args); + } + + return this; + }; + + TableItem.prototype._getStatus = function () { + return this.status; + }; + + TableItem.prototype._renderTemplate = function () { + this.indicatortemplate = Handlebars.compile(Template); + + var data = $.extend(true, {data: this.model}, i18nTableLabels); + var html = this.indicatortemplate(data); + + $(this.el).html(html); + }; + + TableItem.prototype._initVariables = function () { + + this.fenixTool = new FenixTool(); + + //Init status + this.status = {}; + + // pub/sub + this.channels = {}; + + //TODO + }; + + TableItem.prototype._render = function () { + + // this.controller._trigger('table_ready', {data: {size: this.model.size}}); + + if (this.model.size > 0) { + var metadata = this.model.metadata.dsd.columns; + + this._processPayload(); + + if(this.config.selections) { + if(this.config.selections.recipient !== 'all'){ + this._processSource(); + } + } + else { + this._processSource(); + } + + } else { + $(this.el).find(ids.TABLE_SIZE).html(0); + } + + }; + + + TableItem.prototype._processPayload = function () { + + + this.config.model = this.model; + this.config.el = s.ids.TABLE; + + for (var d in this.config.derived) { + this.config.aggregations.push(d); + } + + this.olap = new OlapCreator(this.config); + + //console.log("============ ROWS ============="); + //console.log(this.olap); + + //for(var key in this.olap){ + // console.log(key); + // } + + }; + + TableItem.prototype._processSource = function () { + + this.config.model = this.model; + + + var colIdxCpf; + var colIdxUndaf; + var colIdxRecipient; + + for(var col in this.config.model.metadata.dsd.columns){ + var id = this.config.model.metadata.dsd.columns[col].id; + + if(id === 'cpf_period'){ + colIdxCpf = col; + } + + if(id === 'undaf_period'){ + colIdxUndaf = col; + } + + if(id === 'recipientcode_'+Utils.getLocale()){ + colIdxRecipient = col; + } + } + + + var cpfPeriod = _.chain(this.config.model.data).filter(function (x) { return x[colIdxCpf]!== 'NA' }).first().value(); + var undafPeriod = _.chain(this.config.model.data).filter(function (x) { return x[colIdxUndaf]!== 'NA'}).first().value(); + var recipient = _.chain(this.config.model.data).filter(function (x) { return x[colIdxRecipient]!== 'NA' }).first().value(); + + + if(cpfPeriod && cpfPeriod[colIdxCpf]) { + cpfPeriod = cpfPeriod[colIdxCpf]; + } else { + cpfPeriod = "" + } + + if(undafPeriod && undafPeriod[colIdxUndaf]) { + undafPeriod =undafPeriod[colIdxUndaf]; + } else { + undafPeriod = "" + } + + if(recipient && recipient[colIdxRecipient]) { + recipient = recipient[colIdxRecipient]; + } else { + recipient = "" + } + + this._createLink(recipient, cpfPeriod, s.CPF); + this._createLink(recipient, undafPeriod, s.UNDAF); + + }; + + + TableItem.prototype._createLink = function (recipient, period, type) { + + var self = this; + + $.ajaxPrefilter(function(options){ + if(options.crossDomain && $.support.cors) { + var http = (window.location.protocol === 'http:' ? 'http:' : 'https:'); + options.url = http + '//cors-anywhere.herokuapp.com/'+options.url; + + } + }); + + var text = recipient + ' '+ s[type]+' ' + period ; + var filename = recipient + '_'+ s[type]+'_'+period+".pdf"; + var link = s.LINKS_BASE_URL+filename; + + $.ajax({ + url: link, + type: 'HEAD', + error: function(){ + $(self.el).find(s.ids.TABLE_SOURCE).find(s.ids[type]).html(text); + }, + success: function(){ + $(self.el).find(s.ids.TABLE_SOURCE).find(s.ids[type]).html(""+text+""); + } + }); + + }; + + TableItem.prototype._getUpdatedFilterConfig = function (items) { + var conf = $.extend(true, {}, items), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_" + this.topic + "_"); + + }, this)); + + return updatedConf; + + }; + + TableItem.prototype._getOlapConfigFromFilter = function () { + var values = this.filter.getValues(); + var groupedRow = false; + + if (values.values.groupedRow.length > 0) { + groupedRow = true; + } + + this.config.groupedRow = groupedRow; + + return this.config; + + }; + + + TableItem.prototype._destroyCustomItem = function () { + //TODO + log.info("Destroyed Custom: " + this.id); + }; + + TableItem.prototype._bindEventListeners = function () { + var self = this; + + this.olap.on('ready', function () { + var rowSize = this.olap.model.rows.length; + $(self.el).find(s.ids.TABLE_SIZE).html(rowSize); + }); + }; + + TableItem.prototype._unbindEventListeners = function () { + //TODO + }; + + TableItem.prototype._dispose = function () { + + this._unbindEventListeners(); + + this._destroyCustomItem(); + + }; + + TableItem.prototype._getEventName = function (evt) { + + return this.controller.id + evt; + }; + + return TableItem; + +}); \ No newline at end of file diff --git a/src/js/views/analyse/projects/projects-view.js b/src/js/views/analyse/projects/projects-view.js new file mode 100644 index 00000000..569c4b99 --- /dev/null +++ b/src/js/views/analyse/projects/projects-view.js @@ -0,0 +1,422 @@ +/*global define, amplify*/ +define([ + 'views/base/view', + 'fx-ds/start', + 'fx-filter/start', + 'text!templates/analyse/projects/projects.hbs', + 'text!templates/analyse/projects/dashboard.hbs', + 'i18n!nls/projects', + 'config/Events', + 'config/Config', + 'config/analyse/projects/Config', + 'fx-filter/Fx-filter-configuration-creator', + 'handlebars', + 'lib/utils', + 'q', + 'amplify', + 'select2', + 'jstree', + 'highcharts-export' + +], function (View, Dashboard, Filter, template, projectsDashboardTemplate, i18nLabels, E, C, ProjectsConfig, FilterConfCreator, Handlebars, Utils, Q) { + + 'use strict'; + + var s = { + css_classes: { + TOPIC_CONTENT_PROJECTS: "#projects-topic-content", + FILTER_PROJECTS: "filter-projects", + FILTER_SUBMIT_PROJECTS: "#filter-submit-btn-projects", + + DASHBOARD_PROJECTS_CONTAINER: '#dashboard-adam-container' + }, + events: { + SECTOR_LIST_CHANGE: 'fx.filter.list.change.sectorcode', + UID_LIST_CHANGE: 'fx.filter.list.change.uid' + }, + datasetChanged: false, + datasetType: {"uid": "adam_usd_commitment"} + }; + + var ProjectsView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'analysis', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.analyze_type = params.filter; + this.page = params.page; + this.datasetChanged = s.datasetChanged; + this.datasetType = s.datasetType; + + View.prototype.initialize.call(this, arguments); + }, + + getTemplateData: function () { + return i18nLabels; + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + //update State + amplify.publish(E.STATE_CHANGE, {menu: 'analyse', breadcrumb: this._initMenuBreadcrumbItem()}); + + this._initVariables(); + + this._bindEventListeners(); + + this._showProjectsTopic(this.analyze_type); + + }, + + _initMenuBreadcrumbItem: function() { + var label = ""; + var self = this; + + + if (typeof self.analyze_type !== 'undefined') { + label = i18nLabels[self.analyze_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.analyze_type, self.page); + }, + + _initVariables: function () { + this.$topicContentProjects = this.$el.find(s.css_classes.TOPIC_CONTENT_PROJECTS); + + this.$filterSubmitProjects = this.$el.find(s.css_classes.FILTER_SUBMIT_PROJECTS); + + + }, + + _bindEventListeners: function () { + + var self = this; + + amplify.subscribe(s.events.SECTOR_LIST_CHANGE, this, this._onSectorChange); + + amplify.subscribe(s.events.UID_LIST_CHANGE, this, this._onDatasetChange); + + this.$filterSubmitProjects.on('click', function (e, data) { + + var filter = {}; + var values = self.filterProjects.getValues(); + var sectorcodeObj = self._getObjectByValue('9999',values); + + // Set Sectors to crs_sectors + if(!this._hasNoSelections('sectorcode', values)){ + values['sectorcode'].codes[0].uid = 'crs_sectors'; + } + // Set Subsectors to crs_purposes + if(!this._hasNoSelections('purposecode', values)){ + values['purposecode'].codes[0].uid = 'crs_purposes'; + } + + // Update Dashboard Config and Rebuild if uid changed + if(self.datasetChanged) { + self.dashboardConfig.uid = self.datasetType.uid; + self.dashboardFAOConfig.uid = self.datasetType.uid; + + if(sectorcodeObj) { + self._updateConfigurationsWithFaoRelatedSectors2(values, sectorcodeObj); + self._rebuildProjectsDashboard(self.dashboardFAOConfig, [values]); + } + else + self._rebuildProjectsDashboard(self.dashboardConfig, [values]); + + } + else { + // Update Dashboard Config and values if FAO Related Sectors selected + if(sectorcodeObj) { + self._updateConfigurationsWithFaoRelatedSectors2(values, sectorcodeObj); + self._rebuildProjectsDashboard(self.dashboardFAOConfig, [values]); + } else { + self.projectsDashboard.filter([values]); + } + } + + }); + + }, + + _updateConfigurationsWithFaoRelatedSectors2: function (values, sectorvaluesobj) { + // If no purposecodes have been selected + if(this._hasNoSelections('purposecode', values)){ + // Get the purposecode filter component, which will contain all + // the purposecodes (sub-sectors) associated with the selected 'FAO-related Sectors' + var purposeCodeComponent = this.filterProjects.getDomain("purposecode"); + + if(purposeCodeComponent){ + var codes = []; + + //======= UPDATE VALUES CONFIG + // Add purposecode to values + values['purposecode'] = {}; + values['purposecode'].codes = []; + values['purposecode'].codes[0] = $.extend(true, {}, sectorvaluesobj); // clone the codes configuration of sectorvaluesobj + + // Get the source of the purposecode component + // and populate the codes array with the IDs of the source items + $.each(purposeCodeComponent.options.source, function( index, sourceItem ) { + codes.push(sourceItem.id); + }); + + values['purposecode'].codes[0].codes = codes; + values['purposecode'].codes[0].uid = 'crs_purposes'; + + } + } + + // Set Values sectorcode to be removed + values['sectorcode'] = {}; + values['sectorcode'].removeFilter = true; + + }, + + _resetDashboardConfiguration: function (values, sectorvaluesobj) { + + //======= UPDATE DASHBOARD CONFIG + // Get the dashboard items which have a group filter + // Then either remove sectorcode from the associated 'by' array (i.e. array size > 1) + // Or remove the group filter entirely if the 'by' array only contains sectorcode (i.e. array size = 1) + $.each(this.dashboardConfig.items, function(index, dbItem) { + var grpFilter = _.filter(dbItem.filter, {name:'group'})[0]; + + if (grpFilter) { + if (_.intersection(['sectorcode'], grpFilter.parameters.by).length > 0) { // Check if sectorcode is present in the 'by' array + + if (grpFilter.parameters.by.length > 1) { + var arr = grpFilter.parameters.by; + var result = _.without(arr, 'sectorcode'); // Remove sectorcode from Group by array + grpFilter.parameters.by = result; + } else { + // Remove group by filter if sectorcode was the only Group by array item + var filterIdx = this.dashboardConfig.items[index].filter.indexOf(grpFilter); + this.dashboardConfig.items[index].filter.splice(filterIdx, 1); + } + } + } + }); + + }, + + _onSectorChange: function (s) { + var self = this; + + if(s.value){ + var pcfilter= _.find(this.filterConfig, function(obj){ + return obj.components[0].name === 'purposecode'; + }); + + if(pcfilter){ + var filter = pcfilter.components[0].config.filter; + filter.codes = []; + filter.codes.push(s.value); + delete filter["level"]; + + pcfilter.components[0].config.filter = filter; + + Q.all([ + self.filterConfCreator._createCodelistHierarchyPromiseData(pcfilter) + ]).spread(function(result1) { + + var result = []; + var children = self._getPropByString(result1[0], "children"); + + _.each(children, function (d) { + result.push({"id": d.code, "text": d.title[Utils.getLocale()]}); + }); + + result.sort(function(a, b){ + if (a.text < b.text) + return -1; + if (a.text > b.text) + return 1; + return 0; + }); + + + self.filterProjects.setDomain("purposecode", result); + + }); + } + } + }, + + _onDatasetChange: function (data) { + if(data.value){ + if(this.dashboardConfig) { + if(data.value !== this.dashboardConfig.uid) { + this.datasetChanged = true; + this.datasetType.uid = data.value; + } + else + this.datasetChanged = false; + } + } + }, + + _getObjectByValue: function (id, data){ + var allChildren = _.flatten(_.pluck(data,'codes')); + + var childHasValue = _.find(allChildren,function(child){ + if(child) { + if (child.codes[0] == id){ + return child; + } + } + }); + + return childHasValue; + }, + + _hasNoSelections: function (id, data){ + if( _.has(data, id)){ + return _.has(data[id], 'removeFilter'); + } + }, + + _onProjectsTopicChange: function (topic) { + this._showProjectsTopic(topic); + }, + + + + _showProjectsTopic: function (topic) { + var self = this; + + //Inject HTML + var source = $(projectsDashboardTemplate).find("[data-topic='projects']"), + template = Handlebars.compile(source.prop('outerHTML')); + + this.$topicContentProjects.html(template); + + this._renderProjectsComponents(); + + }, + + + _renderProjectsComponents: function () { + var config = ProjectsConfig; + // var configFao = ProjectsFaoSectorsConfig[topic]; + + + if (!config || !config.dashboard || !config.filter) { + alert(" HERE Impossible to find configuration for topic: " + topic); + return; + } + + this.filterConfig = config.filter; + + this.dashboardConfig = config.dashboard; + // this.dashboardFAOConfig = configFao.dashboard; + + this._renderProjectsFilter(this.filterConfig); + + this._renderProjectsDashboard(this.dashboardConfig); + + + }, + + + _renderProjectsDashboard: function (config) { + + if (this.projectsDashboard && this.projectsDashboard.destroy) { + this.projectsDashboard.destroy(); + } + + + this.projectsDashboard = new Dashboard({ + + //Ignored if layout = injected + container: s.css_classes.DASHBOARD_PROJECTS_CONTAINER, + layout: "injected" + }); + + this.projectsDashboard.render(config); + + }, + + _rebuildProjectsDashboard: function (config, filter) { + + if (this.projectsDashboard && this.projectsDashboard.destroy) { + this.projectsDashboard.destroy(); + } + + + this.projectsDashboard = new Dashboard({ + + //Ignored if layout = injected + container: s.css_classes.DASHBOARD_PROJECTS_CONTAINER, + layout: "injected" + }); + + this.projectsDashboard.rebuild(config, filter); + + }, + + _renderProjectsFilter: function (config) { + + var self = this; + + this.filterConfCreator = new FilterConfCreator(); + + this.filterConfCreator.getConfiguration(config) + .then(function (c) { + + self.filterProjects = new Filter(); + + self.filterProjects.init({ + container: s.css_classes.FILTER_PROJECTS, + layout: 'fluidGrid' + }); + + var adapterMap = {}; + + self.filterProjects.add(c, adapterMap); + + }); + + }, + + _getPropByString: function(obj, propString) { + if (!propString) + return obj; + + var prop, candidate; + + prop = propString; + candidate = obj[prop]; + + if (candidate) { + obj = candidate; + if(obj.hasOwnProperty(prop)) { + this._getPropByString(obj, prop); + } + } + + return obj; + }, + + _compare: function(a, b){ + if (a.label < b.label) + return -1; + if (a.label > b.label) + return 1; + return 0; + } + + + }); + + return ProjectsView; +}); diff --git a/src/js/views/analysis-view.js b/src/js/views/analysis-view.js deleted file mode 100644 index 0d8c033e..00000000 --- a/src/js/views/analysis-view.js +++ /dev/null @@ -1,388 +0,0 @@ -/*global define, amplify*/ -define([ - 'views/base/view', - 'fx-ds/start', - 'fx-filter/start', - 'text!templates/analysis/analysis.hbs', - 'text!templates/analysis/topics-flude.hbs', - 'text!templates/analysis/topics-faostat.hbs', - 'i18n!nls/analysis', - 'i18n!nls/topics-flude', - 'i18n!nls/topics-faostat', - 'config/Events', - 'config/Config', - 'text!config/analysis/flude-topics.json', - 'text!config/analysis/faostat-topics.json', - 'config/analysis/topics-flude', - 'config/analysis/topics-faostat', - 'fx-filter/Fx-filter-configuration-creator', - 'handlebars', - 'amplify', - 'select2', - 'jstree', - 'highcharts-export' -], function (View, Dashboard, Filter, template, topicsFludeTemplate, topicsFaostatTemplate, i18nLabels, topicFludeLabels, topicFaostatLabels, E, C, FludeTopics, FaostatTopics, TopicFludeConfig, TopicFaostatConfig, FilterConfCreator, Handlebars) { - - 'use strict'; - - var s = { - TOPIC_SELECTOR_FLUDE: "#flude-topic-selector", - TOPIC_SELECTOR_FAOSTAT: "#faostat-topic-selector", - TOPIC_CONTENT_FLUDE: "#flude-topic-content", - TOPIC_CONTENT_FAOSTAT: "#faostat-topic-content", - FILTER_OPENER_FAOSTAT: ".filter-opener-faostat", - FILTER_OPENER_FLUDE: ".filter-opener-flude", - FILTER_CONTAINER_FLUDE: "#filter-container-flude", - FILTER_CONTAINER_FAOSTAT: "#filter-container-faostat", - FILTER_FLUDE: "filter-flude", - FILTER_FAOSTAT: "filter-faostat", - FILTER_SUBMIT_FLUDE: "#filter-submit-btn-flude", - FILTER_SUBMIT_FAOSTAT: "#filter-submit-btn-faostat", - - SIDE_FLUDE: "#side-flude", - SIDE_FAOSTAT: "#side-faostat", - TOGGLE_SIDE_FAOSTAT: "#toggle-side-faostat", - - DOWNLOAD_BTN_FLUDE: "#flude-download-btn", - - DASHBOARD_FLUDE_CONTAINER: '#dashboard-flude-container', - DASHBOARD_FAOSTAT_CONTAINER: '#dashboard-faostat-container' - - }; - - var AnalysisView = View.extend({ - - // Automatically render after initialize - autoRender: true, - - className: 'analysis', - - // Save the template string in a prototype property. - // This is overwritten with the compiled template function. - // In the end you might want to used precompiled templates. - template: template, - - getTemplateData: function () { - return i18nLabels; - }, - - attach: function () { - - View.prototype.attach.call(this, arguments); - - //update State - amplify.publish(E.STATE_CHANGE, {menu: 'analysis'}); - - this._initVariables(); - - this._initComponents(); - - this._bindEventListeners(); - - }, - - _initVariables: function () { - - this.$topicSelectorFlude = this.$el.find(s.TOPIC_SELECTOR_FLUDE); - this.$topicSelectorFaostat = this.$el.find(s.TOPIC_SELECTOR_FAOSTAT); - this.$topicContentFlude = this.$el.find(s.TOPIC_CONTENT_FLUDE); - this.$topicContentFaostat = this.$el.find(s.TOPIC_CONTENT_FAOSTAT); - - this.$filterOpenerFlude = this.$el.find(s.FILTER_OPENER_FLUDE); - this.$filterOpenerFaostat = this.$el.find(s.FILTER_OPENER_FAOSTAT); - this.$filterContainerFlude = this.$el.find(s.FILTER_CONTAINER_FLUDE); - this.$filterContainerFaostat = this.$el.find(s.FILTER_CONTAINER_FAOSTAT); - - this.$filterSubmitFaostat = this.$el.find(s.FILTER_SUBMIT_FAOSTAT); - this.$filterSubmitFlude = this.$el.find(s.FILTER_SUBMIT_FLUDE); - - this.$sideFlude = this.$el.find(s.SIDE_FLUDE); - this.$sideFaostat = this.$el.find(s.SIDE_FAOSTAT); - - this.$toggleFaostatSideBtn = this.$el.find(s.TOGGLE_SIDE_FAOSTAT); - - this.$downloadBtnFlude = this.$el.find(s.DOWNLOAD_BTN_FLUDE); - - }, - - _bindEventListeners: function () { - - var self = this; - - this.$topicSelectorFlude.on("change", function (e) { - self._onFludeTopicChange(e.val); - }); - - this.$topicSelectorFaostat.on("change", function (e) { - self._onFaostatTopicChange(e.val); - }); - - this.$filterSubmitFaostat.on('click', function (e, data) { - - var filter = {}; - var values = self.filterFaostat.getValues(); - // TODO: funzione per distruggere dashboard e ricrearla con gli items giusti: - -/* var filteredConfig = self._getFilteredConfig(values, self.$faostatDashboardConfig); - self._renderFaostatDashboard(filteredConfig); - self.faostatDashboard.filter([values]); - */ - - // TODO: it's an array - self.faostatDashboard.filter([values]); - }); - - this.$filterSubmitFlude.on('click', function (e, data) { - - var filter = {}; - var values = self.filterFlude.getValues(); - // TODO: funzione per distruggere dashboard e ricrearla con gli items giusti: - /* - var filteredConfig = self._getFilteredConfig(values, self.$faostatDashboardConfig); - self._renderFaostatDashboard(filteredConfig); - self.fludeDashboard.filter([values]); - */ - - // TODO: it's an array - self.fludeDashboard.filter([values]); - }); - - this.$toggleFaostatSideBtn.on('click', function () { - - self.$sideFlude.toggleClass('col-xs-6').toggleClass('col-xs-12'); - - - if (!self.$sideFaostat.is(':visible')) { - self.$sideFaostat.show(); - self._loadFaostatForTheFirstTime(); - } else { - self.$sideFaostat.hide() - } - - - $("body").toggleClass('super-extreme-filter'); - - amplify.publish("fx.window.resize"); - $(window).trigger('resize'); - window.dispatchEvent(new Event('resize')); - - window.setTimeout(function () { - amplify.publish("fx.window.resize"); - $(window).trigger('resize'); - window.dispatchEvent(new Event('resize')); - }, 100); - - - }); - }, - - _loadFaostatForTheFirstTime : function () { - - if (this._faostatIsAlreadyInitialized === true ){ - return; - } - - this._faostatIsAlreadyInitialized = true; - - var confFS = JSON.parse(FaostatTopics); - - this._onFaostatTopicChange(confFS.data[0].id); - - }, - - _onFludeTopicChange: function (topic) { - - this._configureFludeDownload(topic); - - this._showFludeTopic(topic); - - }, - - _configureFludeDownload: function (topic) { - - this.$downloadBtnFlude.attr("href", C.DOWNLOAD_FILE_SYSTEM_ROOT + TopicFludeConfig[topic].download.target) - - }, - - _onFaostatTopicChange: function (topic) { - - this._showFaostatTopic(topic); - - }, - - _showFludeTopic: function (topic) { - - //Inject HTML - var source = $(topicsFludeTemplate).find("[data-topic='" + topic + "']"), - template = Handlebars.compile(source.prop('outerHTML')), - html = template(topicFludeLabels[topic]); - - this.$topicContentFlude.html(html); - - this._renderFludeComponents(topic); - - }, - - _showFaostatTopic: function (topic) { - - //Inject HTML - var source = $(topicsFaostatTemplate).find("[data-topic='" + topic + "']"), - template = Handlebars.compile(source.prop('outerHTML')), - html = template(topicFaostatLabels[topic]); - - this.$topicContentFaostat.html(html); - - this._renderFaostatComponents(topic); - - }, - - _initComponents: function () { - - //Flude - - var conf = JSON.parse(FludeTopics); - - this.$topicSelectorFlude.select2(conf); - - this.$topicSelectorFlude.select2('data', conf.data[0]); - this._onFludeTopicChange(conf.data[0].id); - - //Faostat - - var confFS = JSON.parse(FaostatTopics); - this.$topicSelectorFaostat.select2(confFS); - this.$topicSelectorFaostat.select2('data', confFS.data[0]); - - - }, - - _renderFludeComponents: function (topic) { - - var config = TopicFludeConfig[topic]; - - if (!config || !config.dashboard || !config.filter) { - alert("Impossible to find configuration for topic: " + topic); - return; - } - - var filterConfig = config.filter; - - this._renderFludeFilter(filterConfig); - - this._renderFludeDashboard(config.dashboard); - - }, - - _updateDashboardTitles : function (filter) { - - //console.log(filter) - - - - }, - - _renderFaostatComponents: function (topic) { - - var config = TopicFaostatConfig[topic]; - - if (!config || !config.dashboard || !config.filter) { - alert("Impossible to find configuration for topic: " + topic); - return; - } - - var filterConfig = config.filter; - - this._renderFaostatFilter(filterConfig); - - this._renderFaostatDashboard(config.dashboard); - - }, - - _renderFludeDashboard: function (config) { - - if (this.fludeDashboard && this.fludeDashboard.destroy) { - this.fludeDashboard.destroy(); - } - - - this.fludeDashboard = new Dashboard({ - - //Ignored if layout = injected - container: s.DASHBOARD_FLUDE_CONTAINER, - layout: "injected" - }); - - this.fludeDashboard.render(config); - - }, - - _renderFaostatDashboard: function (config) { - - if (this.faostatDashboard && this.faostatDashboard.destroy) { - this.faostatDashboard.destroy(); - } - - this.faostatDashboard = new Dashboard({ - - //Ignored if layout = injected - container: s.DASHBOARD_FAOSTAT_CONTAINER, - - layout: "injected" - }); - - this.faostatDashboard.render(config); - - }, - - _renderFludeFilter: function (config) { - - var self = this; - - this.filterConfCreator = new FilterConfCreator(); - - this.filterConfCreator.getConfiguration(config) - .then(function (c) { - - self.filterFlude = new Filter(); - - self.filterFlude.init({ - container: s.FILTER_FLUDE, - layout: 'fluidGrid' - }); - - var adapterMap = {}; - - self.filterFlude.add(c, adapterMap); - - }); - - }, - - _renderFaostatFilter: function (config) { - - var self = this; - - this.filterConfCreator = new FilterConfCreator(); - - this.filterConfCreator.getConfiguration(config) - .then(function (c) { - - self.filterFaostat = new Filter(); - - self.filterFaostat.init({ - container: s.FILTER_FAOSTAT, - layout: 'fluidGrid' - }); - - var adapterMap = {}; - - self.filterFaostat.add(c, adapterMap); - - }); - - } - - }); - - return AnalysisView; -}); diff --git a/src/js/views/breadcrumb-list-view.js b/src/js/views/breadcrumb-list-view.js deleted file mode 100644 index f0fbf7fa..00000000 --- a/src/js/views/breadcrumb-list-view.js +++ /dev/null @@ -1,56 +0,0 @@ -/*global define, amplify*/ -define([ - 'views/base/collection-view', - 'views/breadcrumb-view', - 'text!templates/breadcrumbs/breadcrumb-list.hbs', - 'models/breadcrumb-list', - 'i18n!nls/browse', - 'handlebars', - 'amplify' -], function (CollectionView, BreadcrumbView, template, BreadcrumbList, i18nLabels, Handlebars) { - - 'use strict'; - - var s = { - BREADCRUMB_CONTAINER: "#breadcrumb-container" - }; - - var BreadcrumbListView = CollectionView.extend({ - - // Automatically render after initialize - autoRender: true, - - className: 'breadcrumbs', - - itemView: BreadcrumbView, - - //regions: { - // breadcrumb: s.BREADCRUMB_CONTAINER - // }, - - // Save the template string in a prototype property. - // This is overwritten with the compiled template function. - // In the end you might want to used precompiled templates. - template: template, - - initialize: function (params) { - CollectionView.prototype.initialize.call(this, arguments); - }, - - getTemplateData: function () { - return i18nLabels; - }, - - attach: function () { - - CollectionView.prototype.attach.call(this, arguments); - - //update State - // amplify.publish(E.STATE_CHANGE, {menu: 'browse'}); - - - } - }); - - return BreadcrumbListView; -}); diff --git a/src/js/views/breadcrumb-view.js b/src/js/views/breadcrumb-view.js deleted file mode 100644 index 2a66f785..00000000 --- a/src/js/views/breadcrumb-view.js +++ /dev/null @@ -1,38 +0,0 @@ -/*global define, amplify*/ -define([ - 'views/base/view', - 'text!templates/breadcrumbs/breadcrumb.hbs', - 'models/breadcrumb', - 'i18n!nls/browse', - 'handlebars', - 'amplify' -], function (View, template, Model, i18nLabels, Handlebars) { - - 'use strict'; - - var BreadcrumbView = View.extend({ - - model: Model, - - // Automatically render after initialize - autoRender: true, - - template: template, - - tagName : 'li', - - initialize: function (params) { - View.prototype.initialize.call(this, arguments); - } - - - //getTemplateData: function () { - // return i18nLabels; - // }, - - - - }); - - return BreadcrumbView; -}); diff --git a/src/js/views/browse-view.js b/src/js/views/browse-view.js index 65d33cd8..183277ff 100644 --- a/src/js/views/browse-view.js +++ b/src/js/views/browse-view.js @@ -1,44 +1,15 @@ /*global define, amplify*/ define([ 'views/base/view', - 'fx-ds/start', - 'fx-filter/start', - 'text!templates/browse/browse.hbs', - 'text!templates/browse/dashboard.hbs', - 'text!templates/browse/options.hbs', - 'i18n!nls/browse', - 'i18n!nls/topics-flude', - 'i18n!nls/modules', + 'text!templates/common/modules.hbs', + 'i18n!nls/browse-modules', 'config/Events', - 'config/Config', - 'text!config/browse/flude-topics.json', - 'config/browse/config', - 'fx-filter/Fx-filter-configuration-creator', 'handlebars', - 'amplify', - 'select2', - 'jstree', - 'highcharts-export' -], function (View, Dashboard, Filter, template, browseByDashboardTemplate, browseByOptionsTemplate, i18nLabels, topicFludeLabels, moduleLabels, E, C, FludeTopics, TopicFludeConfig, FilterConfCreator, Handlebars) { + 'amplify' +], function (View, modulesTemplate, moduleLabels, E) { 'use strict'; - var s = { - TOPIC_SELECTOR_FLUDE: "#flude-topic-selector", - TOPIC_CONTENT_FLUDE: "#flude-topic-content", - FILTER_OPENER_FLUDE: ".filter-opener-flude", - FILTER_CONTAINER_FLUDE: "#filter-container-flude", - FILTER_FLUDE: "filter-flude", - FILTER_SUBMIT_FLUDE: "#filter-submit-btn-flude", - - SIDE_FLUDE: "#side-flude", - - - DASHBOARD_FLUDE_CONTAINER: '#dashboard-flude-container' - - - }; - var BrowseView = View.extend({ // Automatically render after initialize @@ -49,203 +20,36 @@ define([ // Save the template string in a prototype property. // This is overwritten with the compiled template function. // In the end you might want to used precompiled templates. - template: template, + template: modulesTemplate, initialize: function (params) { - this.browse_type = params.filter; - - - console.log(this.breadcrumb); + this.page = params.page; View.prototype.initialize.call(this, arguments); }, - getTemplateData: function () { - return i18nLabels; - }, - attach: function () { View.prototype.attach.call(this, arguments); + //remove Breadcrumbs + amplify.publish(E.MENU_RESET_BREADCRUMB); + //update State amplify.publish(E.STATE_CHANGE, {menu: 'browse'}); - this._initVariables(); - - this._initComponents(); - - this._bindEventListeners(); - - // this.template = this.getTemplateFunction(); - //this.template({browse_by: "Hello"}); - - // var html = this.options.template({browse_by: "Hello"}); - - //this.$el.html(this.html); - - this.browse_type ? this._showFludeTopic(this.browse_type) : this._displayBrowseOptions() ; - }, - - _initVariables: function () { - - this.$topicSelectorFlude = this.$el.find(s.TOPIC_SELECTOR_FLUDE); - this.$topicContentFlude = this.$el.find(s.TOPIC_CONTENT_FLUDE); - - this.$filterOpenerFlude = this.$el.find(s.FILTER_OPENER_FLUDE); - this.$filterContainerFlude = this.$el.find(s.FILTER_CONTAINER_FLUDE); - - this.$filterSubmitFlude = this.$el.find(s.FILTER_SUBMIT_FLUDE); - - this.$sideFlude = this.$el.find(s.SIDE_FLUDE); - - - - }, - - _bindEventListeners: function () { - - var self = this; - - this.$topicSelectorFlude.on("change", function (e) { - self._onFludeTopicChange(e.val); - }); - - this.$filterSubmitFlude.on('click', function (e, data) { - - var filter = {}; - var values = self.filterFlude.getValues(); - // TODO: funzione per distruggere dashboard e ricrearla con gli items giusti: - /* - var filteredConfig = self._getFilteredConfig(values, self.$faostatDashboardConfig); - self._renderFaostatDashboard(filteredConfig); - self.fludeDashboard.filter([values]); - */ - - // TODO: it's an array - self.fludeDashboard.filter([values]); - }); - - }, - - _onFludeTopicChange: function (topic) { - this._showFludeTopic(topic); - }, - - - - _showFludeTopic: function (topic) { - - var self = this; - - //Inject HTML - var source = $(browseByDashboardTemplate).find("[data-topic='" + topic + "']"), - template = Handlebars.compile(source.prop('outerHTML')), - html = template(topicFludeLabels[topic]); - - this.$topicContentFlude.html(html); - - - - this._renderFludeComponents(topic); - - }, - - - _initComponents: function () { - - //Flude - - var conf = JSON.parse(FludeTopics); - - this.$topicSelectorFlude.select2(conf); - - this.$topicSelectorFlude.select2('data', conf.data[0]); - // this._onFludeTopicChange(conf.data[0].id); // sets first item as default - - - }, - - _renderFludeComponents: function (topic) { - - var config = TopicFludeConfig[topic]; - - if (!config || !config.dashboard || !config.filter) { - alert(" HERE Impossible to find configuration for topic: " + topic); - return; - } - - var filterConfig = config.filter; - - this._renderFludeFilter(filterConfig); - - this._renderFludeDashboard(config.dashboard); - - - }, - - _updateDashboardTitles : function (filter) { - - //console.log(filter) - - - - }, - - - _renderFludeDashboard: function (config) { - - if (this.fludeDashboard && this.fludeDashboard.destroy) { - this.fludeDashboard.destroy(); - } - - console.log(config); - - this.fludeDashboard = new Dashboard({ - - //Ignored if layout = injected - container: s.DASHBOARD_FLUDE_CONTAINER, - layout: "injected" - }); - - this.fludeDashboard.render(config); - - }, - - _renderFludeFilter: function (config) { - - var self = this; - - this.filterConfCreator = new FilterConfCreator(); - - this.filterConfCreator.getConfiguration(config) - .then(function (c) { - - self.filterFlude = new Filter(); - - self.filterFlude.init({ - container: s.FILTER_FLUDE, - layout: 'fluidGrid' - }); - - var adapterMap = {}; - - self.filterFlude.add(c, adapterMap); - - }); + //console.log("BROWSE OPTIONS ========="); + this._displayBrowseOptions() ; }, _displayBrowseOptions: function () { - var template = Handlebars.compile(browseByOptionsTemplate), - html = template({modules: moduleLabels["modules"]}); + var html = this.template({modules: moduleLabels["modules"]}); this.$el.html(html); } - - - }); + }); return BrowseView; }); diff --git a/src/js/views/browse/browse-by-view.js b/src/js/views/browse/browse-by-view.js new file mode 100644 index 00000000..38b0e67f --- /dev/null +++ b/src/js/views/browse/browse-by-view.js @@ -0,0 +1,454 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'jquery-ui', + 'views/base/view', + 'views/common/title-view', + 'views/browse/filter-view', + 'views/browse/oda-dashboard-view', + 'views/browse/development-indicators-dashboard-view', + 'models/browse/dashboard', + 'text!templates/browse/browse.hbs', + 'i18n!nls/browse', + 'config/Events', + 'config/Config', + 'config/browse/Events', + 'config/browse/config-development-indicators', + 'config/browse/config-by-topic', + 'config/browse/config-by-filter-values', + 'config/browse/config-browse', + 'lib/utils', + 'amplify', + 'bootstrap', + 'underscore' +], function ($, $UI, View, TitleSubView, FilterSubView, DashboardOecdSubView, DashboardIndicatorsSubView, DashboardModel, template, i18nLabels, Events, GeneralConfig, BaseBrowseEvents, BrowseIndicatorsConfig, ConfigByTopic, ConfigByFilterValues, BaseBrowseConfig, Utils) { + + 'use strict'; + + var s = { + css_classes: { + TITLE_BAR_ITEMS: "#fx-title-items", + BACK_TO_TOP_FIXED: "#browse-top-link-fixed", + FILTER_HOLDER: "#browse-filter-holder", + DASHBOARD_OECD_HOLDER: "#browse-oecd-content", + DASHBOARD_INDICATORS_HOLDER: "#browse-indicator-content" + }, + dashboardModel: { + COUNTRY: 'selected_country', + TOPIC: 'topic', + LABEL: 'label' + } + }; + + + /** + * + * Creates a new Browse By View + * Browse By View comprises of a series of subviews: title view, filter view and 2 dashboard views (development indicators and oecd/oda) + * @class BrowseByView + * @extends View + */ + var BrowseByView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'browse', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + events: { + 'click #backToTopBtn': 'backToTop' + }, + + initialize: function (params) { + this.browse_type = params.filter; + this.page = params.page; + this.datasetType = GeneralConfig.DEFAULT_UID; + this.topicConfig = ConfigByTopic[this.browse_type]; + this.filterValuesConfig = ConfigByFilterValues[this.browse_type]; + + View.prototype.initialize.call(this, arguments); + }, + + getTemplateData: function () { + return i18nLabels; + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + //update State + amplify.publish(Events.STATE_CHANGE, {menu: 'browse', breadcrumb: this._initMenuBreadcrumbItem()}); + + this._initVariables(); + + this._bindEventListeners(); + + }, + + render: function () { + View.prototype.render.apply(this, arguments); + + this._loadDashboardConfigurations(); + }, + + + /** + * Based on the view the appropriate JS configuration files are loaded via requireJS + * @private + */ + _loadDashboardConfigurations: function () { + require(['config/browse/config-other-' + this.browse_type, 'config/browse/config-fao-' + this.browse_type], _.bind(this._initSubViews, this)); + }, + + + /** + * Initializes all sub views: Title, Filters, oecd/oda Dashboard and Indicators Dashboard + * @private + */ + + _initSubViews: function (ConfigOther, ConfigFAO) { + + if (!ConfigOther || !ConfigOther.dashboard || !ConfigOther.filter) { + alert("Impossible to find default ODA dashboard/filter configuration for the topic: " + this.browse_type); + return; + } + + if (!ConfigFAO || !ConfigFAO.dashboard || !ConfigFAO.filter) { + alert("Impossible to find default FAO dashboard/filter configuration for the topic: " + this.browse_type); + return; + } + + this.otherSectorsDashboardConfig = ConfigOther.dashboard; + this.faoSectorDashboardConfig = ConfigFAO.dashboard; + + + //Set default dashboard configuration + if (ConfigOther.id === BaseBrowseConfig.dashboard.DEFAULT_CONFIG) { + this.defaultDashboardConfig = ConfigOther; + } else if (ConfigFAO.id === BaseBrowseConfig.dashboard.DEFAULT_CONFIG) { + this.defaultDashboardConfig = ConfigFAO; + } + + // Set TITLE Sub View + var titleSubView = new TitleSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.TITLE_BAR_ITEMS), + title: i18nLabels.selections + }); + this.subview('title', titleSubView); + + // Set FILTER Sub View + var filtersSubView = new FilterSubView({ + autoRender: true, + container: this.$el.find(s.css_classes.FILTER_HOLDER), + config: this.defaultDashboardConfig.filter + }); + this.subview('filters', filtersSubView); + + // Set Dashboard Model + this.odaDashboardModel = new DashboardModel(); + + // Set DASHBOARD 1 Sub View: ODA + var dashboardOecdSubView = new DashboardOecdSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_OECD_HOLDER), + topic: this.browse_type, + model: this.odaDashboardModel + }); + dashboardOecdSubView.setDashboardConfig(this.defaultDashboardConfig.dashboard); + + this.subview('oecdDashboard', dashboardOecdSubView); + + // Set DASHBOARD 2 Sub View: Development Indicators + if (this.browse_type === BaseBrowseConfig.topic.BY_COUNTRY || this.browse_type === BaseBrowseConfig.topic.BY_RESOURCE_PARTNER) { + + var configIndicators = BrowseIndicatorsConfig[this.browse_type]; + + if (!configIndicators || !configIndicators.items) { + alert("Impossible to find configuration for Development Indicators: "); + return; + } + + this.indicatorsDashboardConfig = configIndicators; + this.indicatorsDashboardModel = new DashboardModel(); + + var dashboardIndicatorsSubView = new DashboardIndicatorsSubView({ + autoRender: false, + container: this.$el.find(s.css_classes.DASHBOARD_INDICATORS_HOLDER), + topic: this.browse_type, + model: this.indicatorsDashboardModel + }); + dashboardIndicatorsSubView.setDashboardConfig(this.indicatorsDashboardConfig); + + this.subview('indicatorsDashboard', dashboardIndicatorsSubView); + + } + + }, + + /** + * Create the breadcrumb for the menu, indicating the current browse by view + * @private + */ + _initMenuBreadcrumbItem: function () { + var label = ""; + var self = this; + + if (typeof self.browse_type !== 'undefined') { + label = i18nLabels[self.browse_type]; + } + + return Utils.createMenuBreadcrumbItem(label, self.browse_type, self.page); + }, + + + _initVariables: function () { + // Initialize bootstrap affix: Locks ('sticks') section, appears when scrolling + $(s.css_classes.BACK_TO_TOP_FIXED).affix({}); + + }, + + _bindEventListeners: function () { + amplify.subscribe(BaseBrowseEvents.FILTER_ON_READY, this, this._filtersLoaded); + amplify.subscribe(BaseBrowseEvents.FILTER_ON_CHANGE, this, this._updateDashboard); + }, + + /** + * When filters have all loaded - the TitleView is built using the currently selected filters and the dashboards rendered + * @param selectedFilterItems (payload) + * @private + */ + _filtersLoaded: function (payload) { + + var selectedFilterItems = payload.labels; + + // Set Dashboard 1 (ODA) Properties + if (payload["props"]) { + this.subview('oecdDashboard').setProperties(payload["props"]); + } + + // Build Title View + this.subview('title').setLabels(selectedFilterItems); + this.subview('title').build(); + + // Set ODA Dashboard Model Values + this._setOdaDashboardModelValues(); + + // Render Dashboard 1: ODA + this.subview('oecdDashboard').renderDashboard(); + + // Render Dashboard 2: Development Indicators (if appropriate) + if (this.browse_type === BaseBrowseConfig.topic.BY_COUNTRY || this.browse_type === BaseBrowseConfig.topic.BY_RESOURCE_PARTNER) { + this._setIndicatorDashboardModelValues(); + this.subview('indicatorsDashboard').renderDashboard(); + } + + }, + + + /** + * When a filter selection changes, each Dashboard and Title Sub View is rebuilt/refreshed + * @param selected filter + * @private + */ + _updateDashboard: function (selectedfilter) { + + // console.log("================= _updateDashboard =============== "); + // console.log(this.subview('filters')); + + var ovalues = this.subview('filters').getFilterValues(), confPath, displayConfigForSelectedFilter, displayConfigForSelectedFilterValues, dashboardConfigChanged; + + //console.log("================= _updateDashboard =============== "); + //console.log(ovalues); + + if (selectedfilter) { + + // If selected filter has a value + if (selectedfilter.values.values.length > 0) { + + // Update the TitleView (Add Item) + amplify.publish(Events.TITLE_ADD_ITEM, this._getTitleItem(selectedfilter)); + + // Configuration display (if appropriate) + if (this.topicConfig) { + displayConfigForSelectedFilter = this.topicConfig[selectedfilter.id]; + } + + // Update dashboard properties + if (selectedfilter['props']) { + this.subview('oecdDashboard').setProperties(selectedfilter['props']); + } + + + this._setDashboardConfiguration(confPath, ovalues, displayConfigForSelectedFilter); + + } + // Else selected filter has no value (i.e.there has been a de-selection/removal) + else { + + //console.log("================= _updateDashboard: "+selectedfilter.id+" is 0 =============== "); + + // Update the TitleView (Remove Item) + amplify.publish(Events.TITLE_REMOVE_ITEM, selectedfilter.id); + + // Re-configure display (if appropriate) + if (selectedfilter.dependencies && this.topicConfig) { + displayConfigForSelectedFilter = this.topicConfig[selectedfilter.dependencies[0]]; + } + + if (this.filterValuesConfig) { + displayConfigForSelectedFilterValues = this.filterValuesConfig[selectedfilter.id]; + var item = _.find(displayConfigForSelectedFilterValues, function (item) { + return item.value === ""; + }); + + if (item && item.config) { + confPath = item.config.path; + + if (item.display) + displayConfigForSelectedFilter = item.display; + } + } + + + // if (confPath || displayConfigForSelectedFilter) + // this._setDashboardConfiguration(confPath, ovalues, displayConfigForSelectedFilter); + } + + this._setDashboardConfiguration(confPath, ovalues, displayConfigForSelectedFilter); + + } + + }, + + + /** + * Load the appropriate JS configuration file via require, if appropriate + * @param confPath + * @param ovalues + * @param displayConfigForSelectedFilter + * @private + */ + _setDashboardConfiguration: function (confPath, ovalues, displayConfigForSelectedFilter) { + var self = this; + //console.log("================= _setDashboardConfiguration Start =============== "); + //console.log(ovalues); + + if (confPath) { + require(['config/browse/' + confPath], function (dialog) { + self._rebuildDashboard(ovalues, displayConfigForSelectedFilter, dialog.dashboard); + }); + } else { + self._rebuildDashboard(ovalues, displayConfigForSelectedFilter, this.otherSectorsDashboardConfig); + } + }, + + /** + * Rebuild the dashboard + * @param ovalues + * @param displayConfigForSelectedFilter + * @param dashboardConfig + * @private + */ + + _rebuildDashboard: function (ovalues, displayConfigForSelectedFilter, dashboardConfig) { + + // Set Sector Related Dashboard Configuration + switch (this.subview('filters').isFAOSectorsSelected()) { + case true: + // console.log(this.faoSectorDashboardConfig); + this.subview('filters').clearFilterValue(BaseBrowseConfig.filter.SECTOR, ovalues); + this.subview('oecdDashboard').setDashboardConfig(this.faoSectorDashboardConfig); + break; + case false: + this.subview('oecdDashboard').setDashboardConfig(dashboardConfig); + break; + } + + + // Hide/Show Dashboard Items + this.subview('oecdDashboard').updateDashboardTemplate(displayConfigForSelectedFilter); + + // Update Dashboard Items Configuration + this.subview('oecdDashboard').updateItemsConfig(); + + // Update Dashboard Model + this._setOdaDashboardModelValues(); + + + //console.log("================= _rebuildDashboard END =============== "); + // console.log(ovalues); + + // Rebuild OECD Dashboard + this.subview('oecdDashboard').rebuildDashboard(ovalues); + + // Rebuild Development Indicators Dashboard + if (this.browse_type === BaseBrowseConfig.topic.BY_COUNTRY || this.browse_type === BaseBrowseConfig.topic.BY_RESOURCE_PARTNER) { + this._setIndicatorDashboardModelValues(); + var ivalues = this.subview('filters').getIndicatorsValues(); + this.subview('indicatorsDashboard').rebuildDashboard(ivalues); + } + + }, + + + _getTitleItem: function (item) { + + var titleItem = {}, labels = item.values.labels; + + titleItem.id = item.id; + + var key = Object.keys(labels)[0]; + titleItem.label = labels[key]; + + return titleItem; + }, + + _unbindEventListeners: function () { + // Remove listeners + amplify.unsubscribe(BaseBrowseEvents.FILTER_ON_READY, this._filtersLoaded); + amplify.unsubscribe(BaseBrowseEvents.FILTER_ON_CHANGE, this._updateDashboard); + }, + + + _setIndicatorDashboardModelValues: function () { + var country = this.subview('title').getItemText(BaseBrowseConfig.filter.RECIPIENT_COUNTRY); + var donor = this.subview('title').getItemText(BaseBrowseConfig.filter.RESOURCE_PARTNER); + + if (donor.length > 0) + country = donor; + + this.indicatorsDashboardModel.set(s.dashboardModel.COUNTRY, country); + }, + + _setOdaDashboardModelValues: function () { + this.odaDashboardModel.set(s.dashboardModel.LABEL, this.subview('title').getTitleAsLabel()); + }, + + backToTop: function (e) { + + e.preventDefault(); + e.stopPropagation(); + + $('html, body').animate({scrollTop: 0}, 'slow'); + return false; + + }, + + dispose: function () { + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return BrowseByView; +}); diff --git a/src/js/views/browse/development-indicators-dashboard-view.js b/src/js/views/browse/development-indicators-dashboard-view.js new file mode 100644 index 00000000..661157cd --- /dev/null +++ b/src/js/views/browse/development-indicators-dashboard-view.js @@ -0,0 +1,155 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/browse/indicators-dashboard.hbs', + 'config/browse/config-browse', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/browse', + 'handlebars', + 'lib/config-utils', + 'amplify' +], function ($, _, View, template, BaseBrowseConfig, Dashboard, Utils, GeneralConfig, i18nLabels, Handlebars, ConfigUtils) { + + 'use strict'; + + var s = { + css_classes: { + INDICATORS_DASHBOARD_BROWSE_CONTAINER: '#dashboard-indicators-container' + } + }; + + /** + * + * Creates a new Development Indicators Dashboard View, which is composed of a custom item + * Instantiates the FENIX dashboard submodule and responsible for all development indicators dashboard related functionality. + * @class DashboardDevelopmentIndicatorsView + * @extends View + */ + + var DashboardDevelopmentIndicatorsView = View.extend({ + + // Automatically render after initialize + autoRender: false, + + className: 'dashboard-indicators', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + events: { + 'click .anchor': 'anchor' + }, + + initialize: function (params) { + this.topic = params.topic; + this.model.on("change", this.render, this); + + this.source = $(this.template).find("[data-topic='" + this.topic + "']").prop('outerHTML'); + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + anchor: function (e) { + e.preventDefault(); + e.stopPropagation(); + + var nameLink = e.currentTarget.name; + + $('html, body').animate({ + scrollTop: $('#' + nameLink).offset().top + }, 1000); + + }, + + render: function () { + this.setElement(this.container); + + $(this.el).hide(); + + $(this.el).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + getTemplateFunction: function () { + this.compiledTemplate = Handlebars.compile(this.source); + + var model = this.model.toJSON(); + var data = $.extend(true, model, i18nLabels); + + + return this.compiledTemplate(data); + }, + + setDashboardConfig: function (config) { + this.config = config; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + }, + + + renderDashboard: function () { + + this.config.el = this.$el; + this.config.items[0].topic = this.topic; + + // the path to the custom item is registered + this.config.itemsRegistry = { + custom: { + path: 'views/browse/development-indicators-item' + } + }; + + this.dashboard = new Dashboard(this.config); + + this.dashboard.on('indicators_ready', function (payload) { + + if (payload.data.size > 0) { + $(this.el).show(); + } + + }); + + }, + + rebuildDashboard: function (filter) { + + //console.log("============================= REBUILD DASHBOARD ================="); + // console.log(filter); + if (this.dashboard && $.isFunction(this.dashboard.refresh)) { + //console.log("REFRESH"); + this.dashboard.refresh(filter); + } + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + dispose: function () { + + this._disposeDashboards(); + + View.prototype.dispose.call(this, arguments); + } + + }); + + return DashboardDevelopmentIndicatorsView; +}); diff --git a/src/js/views/browse/development-indicators-item.js b/src/js/views/browse/development-indicators-item.js new file mode 100644 index 00000000..9e1e27b3 --- /dev/null +++ b/src/js/views/browse/development-indicators-item.js @@ -0,0 +1,349 @@ +/*global define, Promise, amplify */ + +define([ + "jquery", + "loglevel", + 'underscore', + 'fx-dashboard/config/errors', + 'fx-dashboard/config/events', + 'fx-dashboard/config/config', + 'text!templates/browse/indicators-country.hbs', + 'text!templates/browse/indicators-donor.hbs', + 'text!templates/browse/indicators-indicator-partial.hbs', + 'text!templates/browse/indicators-footer-partial.hbs', + 'lib/utils', + 'i18n!nls/browse', + 'handlebars', + 'amplify' +], function ($, log, _, ERR, EVT, C, indicatorsCountryTemplate, indicatorsDonorTemplate, indicatorPartialTemplate, footerPartialTemplate, Utils, i18nLabels, Handlebars) { + + 'use strict'; + + var defaultOptions = { + indicatorsOrder: ['INCOME.LEVEL', 'POP.TOT', 'NET.ODA.REC', 'SI.POV.GINI', 'NY.GNP.ATLS.CD', 'RUR.POP.PERC', 'NET.ODA.REC.PC', 'ODA.GNI', 'NY.GNP.PCAP.CD', 'NODA', 'AGRI.LAND.PERC', 'DT.ODA.ODAT.GN.ZS'], + indicatorProperties: { + CODE: 'code', + GINI_CODE: 'SI.POV.GINI' + }, + context: { + DONOR: 'donor', + COUNTRY: 'country' + } + }; + + /** + * + * Returns a customised item for the Development Indicators Dashboard View + * Formats the payload and renders the development indicators template + * @class DevelopmentIndicatorsItem + */ + + function DevelopmentIndicatorsItem(o) { + + var self = this; + + $.extend(true, this, defaultOptions, o); + this.$el = $(this.el); + + //console.log("-------------------------------- this.model ----------------"); + + //console.log(this.model); + + this._renderTemplate(); + + this._initVariables(); + + this._render(); + + this._bindEventListeners(); + + //force async execution + window.setTimeout(function () { + self.status.ready = true; + amplify.publish(self._getEventName(EVT.SELECTOR_READY), self); + self._trigger("ready"); + }, 0); + + return this; + } + + /** + * Disposition method + * Mandatory method + */ + DevelopmentIndicatorsItem.prototype.dispose = function () { + + this._dispose(); + + log.info("Selector disposed successfully"); + + }; + + /** + * refresh method + * Mandatory method + */ + DevelopmentIndicatorsItem.prototype.refresh = function () { + + log.info("Item refresh successfully"); + + }; + + /** + * pub/sub + * @return {Object} component instance + */ + DevelopmentIndicatorsItem.prototype.on = function (channel, fn, context) { + var _context = context || this; + if (!this.channels[channel]) { + this.channels[channel] = []; + } + this.channels[channel].push({context: _context, callback: fn}); + + return this; + }; + + DevelopmentIndicatorsItem.prototype._trigger = function (channel) { + + if (!this.channels[channel]) { + return false; + } + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0, l = this.channels[channel].length; i < l; i++) { + var subscription = this.channels[channel][i]; + subscription.callback.apply(subscription.context, args); + } + + return this; + }; + + DevelopmentIndicatorsItem.prototype._getStatus = function () { + return this.status; + }; + + DevelopmentIndicatorsItem.prototype._renderTemplate = function () { + + var indicatorsPartial = Handlebars.compile(indicatorPartialTemplate); + Handlebars.registerPartial('indicatorPartial', indicatorsPartial); + + var indicatorsFooterPartial = Handlebars.compile(footerPartialTemplate); + Handlebars.registerPartial('indicatorsFooterPartial', indicatorsFooterPartial); + + this.indicatortemplate = Handlebars.compile(indicatorsCountryTemplate); + + if (this.topic == this.context.DONOR) { + this.indicatortemplate = Handlebars.compile(indicatorsDonorTemplate); + } + + }; + + DevelopmentIndicatorsItem.prototype._initVariables = function () { + + //Init status + this.status = {}; + + // pub/sub + this.channels = {}; + + //TODO + }; + + DevelopmentIndicatorsItem.prototype._render = function () { + + this.controller._trigger('indicators_ready', {data: {size: this.model.size}}); + + if (this.model.size > 0) { + var metadata = this.model.metadata.dsd.columns; + var data = this._processPayload(this.model.data, metadata); + data = $.extend(true, data, i18nLabels); + var html = this.indicatortemplate({data: data}); + $(this.el).html(html); + } + + }; + + + DevelopmentIndicatorsItem.prototype._processPayload = function (data, metadata) { + + var valueIndex = this._findWithAttr(metadata, "id", "value"), + sourceIndex = this._findWithAttr(metadata, "id", "source"), + noteIndex = this._findWithAttr(metadata, "id", "note"), + periodIndex = this._findWithAttr(metadata, "id", "period"), + linkIndex = this._findWithAttr(metadata, "id", "link"), + indicatorcodeIndex = this._findWithAttr(metadata, "id", "indicatorcode"), + itemnameIndex = this._findWithAttr(metadata, "id", "itemcode_" + Utils.getLocale()), + indicatornameIndex = this._findWithAttr(metadata, "id", "indicatorcode_" + Utils.getLocale()), + unitnameIndex = this._findWithAttr(metadata, "id", "unitcode_" + Utils.getLocale()); + + var newdata = {}; + var indicators = [], + footnote = [], + linkArray = [], + sourceArray = []; + + var results = [], results2 = [], count = 1; + var hasGINI = false; + + // Create Array of Indicator Objects + for (var i = 0, len = data.length; i < len; ++i) { + var indicatorObj = {}; + + indicatorObj.name = data[i][indicatornameIndex]; + indicatorObj.css = data[i][indicatorcodeIndex]; + indicatorObj.code = data[i][indicatorcodeIndex]; + indicatorObj.item = data[i][itemnameIndex]; + indicatorObj.value = data[i][valueIndex]; + indicatorObj.period = data[i][periodIndex]; + indicatorObj.source = data[i][sourceIndex]; + indicatorObj.note = data[i][noteIndex]; + indicatorObj.link = data[i][linkIndex]; + indicatorObj.unit = data[i][unitnameIndex]; + + // Track the presence of the + if (indicatorObj.code === this.indicatorProperties.GINI_CODE) { + hasGINI = true; + } + + if (indicatorObj.unit === null) { + indicatorObj.unit = ""; + } + + if (indicatorObj.value === null && indicatorObj.item) { + indicatorObj.value = indicatorObj.item; + } + + if (indicatorObj.source === null) { + indicatorObj.source = ""; + } + + if (indicatorObj.css) + indicatorObj.css = indicatorObj.css.replace(/\./g, "_"); + + indicators.push(indicatorObj); + + } + + + // Reorder the Indicators Array, based on the 'code' order in the indicators order Array + indicators = this._reorderArrayByProperty(this.indicatorsOrder, indicators, this.indicatorProperties.CODE); + + // Add the Footnote details to the reordered indicators + + for (var j = 0, len = indicators.length; j < len; ++j) { + var indicatorObj = indicators[j]; + + if ($.inArray(indicatorObj.source + indicatorObj.note, results) < 0) { + + var sourceObj = {}; + indicatorObj.footnote = count; + sourceObj.sourceid = indicatorObj.source + indicatorObj.note; + + if (indicatorObj.source.split(";").length > 0) { + sourceObj.sourceArray = indicatorObj.source.split(";") + } else if (indicatorObj.source) { + sourceObj.sourceArray = sourceArray.push(indicatorObj.source); + } + + if (indicatorObj.link.split(";").length > 0) { + sourceObj.linkArray = indicatorObj.link.split(";") + } else if (indicatorObj.link) { + sourceObj.linkArray = linkArray.push(indicatorObj.link); + } + + sourceObj.link = indicatorObj.link; + sourceObj.note = indicatorObj.note; + + if (indicatorObj.source.length === 0) + sourceObj.source = indicatorObj.note; + else + sourceObj.source = indicatorObj.source + ": " + indicatorObj.note; + + sourceObj.footnote = count; + + results.push(indicatorObj.source + indicatorObj.note); + footnote.push(sourceObj); + count++; + } else { + var result = _.findWhere(footnote, {sourceid: indicatorObj.source + indicatorObj.note}); + + indicatorObj.footnote = result.footnote; + } + } + + newdata.indicators = indicators; + + if (hasGINI) + newdata.colIdx = 3; + else + newdata.colIdx = 4; + + newdata.footnotes = footnote; + + // console.log(newdata); + // console.log(newdata.indicators); + // console.log(newdata.footnotes); + + return newdata; + }; + + + DevelopmentIndicatorsItem.prototype._findWithAttr = function (array, attr, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i][attr] === value) { + return i; + } + } + }; + + + DevelopmentIndicatorsItem.prototype._reorderArrayByProperty = function (array_with_order, array_to_order, orderByProperty) { + var reordered_array = [], + len = array_to_order.length, + index, current; + + for (; len--;) { + current = array_to_order[len]; + index = array_with_order.indexOf(current[orderByProperty]); + reordered_array[index] = current; + } + + // filters out any undefined items in the reordered array + reordered_array = reordered_array.filter(function (e) { + return e + }); + + return reordered_array; + + }; + + DevelopmentIndicatorsItem.prototype._destroyCustomItem = function () { + + //TODO + + log.info("Destroyed Custom: " + this.id); + }; + + DevelopmentIndicatorsItem.prototype._bindEventListeners = function () { + // amplify.subscribe(s.events.CUSTOM_ITEM_COUNTRY_RESPONSE, this, this._showCountryIndicators); + }; + + DevelopmentIndicatorsItem.prototype._unbindEventListeners = function () { + //TODO + }; + + DevelopmentIndicatorsItem.prototype._dispose = function () { + + this._unbindEventListeners(); + + this._destroyCustomItem(); + + }; + + DevelopmentIndicatorsItem.prototype._getEventName = function (evt) { + + return this.controller.id + evt; + }; + + return DevelopmentIndicatorsItem; + +}); \ No newline at end of file diff --git a/src/js/views/browse/filter-view.js b/src/js/views/browse/filter-view.js new file mode 100644 index 00000000..3dcd6d74 --- /dev/null +++ b/src/js/views/browse/filter-view.js @@ -0,0 +1,870 @@ +define( + [ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/browse/filters.hbs', + 'i18n!nls/filter', + 'fx-filter/start', + 'fx-common/utils', + 'lib/utils', + 'config/Config', + 'config/browse/config-browse', + 'config/browse/Events', + 'q', + 'handlebars', + 'amplify' + ], function ($, _, View, template, i18nLabels, Filter, FxUtils, Utils, BaseConfig, BrowseConfig, BaseEvents, Q) { + + 'use strict'; + + var s = { + css_classes: { + FILTER_BROWSE: "#filter-browse" + }, + codeLists: { + SUB_SECTORS: {uid: 'crs_purposes', version: '2016'}, + RECIPIENT_DONORS: {uid: 'crs_recipientdonors', version: '2016'}, + REGIONS: {uid: 'crs_un_regions_recipients', version: '2016', level: "2", direction: "up"} + }, + range: { + FROM: 'from', + TO: 'to' + }, + values: { + FAO_SECTORS: '9999' + } + }; + + + /** + * Creates a new Filter View. + * Instantiates the FENIX filter submodule and responsible for all filter related functionality. + * @class FilterView + * @extends View + */ + var FilterView = View.extend({ + /** @lends FilterView */ + + // Automatically render after initialize + autoRender: true, + + className: 'filter-browse', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + + initialize: function (params) { + this.config = params.config; + + View.prototype.initialize.call(this, arguments); + }, + + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this._buildFilters(); + }, + + + /** + * Updates filter configuration and renders the filter. + * @private + */ + _buildFilters: function () { + var self = this; + + + var filterConfig = this._getUpdatedFilterConfig(); + + if (!_.isEmpty(filterConfig)) { + this.$el.find(s.css_classes.FILTER_BROWSE).show(); + this._renderFilter(filterConfig); + } else { + this.$el.find(s.css_classes.FILTER_BROWSE).hide(); + } + }, + + /** + * + * Instantiates the FENIX Filter Sub Module with the configuration and sets the Filter Event Handlers + * @param config + * @private + */ + _renderFilter: function (config) { + var self = this; + + // dispose of filter + if (this.filter && $.isFunction(this.filter.dispose)) { + this.filter.dispose(); + } + + // instantiate filter + this.filter = new Filter({ + el: this.$el.find(s.css_classes.FILTER_BROWSE), + environment: BaseConfig.ENVIRONMENT, + items: config, + common: { + template: { + hideSwitch: true, + hideRemoveButton: true + } + } + }); + + // Set filter event handlers + // Filter on Ready: Set some base properties for Recipient and the ODA, then publish Filter Ready Event + this.filter.on('ready', function (payload) { + + // For the Recipient Country, get and set the GAUL Code and Region Code as attributes to the props object + if (self._getFilterValues().values[BrowseConfig.filter.RECIPIENT_COUNTRY]) { + var additionalProperties = self._getPropertiesObject(BrowseConfig.filter.RECIPIENT_COUNTRY, self._getFilterValues().values[BrowseConfig.filter.RECIPIENT_COUNTRY]); + + Q.all([ + self._onRecipientChangeGetRegionCode(self._getFilterValues().values[BrowseConfig.filter.RECIPIENT_COUNTRY]), + self._onRecipientChangeGetGaulCode(self._getFilterValues().values[BrowseConfig.filter.RECIPIENT_COUNTRY]) + ]).then(function (result) { + if (result) { + self._setRecipientProperties(result, additionalProperties); + } + }).catch(function (error) { + self._regioncodeerror(error, additionalProperties) + }).done(function () { + // console.log("ONREADY: RECIPIENT PROPS UPDATE DONE ============ ", additionalProperties); + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + }); + + } + // For ODA set its value to the props object + else if (self._getFilterValues().values[BrowseConfig.filter.ODA]) { + var additionalProperties = self._getPropertiesObject(BrowseConfig.filter.ODA, self._getFilterValues().values[BrowseConfig.filter.ODA].enumeration[0]); + + amplify.publish(BaseEvents.FILTER_ON_READY, $.extend(self._getFilterValues(), {"props": additionalProperties})); + } + else { + amplify.publish(BaseEvents.FILTER_ON_READY, self._getFilterValues()); + } + + }); + + + // Filter on Change: Set some base properties for Recipient and the ODA, then publish Filter On Change Event + this.filter.on('change', function (payload) { + //console.log("========================= FilterView: ON CHANGE =============="); + //console.log(payload); + + var fc = self._getFilterConfigById(payload.id); + var dependencies = []; + if (fc && fc.dependencies) { + for (var id in fc.dependencies) { + dependencies.push(id); + } + + payload["dependencies"] = dependencies; + } + + if (payload.id === BrowseConfig.filter.YEAR_TO || payload.id === BrowseConfig.filter.YEAR_FROM) { + var newRange = self._getObject(BrowseConfig.filter.YEAR, self._getSelectedLabels()); + if (newRange) { + payload.id = BrowseConfig.filter.YEAR; + payload.values.labels = self._getObject(BrowseConfig.filter.YEAR, self._getSelectedLabels()); + payload.values.values = self._getObject(BrowseConfig.filter.YEAR, self._getSelectedValues()); + } + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + if (payload.id === BrowseConfig.filter.ODA) { + var additionalProperties = self._getPropertiesObject(BrowseConfig.filter.ODA, payload.values.values[0]); + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + } + else if (payload.id === BrowseConfig.filter.RECIPIENT_COUNTRY) { + var additionalProperties = self._getPropertiesObject(BrowseConfig.filter.RECIPIENT_COUNTRY, payload.values.values); + + Q.all([ + self._onRecipientChangeGetRegionCode(payload.values.values), + self._onRecipientChangeGetGaulCode(payload.values.values) + ]).then(function (result) { + if (result) { + self._setRecipientProperties(result, additionalProperties); + } + }).catch(function (error) { + self._regioncodeerror(error, additionalProperties) + }).done(function () { + // console.log("ONCHANGE: RECIPIENT PROPS UPDATE DONE ============ ", additionalProperties); + + amplify.publish(BaseEvents.FILTER_ON_CHANGE, $.extend(payload, {"props": additionalProperties})); + }); + } + else { + amplify.publish(BaseEvents.FILTER_ON_CHANGE, payload); + } + + }); + + + }, + /** + * Updates the filter configuration including setting the language related labels in the filter template + * Returns: Updated Configuration + * @returns {Object} updatedConf + * @private + */ + _getUpdatedFilterConfig: function () { + + var conf = $.extend(true, {}, this.config), + values = {}, + updatedConf = FxUtils.mergeConfigurations(conf, values); + + _.each(updatedConf, _.bind(function (obj, key) { + + if (!obj.template) { + obj.template = {}; + } + //Add i18n label + obj.template.title = Utils.getI18nLabel(key, i18nLabels, "filter_"); + obj.template.headerIconTooltip = Utils.getI18nLabel(key, i18nLabels, "filter_tooltip_"); + + }, this)); + + return updatedConf; + }, + + /** + * Format the time range and ODA values + * @returns {Object} + * @private + */ + + + _getFilterValues: function () { + + var timerange = { + values: {year: [{value: '', parent: s.range.FROM}, {value: '', parent: s.range.TO}]}, + labels: {year: {range: ''}} + }; + + var updatedValuesWithYear = {}, updatedValuesWithODA = {}, extendedValues = $.extend(true, {}, this.filter.getValues(), timerange); + + updatedValuesWithYear = this._processTimeRange(extendedValues); + + updatedValuesWithODA = this._processODA(updatedValuesWithYear); + + return updatedValuesWithODA; + + }, + + /** + * Get the selected filter values + * @returns {Object} values + * @private + */ + + _getSelectedValues: function () { + return this._getFilterValues().values; + }, + + + /** + * Get the selected filter labels + * @returns {Object} labels + * @private + */ + _getSelectedLabels: function () { + return this._getFilterValues().labels; + }, + + + /** + * Get the filter configuration associated to the ID + * @param id + * @returns {Object} values + * @private + */ + + _getFilterConfigById: function (id) { + var filter; + + $.each(this.config, function (key, obj) { + if (key === id) { + return filter = obj; + } + }); + + return filter; + }, + + /** + * Get the full filter values object (consists of labels and values) + * @returns {Object} filterValues + */ + getFilterValues: function () { + + // console.log("FINAL getFilterValues ============ 1"); + var values = this._getFilterValues(); + + //clear uid values + values.values["uid"] = []; + + values.values[BrowseConfig.filter.YEAR_FROM] = []; + values.values[BrowseConfig.filter.YEAR_TO] = []; + + + // console.log(values); + return values; + }, + + /** + * Clear Values for the filter id + * @param filterid + * @param values + * @returns {Object} values + */ + + clearFilterValue: function (filterid, values) { + + if (values.values[filterid]) { + values.values[filterid] = []; + } + + return values; + }, + + /** + * Process the time range so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processTimeRange: function (filter) { + + var year_from = filter.values[BrowseConfig.filter.YEAR_FROM], year_to = filter.values[BrowseConfig.filter.YEAR_TO]; + + //reformat to and from years + filter.values.year[0].value = year_from[0]; + filter.values.year[1].value = year_to[0]; + + filter.labels.year.range = year_from[0] + '-' + year_to[0]; + filter.labels[BrowseConfig.filter.YEAR_FROM] = []; + filter.labels[BrowseConfig.filter.YEAR_TO] = []; + + return filter; + }, + + + /** + * Process the ODA so that it complies with the expected D3S format + * @param filter + * @returns {Object} filter + */ + _processODA: function (filter) { + + var enumeration = [], oda = filter.values[BrowseConfig.filter.ODA][0]; + enumeration.push(oda); + + filter.values[BrowseConfig.filter.ODA] = {}; + filter.values[BrowseConfig.filter.ODA].enumeration = enumeration; + + + return filter; + }, + + + /** + * Process and get the filter values relevant to the OECD/ODA Dashboard + * @returns {Object} values + */ + + getOECDValues: function () { + + var values = this._getSelectedValues(); + + // console.log("getOECDValues ================"); + // console.log(values); + //var sectorSelected = this._hasSelections(BrowseConfig.filter.SECTORS, values); + var subSectorSelected = this._hasSelections(BrowseConfig.filter.SUB_SECTOR, values); + // var channelsSelected = this._hasSelections(BrowseConfig.filter.CHANNELS, values); + + // Set the sector and sub sector code lists references + // Updated to match the references as declared in the dataset metadata for the parentsector_code and purposecode fields + //if (sectorSelected) { + // values['parentsector_code'].codes[0].uid = s.codeLists.SECTORS.uid; + // } + + // Set Subsectors to crs_purposes + if (subSectorSelected) { + //TEST values['purposecode'].codes[0].uid = s.codeLists.SUB_SECTORS.uid; + } + + // Set Channels to crs_channel + //if (channelsSelected) { + // values['channelcode'].codes[0].uid = s.codeLists.CHANNELS.uid; + //} + + //console.log(values); + + + return this._updateValues(values, subSectorSelected); + }, + + + /** + * Check if values exist for the filter id + * @param filterid + * @returns {boolean} + */ + + hasValues: function (filterid) { + var values = this._getSelectedValues(); + return this._hasSelections(filterid, values); + }, + + + /** + * Get the values for the filter id + * @returns {Object} values + */ + getSelectedValues: function (filterId) { + var values = this._getSelectedValues(); + + var selectedValues = {}; + var itemSelected = this._hasSelections(filterId, values); + + if (itemSelected) { + selectedValues = values[filterId]; + //var filterObj = this._getObject(filterId, values); + //selectedValues = this._getSelected(filterObj); + } + + return selectedValues; + }, + + + /** + * Process and get the filter values relevant to the Indicators Dashboard + * @returns {Object} values + */ + + getIndicatorsValues: function () { + + var filterValues = this._getFilterValues(); + var values = filterValues.values; + var labels = filterValues.labels; + + var cloneObj, cloneLabelObj; + + // console.log("============================= VALUES =================== "); + // console.log(values); + + var donorSelected = this._hasSelections(BrowseConfig.filter.RESOURCE_PARTNER, values); + var recipientSelected = this._hasSelections(BrowseConfig.filter.RECIPIENT_COUNTRY, values); + + + if (donorSelected) { + cloneObj = this._getObject(BrowseConfig.filter.RESOURCE_PARTNER, values); + cloneLabelObj = this._getObject(BrowseConfig.filter.RESOURCE_PARTNER, labels); + } + if (recipientSelected) { + cloneObj = this._getObject(BrowseConfig.filter.RECIPIENT_COUNTRY, values); + cloneLabelObj = this._getObject(BrowseConfig.filter.RECIPIENT_COUNTRY, labels); + } + + + if (cloneObj) { + //======= UPDATE VALUES CONFIG + values[BrowseConfig.filter.COUNTRY] = cloneObj; + labels[BrowseConfig.filter.COUNTRY] = cloneLabelObj; + + //======= Set everything in the values to be removed except the country + for (var filter in values) { + if (filter !== BrowseConfig.filter.COUNTRY) { + values[filter] = []; + labels[filter] = {}; + } + } + } else { + // reset all filter values to empty + for (var filter in values) { + values[filter] = []; + labels[filter] = {}; + } + + } + + return filterValues; + }, + + /** + * Check if a filter has selections + * @param id + * @returns {*|boolean} + */ + isFilterSelected: function (id) { + var values = this._getSelectedValues(); + + + return this._hasSelections(id, values); + }, + + + /** + * Check if 'FAO Related Sectors' has been selected + * @returns {*|boolean} + */ + isFAOSectorsSelected: function () { + var values = this.getSelectedValues(BrowseConfig.filter.SECTOR); + + //console.log(values); + for (var i = 0; i < values.length; i++) { + if (values[i] === s.values.FAO_SECTORS) { + return true; + } + } + + return false; + }, + + + /** + * + * @param values + * @param subSectorSelected + * @returns {*} + * @private + */ + _updateValues: function (values, subSectorSelected) { + switch (this.isFAOSectorsSelected()) { + case true: + values = this._updateValuesWithSubSectors(values, this._getObject(BrowseConfig.filter.SECTOR, values), subSectorSelected); + break; + case false: + values = values; + break; + } + + return values; + }, + /** + * + * @param values + * @param sectorvaluesobj + * @param subSectorSelected + * @returns {*} + * @private + */ + _updateValuesWithSubSectors: function (values, sectorvaluesobj, subSectorSelected) { + // console.log("_updateValuesWithSubSectors"); + // If no purposecodes have been selected + if (!subSectorSelected) { + // Get the purposecode filter component, which will contain all + // the purposecodes (sub-sectors) associated with the selected 'FAO-related Sectors' + var purposeCodeComponent = this.filter.getDomain(BrowseConfig.filter.SUB_SECTOR); + + if (purposeCodeComponent) { + var codes = []; + + //======= UPDATE VALUES CONFIG + // Add purposecode to values + values[BrowseConfig.filter.SUB_SECTOR] = {}; + values[BrowseConfig.filter.SUB_SECTOR].codes = []; + values[BrowseConfig.filter.SUB_SECTOR].codes[0] = $.extend(true, {}, sectorvaluesobj); // clone the codes configuration of sectorvaluesobj + + // console.log( values['purposecode'].codes[0]); + // Get the source of the purposecode component + // and populate the codes array with the IDs of the source items + $.each(purposeCodeComponent.options.source, function (index, sourceItem) { + // console.log(sourceItem); + codes.push(sourceItem.id); + }); + + values[BrowseConfig.filter.SUB_SECTOR].codes[0].codes = codes; + values[BrowseConfig.filter.SUB_SECTOR].codes[0].uid = s.codeLists.SUB_SECTORS.uid; + values[BrowseConfig.filter.SUB_SECTOR].codes[0].version = s.codeLists.SUB_SECTORS.version; + + } + } + + // Set Values parentsector_code to be removed + values[BrowseConfig.filter.SECTOR] = {}; + values[BrowseConfig.filter.SECTOR].removeFilter = true; + + return values; + }, + + + /** + * Set Recipient Region Code + * @param item + * @param result + * @private + */ + _setRegionCode: function (item, result) { + item.regioncode = result; + }, + + /** + * Set Recipient Gaul Code + * @param item + * @param result + * @private + */ + + _setGaulCode: function (item, result) { + item.gaulcode = parseInt(result); + }, + + /** + * Region Code Error Handler + * @param error + * @param item + * @private + */ + _regioncodeerror: function (error, item) { + if (item.regioncode) { + delete item['regioncode'] + } + }, + /** + * General Error Handler + * @param error + * @private + */ + _error: function (error) { + console.log("error", error); + }, + + + /** + * Get the Region Code associated with the Recipient code + * @param recipientCodes + * @private + */ + _onRecipientChangeGetRegionCode: function (recipientCodes) { + var self = this; + // console.log("IS RECIPIENT") + if (recipientCodes.length > 0) { + // console.log("IS RECIPIENT value") + return Q.all([ + self._createRegionPromiseData(s.codeLists.REGIONS.uid, s.codeLists.REGIONS.version, s.codeLists.REGIONS.level, s.codeLists.REGIONS.direction, recipientCodes[0]) + ]).then(function (c) { + return c; + }, function (r) { + console.error(r); + }); + } + + }, + + + /** + * Get the Gaul Code associated with the Recipient code + * @param recipientCodes + * @private + */ + _onRecipientChangeGetGaulCode: function (recipientCodes) { + var self = this; + var odaProps = self._getPropertiesObject(BrowseConfig.filter.ODA, self._getFilterValues().values[BrowseConfig.filter.ODA]); + var filterConfig = self._getFilterConfigById(BrowseConfig.filter.RECIPIENT_COUNTRY); + + if (recipientCodes.length > 0) { + // console.log("IS RECIPIENT value") + return Q.all([ + self._createGaulPromiseData(odaProps[BrowseConfig.filter.ODA].enumeration[0], Utils.getLocale(), filterConfig.cl.uid, filterConfig.cl.version, recipientCodes) + ]).then(function (c) { + return c; + }, function (r) { + console.error(r); + }); + } + + }, + + + /** + * Set Recipient properties + * @param item + * @param result + * @private + */ + _setRecipientProperties: function (result, props) { + var self = this; + + if (result) { + var regionCodeResult = result[0][0]; + var gaulCodeResult = result[1][0]; + + self._setRegionCode(props, regionCodeResult.parents[0].code); + self._setGaulCode(props, gaulCodeResult.data[0][0]); + } + }, + + + /** + * Create GET Promise to get Region code + * @param codelist + * @param version + * @param depth + * @param direction + * @param findcode + * @returns {*} + * @private + */ + _createRegionPromiseData: function (codelist, version, depth, direction, findcode) { + + var baseUrl = BaseConfig.SERVER + BaseConfig.CODELIST_SERVICE + BaseConfig.HIERARCHY_CODES_POSTFIX; + baseUrl += "/" + codelist + "/" + version + "/" + findcode + "?depth=" + depth + "&direction=" + direction; + + + return Q($.ajax({ + url: baseUrl, + type: "GET", + dataType: 'json' + })).then(function (c) { + return c; + }, function (r) { + console.error(r); + }); + }, + + /** + * Create POST Promise to get Gaul code + * @param dataset + * @param lang + * @param codelist + * @param version + * @param codes + * @returns {*} + * @private + */ + + _createGaulPromiseData: function (dataset, lang, codelist, version, codes) { + + var baseUrl = BaseConfig.SERVER + BaseConfig.D3P_POSTFIX + dataset + "?dsd=true&full=true&language=" + lang; + var data = [{ + "name": "filter", + "parameters": { + "rows": { + "recipientcode": { + "codes": [{ + "uid": codelist, + "version": version, + "codes": codes + }] + } + } + } + }, {"name": "filter", "parameters": {"columns": ["gaul0"]}}, { + "name": "page", + "parameters": {"perPage": 1, "page": 1} + }]; + + + return Q($.ajax({ + url: baseUrl, + type: "POST", + data: JSON.stringify(data), + contentType: "application/json", + dataType: 'json' + })).then(function (c) { + return c; + }, function (r) { + console.error(r); + }); + }, + + + /** + * Check if filter id has selections + * @param id + * @param data + * @returns {boolean} + * @private + */ + _hasSelections: function (id, data) { + //console.log(id); + if (_.has(data, id)) { + if (data[id].length > 0) { + // if (_.has(data[id], 'codes')) { + return true; + } + } + }, + /** + * Get the Object from the data based on the id (key) + * @param id + * @param data + * @returns {*} + * @private + */ + _getObject: function (id, data) { + if (_.has(data, id)) { + if (data[id].length > 0 || !_.isEmpty(data[id])) { + // if (_.has(data[id], 'codes')) { + return data[id]; + } + } + }, + + + _getFilterConfig: function (id) { + //console.log(this.config); + + var filter = _.find(this.config, function (obj, key) { + + return key === id; + // return obj.components[0].id === id; + }); + + + return filter; + }, + + _hasProp: function (filter, prop) { + var hasProp = _.find(filter, function (obj) { + if (filter[prop]) { + return true; + } + }); + return hasProp; + }, + + getConfigPropValue: function (id, prop) { + + // console.log("===============getConfigPropValue "+id + ' | '+prop); + var filterValue; + var filterItem = this._getFilterConfig(id); + + // console.log(filterItem); + + if (this._hasProp(filterItem, prop)) + filterValue = filterItem[prop]; + + // console.log(filterValue); + return filterValue; + }, + + _getPropertiesObject: function (id, value) { + var additionalProperties = {}; + additionalProperties[id] = value; + + return additionalProperties; + }, + + _unbindEventListeners: function () { + + }, + + dispose: function () { + this._unbindEventListeners(); + View.prototype.dispose.call(this, arguments); + } + + }); + + return FilterView; + }); diff --git a/src/js/views/browse/oda-dashboard-view.js b/src/js/views/browse/oda-dashboard-view.js new file mode 100644 index 00000000..b041ff54 --- /dev/null +++ b/src/js/views/browse/oda-dashboard-view.js @@ -0,0 +1,330 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'underscore', + 'views/base/view', + 'text!templates/browse/oda-dashboard.hbs', + 'config/browse/config-browse', + 'fx-dashboard/start', + 'lib/utils', + 'config/Config', + 'i18n!nls/browse', + 'i18n!nls/browse-dashboard', + 'handlebars', + 'lib/config-utils', + 'config/submodules/fx-chart/highcharts_template', + 'views/common/progress-bar', + 'amplify' +], function ($, _, View, template, BaseBrowseConfig, Dashboard, Utils, GeneralConfig, i18nLabels, i18nDashboardLabels, Handlebars, ConfigUtils, HighchartsTemplate, ProgressBar) { + + 'use strict'; + + var defaultOptions = { + item_container_id: '-container', + PROGRESS_BAR_CONTAINER: '#progress-bar-holder', + events: { + CHANGE: 'change' + }, + itemTypes: { + CHART: 'chart' + }, + css: { + COLLAPSE: 'collapse' + } + }; + + /** + * + * Creates a new ODA/OECD Dashboard View + * Instantiates the FENIX dashboard submodule, ProgressBar and responsible for all oda/oecd dashboard related functionality. + * Including updates to the Dashboard model. + * @class DashboardView + * @extends View + */ + + var DashboardView = View.extend({ + + // Automatically render after initialize + autoRender: false, + + className: 'dashboard-browse', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (params) { + this.topic = params.topic; + this.model.on(defaultOptions.events.CHANGE, this.render, this); + this.dashboards = []; + + this.source = $(this.template).find("[data-topic='" + this.topic + "']"); + + //Initialize Progress Bar + this.progressBar = new ProgressBar({ + container: defaultOptions.PROGRESS_BAR_CONTAINER + }); + + View.prototype.initialize.call(this, arguments); + + }, + + getTemplateData: function () { + return i18nLabels; + }, + + render: function () { + this.setElement(this.container); + this._unbindEventListeners(); + + // Update the language related labels in the item configurations (charts) + for (var it in this.config.items) { + var item = this.config.items[it]; + this._updateChartExportTitles(this.config.items[it], i18nDashboardLabels[item.id], this.model.get('label')); + } + + $(this.el).html(this.getTemplateFunction()); + }, + + attach: function () { + View.prototype.attach.call(this, arguments); + + this.configUtils = new ConfigUtils(); + }, + + + getTemplateFunction: function () { + + // Update the language related labels in the dashboard template + + this.compiledTemplate = Handlebars.compile(this.source.prop('outerHTML')); + + var model = this.model.toJSON(); + + var data = $.extend(true, model, i18nLabels, i18nDashboardLabels); + + return this.compiledTemplate(data); + + }, + + setDashboardConfig: function (config) { + this.baseConfig = config; + + this.config = config; + this.config_type = config.id; + this.config.baseItems = config.items; + this.config.environment = GeneralConfig.ENVIRONMENT; + + // Sets Highchart config for each chart + _.each(this.config.items, _.bind(function (item) { + if (!_.isEmpty(item)) { + if (item.type == defaultOptions.itemTypes.CHART) { + if (item.config.config) { + item.config.config = $.extend(true, {}, HighchartsTemplate, item.config.config); + } else { + item.config.config = $.extend(true, {}, HighchartsTemplate); + } + } + } + + }, this)); + }, + + renderDashboard: function () { + var self = this; + + this.config.el = this.$el; + this.dashboard = new Dashboard(this.config); + + this._loadProgressBar(); + }, + + _disposeDashboards: function () { + if (this.dashboard && $.isFunction(this.dashboard.dispose)) { + this.dashboard.dispose(); + } + }, + + + _collapseDashboardItem: function (itemId) { + // Hide/collapse Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + + $(this.source).find(itemContainerId).addClass(defaultOptions.css.COLLAPSE); + + }, + + _expandDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).removeClass(defaultOptions.css.COLLAPSE); + }, + + + _showDashboardItem: function (itemId) { + // Show Item container + var itemContainerId = '#' + itemId + defaultOptions.item_container_id; + $(this.source).find(itemContainerId).show(); + }, + + updateDashboardTemplate: function (filterdisplayconfig) { + + if (filterdisplayconfig) { + + var hide = filterdisplayconfig.hide; + var show = filterdisplayconfig.show; + + for (var idx in hide) { + this._collapseDashboardItem(hide[idx]); // in the template + } + + for (var idx in show) { + this._expandDashboardItem(show[idx]); // in the template + } + + } + + }, + + + updateDashboardConfigUid: function (uid) { + this.config.uid = uid; + }, + + showHiddenDashboardItems: function (showItems) { + if (showItems) { + for (var itemId in showItems) { + this._showDashboardItem(showItems[itemId]); + } + } + + }, + + setProperties: function (props) { + if (props) { + if (props["regioncode"]) + this.regioncode = props["regioncode"]; + else + this.regioncode = null; + + if (props["gaulcode"]) + this.gaulcode = props["gaulcode"]; + else + this.gaulcode = null; + + if (props["oda"]) + this.config.uid = props["oda"]; + + + } else { + this.regioncode = null; + this.gaulcode = null; + } + }, + + updateItemsConfig: function () { + this._updateDashboardRegionalMapConfiguration(); + }, + + _updateDashboardRegionalMapConfiguration: function () { + var map = _.filter(this.config.items, {id: 'regional-map'})[0]; + var regioncode = this.regioncode; + var gaulcode = this.gaulcode; + + if (map && regioncode) { + + if (map.filter && map.filter.un_region_code) { + map.filter.un_region_code = []; + + if (regioncode) + map.filter.un_region_code.push(regioncode) + } + + if (map.config && map.config.fenix_ui_map) { + if (gaulcode) { + map.config.fenix_ui_map.zoomToCountry = []; + map.config.fenix_ui_map.zoomToCountry.push(gaulcode); + } + } + } + + }, + + _updateChartExportTitles: function (chartItem, title, subtitle) { + + if (chartItem.config.config) { + var chartItemTitle = chartItem.config.config.exporting.chartOptions.title, + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle; + + if (!chartItemTitle || !chartItemSubTitle) { + chartItemTitle = chartItem.config.config.exporting.chartOptions.title = {}; + chartItemSubTitle = chartItem.config.config.exporting.chartOptions.subtitle = {}; + } + + chartItemTitle.text = title; + chartItemSubTitle.text = subtitle; + } + }, + + rebuildDashboard: function (filter) { + var self = this; + + this._disposeDashboards(); + + this.config.filter = filter; + + // Build new dashboard + this.dashboard = new Dashboard( + this.config + ); + + // Load Progress bar + this._loadProgressBar(); + + }, + + + _loadProgressBar: function () { + var self = this, increment = 0, percent = Math.round(100 / this.config.items.length); + + this.progressBar.reset(); + this.progressBar.show(); + + + this.dashboard.on('ready', function () { + self.progressBar.finish(); + }); + + + this.dashboard.on('ready.item', function () { + increment = increment + percent; + self.progressBar.update(increment); + }); + }, + + + _bindEventListeners: function () { + + }, + + + _unbindEventListeners: function () { + // Remove listeners + + }, + + dispose: function () { + + this._disposeDashboards(); + + this._unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + } + + + }); + + return DashboardView; +}); diff --git a/src/js/views/common/progress-bar.js b/src/js/views/common/progress-bar.js new file mode 100644 index 00000000..e9483799 --- /dev/null +++ b/src/js/views/common/progress-bar.js @@ -0,0 +1,102 @@ +/*global define, Promise, amplify */ + +define([ + "jquery", + "loglevel", + 'underscore', + 'text!templates/common/progress-bar.hbs', + 'lib/utils', + 'i18n!nls/common', + 'handlebars', + 'amplify' +], function ($, log, _, template, Utils, i18nLabels, Handlebars) { + + 'use strict'; + + var defaultOptions = { + id: '#progress-bar' + }; + + function ProgressBar(o) { + + var self = this; + + $.extend(true, this, defaultOptions, o); + this.$container = $(this.container); + + this._renderTemplate(); + + this._render(); + + return this; + } + + ProgressBar.prototype._renderTemplate = function () { + + this.progressBar = Handlebars.compile(template); + + }; + + ProgressBar.prototype._render = function () { + var html = this.progressBar; + $(this.container).html(html); + }; + + + ProgressBar.prototype.update = function (value) { + + this.$el = this.$container.find(this.id); + + var $div = this.$el.find('div'); + + var $span = $div.find('span'); + + $div.attr('aria-valuenow', value); + $div.css('width', value + '%'); + + if(value !== 0) { + $span.text(' '+ i18nLabels.loading_in_progress + ' ... '+ value + '% '+i18nLabels.completed); + } + + }; + + + ProgressBar.prototype.finish = function () { + var self = this; + + this.update(100); + + setTimeout(function (){ + self.hide(); + }, 1500) + + }; + + ProgressBar.prototype.reset = function () { + this.update(0); + }; + + ProgressBar.prototype._dispose = function () { + this._unbindEventListeners(); + this._destroyProgressBar(); + + }; + + ProgressBar.prototype.hide = function () { + var $div = this.$el; + $div.addClass("collapse"); + }; + + ProgressBar.prototype.show = function () { + var $div = this.$el; + $div.removeClass("collapse"); + }; + + ProgressBar.prototype._destroyProgressBar = function () { + + log.info("Destroyed Progress Bar: "); + }; + + return ProgressBar; + +}); \ No newline at end of file diff --git a/src/js/views/common/title-view.js b/src/js/views/common/title-view.js new file mode 100644 index 00000000..a3db4fb1 --- /dev/null +++ b/src/js/views/common/title-view.js @@ -0,0 +1,315 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'views/base/view', + 'text!templates/common/title.hbs', + 'config/Events', + 'handlebars', + 'amplify' +], function ($, View, template, Events, Handlebars) { + + 'use strict'; + + var defaults= { + title: '' + }; + var s = { + css_classes: { + TITLE_ITEMS_LIST: "#fx-title-items-list" + }, + exclusions: ['all'] + // events: { + // ADD_ITEM: 'fx.title.item.add', + // REMOVE_ITEM: 'fx.title.item.remove' + // } + }; + + var TitleView = View.extend({ + + // Automatically render after initialize + autoRender: true, + + className: 'title-bar', + + // Save the template string in a prototype property. + // This is overwritten with the compiled template function. + // In the end you might want to used precompiled templates. + template: template, + + initialize: function (config) { + View.prototype.initialize.call(this, arguments); + this.options = $.extend({}, defaults, config); + + this.render(); + }, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + this._initVariables(); + + this._bindEventListeners(); + + }, + + getTemplateFunction: function() { + var source = $(this.template).prop('outerHTML'); + var template = Handlebars.compile(source); + return template({header: this.options.header}); + }, + + render: function () { + this.setElement(this.container); + + $(this.container).html(this.getTemplateFunction()); + }, + + + build : function(){ + var self = this, range = '', containsExclusion; + + var optionLabels = self.options.labels; + + + $.each( optionLabels, function( id, item ) { + for(var exclusion in s.exclusions){ + var exclude = s.exclusions[exclusion]; + if(item[exclude]) { + optionLabels[id] = []; + } + } + }); + + $.each(optionLabels, function( id, item ) { + + if(!$.isEmptyObject(item)){ + //console.log(id); + //console.log(item); + + item.id = id; + + var key = Object.keys(item)[0]; + item.label = item[key]; + + self._addItem(item); + } + }); + + /**$.each( this.options.labels, function( id, item ) { + + if(!$.isEmptyObject(item)){ + + item.id = id; + + var key = Object.keys(item)[0]; + item.label = item[key]; + console.log(item.id, item.label); + + + if(id === 'year-from' || id === 'year-to' ) { + + if(range.length > 0){ + range += ' - ' + item.label; + } else + range = item.label + + item.id = 'year'; + item.label = range; + } + + + + self._addItem(item); + } + });**/ + + + }, + + setLabels : function(labels){ + this.options.labels = labels; + + }, + + show : function(){ + this._cleanUpDuplications(); + + this.$titleItemsList.find('li').each(function(){ + $(this).show(); + $(this).addClass('current-sel-element'); + }); + + }, + + getItemText: function (modulename) { + return this._findListItem(modulename).text(); + }, + + _cleanUpDuplications: function(){ + // Check if there is more than 1 list item that has the same data-module + // If the check is true, then there will only be 2 items - 1 visible and 1 hidden item + // If true: the first hidden item's text should be stored and then the hidden item removed + // The stored text value is used to replace the text of the remaining item in the array + + this.$titleItemsList.find('[data-module]').each(function() { + var matchingItemsArr = $('[data-module=' + $(this).attr('data-module') + ']'); + + if (matchingItemsArr.length > 1) { + var replacementText = ""; + + for (var i = 0; i < matchingItemsArr.length; i++) { + if ( $(matchingItemsArr[i]).is(':hidden')) { + replacementText = $(matchingItemsArr[i]).text(); // store hidden item's text value + matchingItemsArr[i].remove(); // remove hidden item + break; + } + } + + // Get the first item and set the replacement text + $(matchingItemsArr[0]).text(replacementText); + + } + }); + }, + + cloneTitle: function (){ + var clonedTitle = this.$titleItemsList.clone().prop('id', 'clone'); + clonedTitle.find('li').removeAttr('data-module'); + clonedTitle.removeClass('list-inline fx-title-resume'); + clonedTitle.find('li').removeClass('current-sel-element'); + + return clonedTitle; //$('ul[class*="fx-title-items"]').clone().appendTo('#title-bar-block'); + }, + + getTitleAsLabel: function (){ + this._cleanUpDuplications(); + + var arr = this.$titleItemsList.find('li').map(function(i, el) { + return $(el).text(); + }).get(); + + return arr.join(' / '); + }, + + getTitleAsArray: function (){ + this._cleanUpDuplications(); + + var arr = this.$titleItemsList.find('li').map(function(i, el) { + return $(el).text(); + }).get(); + + return arr; + }, + + _initVariables: function () { + this.$titleItemsList = this.container.find(s.css_classes.TITLE_ITEMS_LIST); + }, + + _bindEventListeners: function () { + //amplify.subscribe(s.events.ADD_ITEM, this, this._onAdd); + //amplify.subscribe(s.events.REMOVE_ITEM, this, this._onRemove); + + amplify.subscribe(Events.TITLE_ADD_ITEM, this, this._onAdd); + amplify.subscribe(Events.TITLE_REMOVE_ITEM, this, this._onRemove); + + }, + + _onAdd: function (e) { + // console.log("============== "); + // console.log(e); + + /* $.each( optionLabels, function( id, item ) { + for(var exclusion in s.exclusions){ + var exclude = s.exclusions[exclusion]; + if(item[exclude]) { + optionLabels[id] = []; + } + } + });*/ + + + this._addItem(e); + }, + + _onRemove: function (id) { + this.removeItem(id); + }, + + _addItem: function (item) { + this._updateList(item); + }, + + removeItem: function (name) { + this._findListItem(name).remove(); + }, + + hideItem: function (name) { + this._findListItem(name).hide(); + }, + + _addToList: function (item) { + this.$titleItemsList.append(this._createListItem(item)); + }, + + _findListItem: function(name) { + return this.$titleItemsList.find('[data-module="' + name + '" ]'); + }, + + _findHiddenItem: function(name) { + var hiddenItems = this.$titleItemsList.find('[data-module="' + name + '" ]').filter(':hidden'); + + if(hiddenItems.length > 0) { + return hiddenItems; + } + }, + + _replaceListItemText: function(item, replace) { + item.text(replace.label) + }, + + _updateList: function (item) { + + var hiddenItem = this._findHiddenItem(item.id); + + if(hiddenItem) { + this._replaceListItem(hiddenItem, item); + } + else + this._addToList(item) + + }, + + _createListItem: function (item) { + return $('
  • '+ this._formatText(item.label) +'
  • '); + }, + + _formatText: function(text){ + if(text === text.toUpperCase()) + return (text.toLowerCase()).charAt(0).toUpperCase() + text.slice(1).toLowerCase(); + else + return text; + }, + + _replaceListItem: function (find, item) { + this._replaceListItemText(find, item); + }, + + _unbindEventListeners: function () { + // Remove listeners + // amplify.unsubscribe(s.events.ADD_ITEM, this._onAdd); + // amplify.unsubscribe(s.events.REMOVE_ITEM, this._onRemove); + + amplify.unsubscribe(Events.TITLE_REMOVE_ITEM, this._onAdd); + amplify.unsubscribe(Events.TITLE_ADD_ITEM, this._onRemove); + }, + + dispose: function () { + this._unbindEventListeners(); + View.prototype.dispose.call(this, arguments); + } + + }); + + return TitleView; +}); diff --git a/src/js/views/home-view.js b/src/js/views/home-view.js new file mode 100644 index 00000000..622273f5 --- /dev/null +++ b/src/js/views/home-view.js @@ -0,0 +1,192 @@ +/*global define, amplify*/ +define([ + 'jquery', + 'views/base/view', + 'text!templates/home/home.hbs', + 'config/Events', + 'config/Config', + 'config/home/home-config', + 'config/home/test-data', + 'fx-m-c/start', + 'fx-dashboard/start', + 'amplify', + 'select2' +], function ($, View, template, E, C, + + DashboardConfig, + DashboardTestData, + + MapCreator, Dashboard) { + + 'use strict'; + + var s = { + MAP_CONTAINER : "#home-map", + DROPDOWN_CONTAINER : "#factsheet-select", + DASHBOARD_CONTENT: "#dashboard-content" + }; + + var HomeView = View.extend({ + + autoRender: true, + + className: 'home', + + template: template, + + attach: function () { + + View.prototype.attach.call(this, arguments); + + //update State + amplify.publish(E.STATE_CHANGE, {menu: 'home'}); + + this._initVariables(); + + this._renderComponents(); + + }, + + + dispose: function () { + + this.unbindEventListeners(); + + View.prototype.dispose.call(this, arguments); + }, + + unbindEventListeners: function () { + + this.$el.find(s.DROPDOWN_CONTAINER).select2().off('change'); + }, + + _initVariables: function () { + + this.dashboards = []; + + this.environment = C.ENVIRONMENT; + + }, + + _renderComponents: function () { + + this._renderDropdown(); + + this._renderDashboard(); + }, + + _renderDropdown : function () { + + this.$el.find(s.DROPDOWN_CONTAINER).select2().on('change', function () { + + window.open(this.value, '_blank'); + + }); + + }, + + _renderDashboard: function () { + + var conf = DashboardConfig; + + console.log(conf); + if (conf && !_.isEmpty(conf) && conf.dashboard) { + + this._disposeDashboards(); + + this.dashboards.push(new Dashboard($.extend(true, { + environment: this.environment, + el: $(s.DASHBOARD_CONTENT) + }, conf.dashboard))); + + + // this._createMap(s.MAP_CONTAINER); + } + }, + + _disposeDashboards : function () { + + _.each( this.dashboards, _.bind(function (dashboard) { + if (dashboard && $.isFunction(dashboard.dispose)) { + dashboard.dispose(); + } + }, this)); + + this.dashboards = []; + }, + + _createMap: function() { + + console.log('DashboardTestData', DashboardTestData); + + var countries = []; + + var data = _.map(DashboardTestData, function(d) { + + var v = {}; + + v[ d[0] ] = parseFloat(d[2]); + + countries.push( parseFloat(d[0]) ); + + return v; + }); + + var m = new FM.Map(s.MAP_CONTAINER, { + plugins: { + disclaimerfao: false, + geosearch: false, + mouseposition: false, + controlloading: false, + scalecontrol: false + }, + guiController: { + overlay: false, + baselayer: false, + wmsLoader: false + }, + boundaries: true, + zoomToCountry: countries + }); + + m.createMap(0, 0, 1); + + var joincolumnlabel = 'adm0_name', + joincolumn = 'adm0_code', + mu = 'Tonnes'; + + m.addLayer( new FM.layer({ + layers: 'fenix:gaul0_3857', + layertitle: 'ODA 2014', + joincolumn: joincolumn, + joincolumnlabel: joincolumnlabel, + joindata: data, + mu: mu, + measurementunit: mu, + jointype: 'shaded', + colorramp: 'Blues', + layertype: 'JOIN', + openlegend: true, + defaultgfi: true, + opacity: '0.7', + lang: 'en', + customgfi: { + content: { + en: "
    {{" + joincolumnlabel + "}}
    {{{" + joincolumn + "}}}
    " + }, + showpopup: true + } + }) ); + + m.addLayer( new FM.layer({ + layers: 'fenix:gaul0_line_3857', + layertitle: 'Country Boundaries', + //urlWMS: 'http://fenixapps.fao.org/geoserver', + opacity: '0.9', + lang: 'en' + }) ); + } + }); + + return HomeView; +}); diff --git a/src/js/views/site-view.js b/src/js/views/site-view.js index fdfff147..f9803e8f 100644 --- a/src/js/views/site-view.js +++ b/src/js/views/site-view.js @@ -114,20 +114,38 @@ define([ this.onMenuUpdate(); + this.onMenuAddBreadcrumb(); + amplify.subscribe(E.MENU_UPDATE, this, this.onMenuUpdate); + amplify.subscribe(E.MENU_ADD_BREADCRUMB, this, this.onMenuAddBreadcrumb); + amplify.subscribe(E.MENU_RESET_BREADCRUMB, this, this.onMenuResetBreadcrumb); }, onStateUpdate: function (s) { - State = $.extend(true, State, s); amplify.publish(E.MENU_UPDATE); + amplify.publish(E.MENU_ADD_BREADCRUMB); }, onMenuUpdate: function () { + this.topMenu.select(State.menu); + }, - this.topMenu.select(State.menu); + onMenuAddBreadcrumb: function () { + if(State.breadcrumb!= null){ + this.topMenu.appendBreadcrumbItem(State.breadcrumb, true); + } + }, + + onMenuResetBreadcrumb: function () { + // console.log("========================= Breadcrumb reset"); + if(State.breadcrumb!= null){ + this.topMenu.resetBreadcrumb(); + State.breadcrumb = null; + } } + }); return SiteView; diff --git a/submodules/fenix-ui-DSDEditor b/submodules/fenix-ui-DSDEditor new file mode 160000 index 00000000..62e07b68 --- /dev/null +++ b/submodules/fenix-ui-DSDEditor @@ -0,0 +1 @@ +Subproject commit 62e07b68445d811185e4f4c5f7e786dddb64197a diff --git a/submodules/fenix-ui-DataEditor b/submodules/fenix-ui-DataEditor new file mode 160000 index 00000000..82adcd7a --- /dev/null +++ b/submodules/fenix-ui-DataEditor @@ -0,0 +1 @@ +Subproject commit 82adcd7a0646721f03ad67b7e1be574bcf0d6fc7 diff --git a/submodules/fenix-ui-analysis b/submodules/fenix-ui-analysis new file mode 160000 index 00000000..e6ac6341 --- /dev/null +++ b/submodules/fenix-ui-analysis @@ -0,0 +1 @@ +Subproject commit e6ac634190d05ffcfa4d16479f38d75bbec15497 diff --git a/submodules/fenix-ui-catalog b/submodules/fenix-ui-catalog new file mode 160000 index 00000000..dad12b7c --- /dev/null +++ b/submodules/fenix-ui-catalog @@ -0,0 +1 @@ +Subproject commit dad12b7c514cdbfea7deb98e229512eb97b0c4a7 diff --git a/submodules/fenix-ui-chart-creator b/submodules/fenix-ui-chart-creator new file mode 160000 index 00000000..82a48bb8 --- /dev/null +++ b/submodules/fenix-ui-chart-creator @@ -0,0 +1 @@ +Subproject commit 82a48bb8edf7e07091e976793fa442eab42988d9 diff --git a/submodules/fenix-ui-common b/submodules/fenix-ui-common new file mode 160000 index 00000000..71717831 --- /dev/null +++ b/submodules/fenix-ui-common @@ -0,0 +1 @@ +Subproject commit 71717831890e85211dc6d10996247eddbb7b4e3b diff --git a/submodules/fenix-ui-dashboard b/submodules/fenix-ui-dashboard new file mode 160000 index 00000000..61abb75f --- /dev/null +++ b/submodules/fenix-ui-dashboard @@ -0,0 +1 @@ +Subproject commit 61abb75fc6537716eccd0efddd1c24f8c61cef70 diff --git a/submodules/fenix-ui-data-management b/submodules/fenix-ui-data-management new file mode 160000 index 00000000..952d6699 --- /dev/null +++ b/submodules/fenix-ui-data-management @@ -0,0 +1 @@ +Subproject commit 952d669983ecf507af5e2a86de7ca8126f698016 diff --git a/submodules/fenix-ui-dataUpload b/submodules/fenix-ui-dataUpload new file mode 160000 index 00000000..2a03d588 --- /dev/null +++ b/submodules/fenix-ui-dataUpload @@ -0,0 +1 @@ +Subproject commit 2a03d5882fe90b566a4ee4eef336533be5c9a29e diff --git a/submodules/fenix-ui-datamanagement-commons b/submodules/fenix-ui-datamanagement-commons new file mode 160000 index 00000000..ba8435c0 --- /dev/null +++ b/submodules/fenix-ui-datamanagement-commons @@ -0,0 +1 @@ +Subproject commit ba8435c099f5ad29ade74520db61c0fcd637eb0f diff --git a/submodules/fenix-ui-filter b/submodules/fenix-ui-filter new file mode 160000 index 00000000..203407c4 --- /dev/null +++ b/submodules/fenix-ui-filter @@ -0,0 +1 @@ +Subproject commit 203407c42513d4e8595efa21d150e5833bce1996 diff --git a/submodules/fenix-ui-map b/submodules/fenix-ui-map new file mode 160000 index 00000000..442f905c --- /dev/null +++ b/submodules/fenix-ui-map @@ -0,0 +1 @@ +Subproject commit 442f905cdc969841cac77265081f9438ea111e53 diff --git a/submodules/fenix-ui-map-creator b/submodules/fenix-ui-map-creator new file mode 160000 index 00000000..c36c36e3 --- /dev/null +++ b/submodules/fenix-ui-map-creator @@ -0,0 +1 @@ +Subproject commit c36c36e3430e312dd6343a30ad182042ab72214e diff --git a/submodules/fenix-ui-menu b/submodules/fenix-ui-menu new file mode 160000 index 00000000..9ddc2821 --- /dev/null +++ b/submodules/fenix-ui-menu @@ -0,0 +1 @@ +Subproject commit 9ddc28216e38cbc5b071f3d6dc8c2256b9f5ba6f diff --git a/submodules/fenix-ui-metadata-editor b/submodules/fenix-ui-metadata-editor new file mode 160000 index 00000000..0d112ca7 --- /dev/null +++ b/submodules/fenix-ui-metadata-editor @@ -0,0 +1 @@ +Subproject commit 0d112ca7254fa9c71e73c2dd8199d71ecb4f686d diff --git a/submodules/fenix-ui-metadata-viewer b/submodules/fenix-ui-metadata-viewer new file mode 160000 index 00000000..33f67ce5 --- /dev/null +++ b/submodules/fenix-ui-metadata-viewer @@ -0,0 +1 @@ +Subproject commit 33f67ce5375897fb71b9d2007aed9cb486280328 diff --git a/submodules/fenix-ui-reports b/submodules/fenix-ui-reports new file mode 160000 index 00000000..7023a4b0 --- /dev/null +++ b/submodules/fenix-ui-reports @@ -0,0 +1 @@ +Subproject commit 7023a4b0ad80ed94cbc9e07105e884b05c0e94ca diff --git a/submodules/fenix-ui-table-creator b/submodules/fenix-ui-table-creator new file mode 160000 index 00000000..a0d13449 --- /dev/null +++ b/submodules/fenix-ui-table-creator @@ -0,0 +1 @@ +Subproject commit a0d13449da83190b0e3020c42d41f2d79a41c5d6 diff --git a/submodules/fenix-ui-visualization-box b/submodules/fenix-ui-visualization-box new file mode 160000 index 00000000..10cb1686 --- /dev/null +++ b/submodules/fenix-ui-visualization-box @@ -0,0 +1 @@ +Subproject commit 10cb1686826ded0cb331edb765fb8e1be9bb21d2