there is a modal window
toggle: function() { var self= this; var myDialog = new Dialog({ title: 'My Dialog', content:'<div class="data-action">' + this.state.name + '</div>' + '<br>' + '<div class="center margin-top">' + '<button data-action="cancel">Cancel</button>' + ' ' + '<button data-action="ok">OK</button>' + '</div>', style: 'width: 300px; height: 1000px;' }); myDialog.show(); there is a filter
'get state': function() { var state = {}; var self = this; Object.keys(this.filters) .forEach(function(filterName) { var filter = self.filters[filterName]; state[filterName] = filter.state.values; }); return state; }, 'set state': function(value) { var self = this; Object.keys(this.filters) .forEach(function(filterName) { var filter = self.filters[filterName]; filter.state = value[filterName]; }); } How to push such a filter into this window, he writes Object in the window instead of a filter?
define(['ipsp/util/class-construct', 'ipsp/util/dom-builder', 'ipsp/ui/widget', './filter', './helper', 'dijit/Dialog'], function(classConstruct, domBuilder, Widget, Filter, HELPER, Dialog) { 'use strict'; function RouteFilter(options, context) { Widget.apply(this, arguments); this.context = context; this.filters = Object.create(null); for (var prop in options) { if (Object.hasOwnProperty.call(options, prop)) { this.filters[prop] = new Filter( { name: prop, values: HELPER.FILTERING.MARSHALLING[prop](options[prop], 'in') }, this ); } } this.dom = domBuilder( '<div class="filter-editor short">' + '<button data-action="expand"></button>' + '<br>' + '<div class="wrap-filters-table"></div>' + '<br>' + '</div>' )[0]; this.wrapFiltersTableNode = this.dom.querySelector('.wrap-filters-table'); this.buttonNode = this.dom.querySelector('[data-action="expand"]'); this.buttonNode.addEventListener('click', this.toggle.bind(this)); } RouteFilter.defaultParams = function(routeFilterDataQuery) { var params = Object.create(null); routeFilterDataQuery.data .forEach(function(filterItem) { params[filterItem.id] = ''; }); return params; }; return classConstruct(RouteFilter, { instaniateDom: function() { var filters = Object.keys(this.filters).sort(); // пересортируем так, чтобы валюты, страны и суммы транзакций были сверху HELPER.FILTERING.PRIORITY_FILTERS .slice() .reverse() .forEach(function(filterName) { var filterIdx = filters.indexOf(filterName); if (filterIdx !== -1) { filters.splice(filterIdx, 1); filters.unshift(filterName); } }); var self = this; filters.forEach(function(filterName) { var filter = self.filters[filterName]; filter.instaniateDom(); if (HELPER.FILTERING.PRIORITY_FILTERS.indexOf(filterName) !== -1) { filter.append(self.wrapFiltersTableNode); } else { filter.append(self.dom); } }); this.updateButtonLabel(); }, toggle: function() { var self= this; var myDialog = new Dialog({ title: 'My Dialog', content:'<div class="data-action">' + this.text + '</div>' + '<br>' + '<div class="center margin-top">' + '<button data-action="cancel">Cancel</button>' + ' ' + '<button data-action="ok">OK</button>' + '</div>', style: 'width: 300px; height: 1000px;' }); myDialog.show(); this.dom.classList.toggle('short'); this.updateButtonLabel(); }, updateButtonLabel: function() { this.buttonNode.textContent = (this.dom.classList.contains('short') ? 'Expand' : 'Contract'); }, 'get state': function() { var state = {}; var self = this; Object.keys(this.filters) .forEach(function(filterName) { var filter = self.filters[filterName]; state[filterName] = filter.state.values; }); return state; }, 'set state': function(value) { var self = this; Object.keys(this.filters) .forEach(function(filterName) { var filter = self.filters[filterName]; filter.state = value[filterName]; }); } }, Widget); }); Here is the whole js mb file, which I didn’t understand and I’m not trying to filter the filter