/////////////////////////////////////////////////////////////////////////// // Copyright © 2014 - 2018 Esri. All Rights Reserved. // // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /////////////////////////////////////////////////////////////////////////// define(['dojo/_base/declare', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'dijit/_WidgetsInTemplateMixin', 'dojo/text!./templates/RelationshipConfig.html', 'dojo/dom-construct', 'dojo/_base/lang', 'dojo/_base/array' ], function(declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, template, domConstruct, lang, array) { return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { _def:null, declaredClass: 'jimu.dijit.RelationshipConfig', baseClass:'jimu-single-filter', templateString:template, fields:null,//array,{name,alias,type,/*optional*/ visible} config:null, title:'', postCreate: function(){ this.inherited(arguments); if(this.fields){ this.setFields(this.fields); } }, getConfig: function(){ var config = { tableId: this.tableId, fields:[] }; var trs = this.fieldsTable.getRows(); array.forEach(trs, lang.hitch(this, function(tr){ var rowData = this.fieldsTable.getRowData(tr); if (rowData.visibility) { config.fields.push({ name: rowData.name, alias: rowData.alias, type: tr.fieldType, showInInfoWindow:true }); } })); return config; }, setFields:function(fields, visibleFields){ if(fields instanceof Array && fields.length > 0){ this._setFields(fields, visibleFields); this.loading.hide(); } }, setTitle: function(val){ this.title = val; domConstruct.empty(this.titleLabel); domConstruct.create('div', { innerHTML: val }, this.titleLabel); }, clear:function(){ this.fieldsTable.clear(); }, _setFields:function(fields, visibleFields){ this.fields = array.filter(fields, function(item) { return item.type !== 'esriFieldTypeGeometry'; }); if (this.fields.length > 0) { array.forEach(this.fields, lang.hitch(this, function(fieldInfo) { var visible = false; if(visibleFields instanceof Array && array.indexOf(visibleFields, fieldInfo.name) >= 0){ visible = true; } this._addRow(fieldInfo, visible); })); } }, _addRow:function(fieldInfo, visible){ var rowData = { visibility: visible, name:fieldInfo.name, alias:fieldInfo.alias || fieldInfo.name }; var result = this.fieldsTable.addRow(rowData); if(result.success){ result.tr.fieldType = fieldInfo.type; } }, _destroySelf:function(){ this.destroy(); } }); });