JS2.OO.createClass("SchemaMatcher.Main");SchemaMatcher.Main.oo('extends',JS2.Main);(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('member','components',['Controls','Preview']);K.oo('method',"start",function(model){this.jq=$(this.htmlCache.main(DISPLAY.html(model.name)));this.seed.append(this.jq);this.seed.setSeed(this.jq);this.assign('merger',this.options.merger);this.assign('model',model);this.notify('initHTML');});})(SchemaMatcher.Main,SchemaMatcher);SchemaMatcher.Main.oo('setHTMLCache',{"main":function(){return"<div class='schemaMatcher'><h3>Merge "+arguments[0]+" into this table.<\/h3><div class='preview'><\/div><div class='controls'><input checked='checked' class='addRows' type='checkbox' \/><span class='addRowsDesc'>include new rows in merge?<\/span><span class='submit fact-button'>  <span class='button h p'>    <span>      <a href='javascript:void(0);' name='Submit'>        Initiate Merge      <\/a>    <\/span>  <\/span><\/span><span class='clear fact-button'>  <span class='button h p'>    <span>      <a href='javascript:void(0);' name='Submit'>        Clear      <\/a>    <\/span>  <\/span><\/span><\/div><\/div>"}});JS2.OO.createClass("SchemaMatcher.Controls");(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('member','dependencies','preview');K.oo('method',"e_initHTML",function(){this.jq=this.seed.first('>.controls');this.jqButton=this.jq.find('>.submit');var TMP_SEL_MARKER=this.SEL_MARKER||JS2.SEL_MARKER;TMP_SEL_MARKER.addVal(TMP_SEL_MARKER.getRealClassScope(this),"submit",this.jqButton,null);this.jqClear=this.jq.find('>.clear');this.jqAddRows=this.jq.find('>.addRows');this.jqArDesc=this.jq.find('>.addRowsDesc');this.registerEvents();});K.oo('method',"registerEvents",function(){var self=this;this.jqButton.click(function(){self.submit();});this.jqClear.click(function(){self.seed.jq.hide();});this.jqArDesc.click(function(){var checked=self.jqAddRows[0].checked;self.jqAddRows[0].checked=!checked;});});K.oo('method',"submit",function(){var params=this.preview.getMapping();params.controls=this;params.addRows=this.jqAddRows[0].checked;if(params.isEmpty&&!params.addRows){alert("Please select a column to merge or append to your table.");}else{this.merger.submit(params);}});K.oo('method',"merged",function(){this.seed.html('New data (from '+DISPLAY.dsPage(this.model.urlName,this.model.name,255)+')  has been added into your table. Click "save this view" to make these changes permanent.');});})(SchemaMatcher.Controls,SchemaMatcher);JS2.OO.createClass("SchemaMatcher.Pivot");(function(K,Package){var self=K;var _super=JS2.OO['super'];})(SchemaMatcher.Pivot,SchemaMatcher);JS2.OO.createClass("SchemaMatcher.Preview");(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('member','GRID_CLASS',"SchemaMatcher.Grid");K.oo('method',"initialize",function(options){this.mappings=options.mappings;});K.oo('method',"e_initHTML",function(){this.jq=this.seed.first('.preview');this.grid=APP(JS2.OO.get(this.GRID_CLASS),{seed:this.jq,height:200,mapColumns:this.model.mapColumns,mappings:this.mappings});this.grid.start();this.grid.setColumns(this.model.columns);this.grid.setRows(this.model.sampleRows);});K.oo('method',"getMapping",function(){var ret=this.grid.getMapping();ret.datasetId=this.model.datasetId;return ret;});})(SchemaMatcher.Preview,SchemaMatcher);JS2.OO.createClass("SchemaMatcher.Grid.Main");SchemaMatcher.Grid.Main.oo('extends',GridSimple.Main);(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('member','components',['Mappers','Resizer']);K.oo('method',"getMapping",function(){var ret={};this.notify('getMapping',ret);return ret;});})(SchemaMatcher.Grid.Main,SchemaMatcher.Grid);JS2.OO.createClass("SchemaMatcher.Grid.Resizer");SchemaMatcher.Grid.Resizer.oo('extends',GridSimple.Resizer);(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('member','MIN_COLUMN_WIDTH',110);})(SchemaMatcher.Grid.Resizer,SchemaMatcher.Grid);JS2.OO.createClass("SchemaMatcher.Grid.Mappers");(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('method',"initialize",function(options){this.mapColumns=options.mapColumns;this.width=options.width;this.mappings=options.mappings;this.mapping=[];this.selectors=[];this.buildDatatypeOrder();});K.oo('method',"buildDatatypeOrder",function(){this.datatypeOrder={};for(var i=0,c;c=this.mapColumns[i];i++){if(!this.datatypeOrder[c.datatype]){this.datatypeOrder[c.datatype]=[];}
if(!c.isPrimary){this.datatypeOrder[c.datatype].push(c);}}});K.oo('method',"initHTML",function(){this.initiated=true;});K.oo('method',"e_resizeWidth",function(){this.resizeWidth();});K.oo('method',"e_hScroll",function(params){this.jqMergeContainer[0].style.left='-'+params.left+'px';});K.oo('method',"e_initCols",function(){if(!this.initiated)this.initHTML();var cols=this.data.columns;this.jqWidget.html(this.htmlCache.main());this.jqMergeMask=this.jqWidget.first('.mergeMask');this.jqMergeContainer=this.jqMergeMask.first('.mergeActions');this.jqMergeMask.width(this.width);for(var i=0,col;col=cols[i];i++){this.optionsForCol(col,i);}
this.jqSelectors=this.jqMergeContainer.find('.column');this.resizeWidth();});K.oo('method',"resizeWidth",function(){this.dim.setColumns(this.jqSelectors,{jqParent:this.jqMergeContainer,adjust:1});});K.oo('method',"optionsForCol",function(col,idx){var jq=this.jqMergeContainer.append('<div class="column">&nbsp;</div>').children(':last')
if(col.isPrimary)return;var options={jq:jq,mergeColumns:this.datatypeOrder[col.datatype],htmlCache:this.htmlCache,column:col,mapping:this.mappings[col.id]};this.selectors.push(new SchemaMatcher.Grid.Selector2(options));});K.oo('method',"e_getMapping",function(ret){ret.isEmpty=true;var cols=this.data.columns;var mapping={};var addColumns=[];for(var i=0,s;s=this.selectors[i];i++){var info=s.getMergeInfo();if(info){if(info.type=='append'){addColumns.push(info.columnId);ret.isEmpty=false;}else if(info.type=='map'&&info.val){if(!mapping[info.val])mapping[info.val]=[];mapping[info.val].push(info.columnId);ret.isEmpty=false;}}}
ret.mapping=mapping;ret.addColumns=addColumns;});})(SchemaMatcher.Grid.Mappers,SchemaMatcher.Grid);JS2.OO.createClass("SchemaMatcher.Grid.Selector2");(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('method',"initialize",function(options){this.jq=options.jq;this.column=options.column;this.mergeColumns=options.mergeColumns;this.mapping=options.mapping;this.initHTML();this.buildList();});K.oo('method',"initHTML",function(){this.jqSB=$(this.htmlCache.main());this.jq.append(this.jqSB);this.sb=new Sci.SelectBoxHelper(this.jqSB);});K.oo('method',"hide",function(){this.sb.jq.hide();});K.oo('method',"show",function(){this.sb.jq.show();});K.oo('method',"buildList",function(){this.jq.attr('title',"Select a field in your table that you'd like to merge "+this.column.name+' into.');this.sb.addItem('ignore',"-- Ignore Column --");this.sb.jq.css({width:'100%',margin:'3 0'});if(this.mergeColumns&&this.mergeColumns.length>0){this.sb.addComment('Merge to:');for(var i=0,c;c=this.mergeColumns[i];i++){this.sb.addItem(c.id,'- '+c.name);}}
this.sb.addComment('Append to Table:');this.sb.addItem('append','- '+this.column.name);if(this.mapping)this.sb.selectValue(this.mapping);});K.oo('method',"getMergeInfo",function(){var val=this.sb.value();if(val=='ignore'||val=='')return false;var info={columnId:this.column.id};if(val=='append'){info.type='append';}else{info.type='map';info.val=val;}
return info;});})(SchemaMatcher.Grid.Selector2,SchemaMatcher.Grid);JS2.OO.createClass("SchemaMatcher.Grid.Selector");(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('method',"initialize",function(options){for(var key in options){this[key]=options[key];}
this.start();});K.oo('method',"start",function(){this.initHTML();this.registerEvents();});K.oo('method',"initHTML",function(){this.jq.html(this.htmlCache.selector(this.column.name));this.jqStatus=this.jq.first('.status');this.jqMerge=this.jqStatus.first('.merge');this.jqAppend=this.jqStatus.first('.append');this.jqSelector=this.jq.first('.selector');this.jqMergeItems=this.jqSelector.first('.merge>ol');this.jqAppendItems=this.jqSelector.first('.append>ol');this.jqItems=this.jqSelector.find('ol');this.jqClear=this.jq.first('.clear');this.buildList();this.hide();});K.oo('method',"buildList",function(){for(var i=0,c;c=this.mergeColumns[i];i++){this.jqMergeItems.append(this.htmlCache.item({val:c.id,html:c.name,count:(i%2==0?'even':'odd')}));}
this.jqAppendItems.append(this.htmlCache.item({val:'',html:'Append <strong>'+this.column.name+'</strong>',count:'odd'}));});K.oo('method',"registerEvents",function(){var self=this;this.jqItems.click(function(e){self.select(e.target);});this.jqItems.find('li').hover(function(e){self.hover(e.target,true);},function(e){self.hover(e.target,false);});this.jqClear.click(function(e){self.clear();});this.jqStatus.click(function(e){self.toggle();});});K.oo('method',"toggle",function(){this.jqSelector.toggle();});K.oo('method',"hide",function(){this.jqSelector.hide();});K.oo('method',"clear",function(){this.jqStatus.removeClass('selected');this.jqStatus.removeClass('merge');this.jqStatus.removeClass('append');this.type=null;this.hide();});K.oo('method',"getMergeInfo",function(){if(this.jqStatus.is('.selected')){var value=this.jqItems.first('.selected').attr('val');var info={};if(value==''){info.type='append';info.columnId=this.column.id;}else{info.type='merge';info.value=value;info.columnId=this.column.id;}
return info;}else{return false;}});K.oo('method',"hover",function(ele,isHover){this.jqItems.find('li').removeClass('hover');if(isHover){if(!$(ele).is('li'))return;$(ele).addClass('hover');}});K.oo('method',"select",function(ele){for(var i=0;i<2;i++){if($(ele).is('li'))break;ele=ele.parentNode;}
if(!$(ele).is('li'))return;var value=ele.getAttribute('val');this.jqItems.find('li').removeClass('selected');$(ele).addClass('selected');this.jqStatus.addClass('selected');if(value==''){this.jqStatus.removeClass('merge');this.jqStatus.addClass('append');}else{this.jqStatus.addClass('merge');this.jqStatus.removeClass('append');}
this.hide();});})(SchemaMatcher.Grid.Selector,SchemaMatcher.Grid);SchemaMatcher.Grid.Mappers.oo('setHTMLCache',{"column":function(){return"<div class='column'><\/div>"},"main":function(){return"<div class='mergeMask'><div class='mergeActions'><\/div><\/div>"},"selector":function(fieldName){return"<a class='status'><span class='merge'>merge<\/span>&nbsp;or&nbsp;<span class='append'>append<\/span><\/a><div class='selector'><div class='merge'><div class='description'>Select a field in your table that you'd like to merge&nbsp;<strong>"+fieldName+"<\/strong>&nbsp;into:<hr \/><\/div><ol><\/ol><\/div><div class='append'><div class='description'>Append this field to your table:<hr \/><\/div><ol><\/ol><\/div><a class='clear'>clear<\/a><\/div>"},"item":function(params){return"<li class='"+params.count+"' val='"+params.val+"'>"+params.html+"<\/li>"}});SchemaMatcher.Grid.Selector2.oo('setHTMLCache',{"main":function(){return"<select><\/select>"}});