// ----------------------------------------------------------------------------------------------------------- // Functions for generating output XML // ----------------------------------------------------------------------------------------------------------- var CRowAttrs = { HasIndex:1, Level:1, LevelImg:1, Hasch:1, State:1, Focused:1, CalcOrderAuto:1, Filtered:1, ExpandCol:1 } // ----------------------------------------------------------------------------------------------------------- TGP.GetUploadFormat = function(src){ var f = src.Format.toLowerCase(), F = { }; F.Dtd = f=="dtd"; F.Json = f=="json"; F.Json2 = f=="json"; F.Sep = F.Json ? "\":" : "="; F.Spc = F.Json ? ",\"" : " "; F.Spc1 = F.Json?"\"":" "; F.One = F.Json ? "\":1" : "=\"1\""; F.Str = F.Json ? (src.Xml==2?StringToJsonX:StringToJson) : StringToXml; F.Start = F.Json ? "{\"id\":\"" : ""; return F; } // ----------------------------------------------------------------------------------------------------------- // Returns next not deleted row MS.Cfg$Upload; TGP.NextChanges = function(row){ var r = row.nextSibling; while(r && r.Deleted) r = r.nextSibling; return r; } ME.Cfg$Upload; // ----------------------------------------------------------------------------------------------------------- // Returns previous not deleted row MS.Cfg$Upload; TGP.PrevChanges = function(row){ var r = row.previousSibling; while(r && r.Deleted) r = r.previousSibling; return r; } ME.Cfg$Upload; // ----------------------------------------------------------------------------------------------------------- // Returns string with row changes for cookies MS.Cfg; TGP.GetRowChangesCfg = function(row){ var S = "", C = this.Cols; if(row.Deleted) S = "D"; else if(row.Added){ var def = row.Def, par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row), ppar = Get(row,"Par"); S = "A&"+(ppar?ppar:"")+"&"+def.Name+"&" + (par.id ? par.id : par.Pos!=null ? par.Pos : "") + "&" + (next && next.id ? next.id : "") + "&"+(row.Copy?row.Copy:""); for(var c in C){ if(row[c]!=null && row[c]!=def[c] && (!C[c].Formula && (!row.Calculated || !row[c+"Formula"])||this.CalculateChanges) && typeof(row[c])!="function"){ S += "&"+c+"&"+escape(row[c]); } } } else if(row.Changed || row.Moved){ if(row.Changed) S = "C"; if(row.Moved){ var par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row); S = "M&"+row.Moved+"&" + (par.id ? par.id : par.Pos!=null ? par.Pos : "") + "&" + (next && next.id ? next.id : "") + "'"; } if(row.Changed){ if(row.Cells) { for(var i=0;i0&&this.GetType(row,col.replace("Orig",""))=="Date")){ if(!val&&val!="0") return ""; MS.Hirji; var hir = this.Lang.Format.Hirji; if(hir){ if(hir==1) this.Lang.Format.Hirji = 0; if(hir==2) this.Lang.Format.Hirji = 1; } ME.Hirji; var D = this.Lang.Format.DateToString(val,this.DateStrings==2?"yyyy-MM-dd HH:mm:ss":(this.DateStrings==1?null:this.DateStrings),this.IsRange(row,col)); MS.Hirji; if(hir) this.Lang.Format.Hirji = hir; ME.Hirji; return D; } ME.Date; if(fed==1 && row[col+"EFormula"]) { val = this.Lang.Format.FormulaPrefix+row[col+"EFormula"]; if(this.FormulaRelative==2) val = this.ConvertEditFormula(row,col,val,this.FormulaLocal ? 6 : 4); } return val; } // ----------------------------------------------------------------------------------------------------------- MS.Upload; // ----------------------------------------------------------------------------------------------------------- // Returns string with row changes // F is object with format settings // type = &1 - changes, &2 - selected, &4 - resized // For alldef&1 returns for added rows also values from defaults // For alldef&2 returns also calculated values TGP.GetRowChanges = function(row,F,type,alldef,attrs){ if(Is(row,"NoUpload") && !(alldef&32)) return ""; var S = "", C = this.Cols, T = this, X = { id:1,Added:1,Deleted:1,Changed:1,Moved:1,Parent:1,Next:1,Prev:1,Par:1,Selected:1,Copy:1,Resized:1,Height:1 }, fed = alldef&16 ? 0 : this.FormulaEditing; var isaudit=false;//****Ôö¼ÓÉó¼Æ¹¦ÄÜ by 2014-3-12 var au="";// function SetAttr(row,c){ if(X[c]) return; X[c] = 1; var v = alldef&1 ? Get(row,c) : row[c]; if(row[c+"_Link"]!=undefined) v=row[c+"_Link"];//***Ôö¼Ó´¦ÀíÖ»¶Á³¬Á´½ÓʱÐèҪȡԭʼֵ¶ø²»ÊDZíÃæµÄÖµ if(row[c+"_Img"]!=undefined) v=row[c+"_Img"];//***Ôö¼Ó´¦ÀíͼƬʱÐèҪȡԭʼֵ¶ø²»ÊDZíÃæµÄÖµ if(row[c+"_expr_val"]!=undefined) v=row[c+"_expr_val"]; if(v==null) v = ""; v = T.ConvertUpload(row,c,v,fed); if(F.Dtd) S += ""; else S += F.Spc+c+F.Sep+"\""+F.Str(v)+"\""; } function GetAttrs(row){ if(!attrs) return ""; var S = ""; for(var i=0;i=0 && C[c.slice(0,idx)]) v = T.ConvertEditFormula(row,c.slice(0,idx),v,T.FormulaLocal ? 6 : 4); } S += F.Spc+c+F.Sep+"\""+F.Str(v)+"\""; } return S; } function SetSpan(r){ if(r.Spanned) for(var col in C) if((r[col+"Span"]>1||r[col+"SpanOrig"]>1) && r[col+"Span"]!=r[col+"SpanOrig"] && r[col+"RowSpan"]!=0 && r[col+"Visible"]!=-2) SetAttr(r,col+"Span"); if(r.RowSpan) for(var col in T.SpanCols) if((r[col+"RowSpan"]>1||r[col+"RowSpanOrig"]>1) && r[col+"RowSpan"]!=r[col+"RowSpanOrig"] && r[col+"Span"]!=0) SetAttr(r,col+"RowSpan"); } function getAudit1(y){//*****by danaus 2014-3-25,È¡µÃÉó¼ÆÉèÖÃΪ1µÄ×ֶεÄÖµ£¬×é×°×÷ΪÒÔºó²éѯµÄÌõ¼þ,GT_tranCode functionÊÇ×÷Ϊ´¦ÀíË«ÒýºÅ var result=""; for(var A in C) { if(C[A].audit==1) { result+=","+GT_tranCode(y[A])+((y[A+"Orig"]!=undefined&&y[A+"Orig"]!="")?","+GT_tranCode(y[A+"Orig"]):""); } } return result+=","; }; if(row.Deleted) { S = F.Start+F.Str(row.id)+"\""+F.Spc+"Deleted"+F.One+(row.Added?F.Spc+"Added"+F.One:"")+GetAttrs(row); if(F.Dtd) S += ">"; //** if(alldef&2) for(var c in C) if(!C[c].NoUpload) SetAttr(row,c); È¥µô for(var c in C){ // if(!C[c].NoUpload){//***** È¥µô if(row[c+"_Img"]!=undefined){ row[c+"Orig"]=row[c+"_Img"]; } if(row[c+"_Link"]!=undefined){ row[c+"Orig"]=row[c+"_Link"]; } if(row[c+"_Orig46"]!=undefined){ row[c+"Orig"]=row[c+"_Orig46"]; } if(row[c+ "Orig"]!=undefined) row[c]=row[c+ "Orig"];//Ôö¼Ó´¦Àíɾ³ýÇ°ÐÞ¸ÄÁËÄÚÈݵÄÇé¿ö£¬ÐèÒª°ÑÔ­Öµ·µÔ­´¦Àí by 12-11-26 SetAttr(row,c); //****delete if(this.Cols[c].audit==2||this.Cols[c].audit==1){//****ɾ³ýµÄÇé¿öÏ£¬Ö»ÐèÒª´¦ÀíΪ2µÄÇé¿ö£¬Ö»ÊÇ°ÑËùÓÐΪ1µÄ×÷Ϊֵ¼Ó½øÈ¥¾Í¿ÉÒÔÁË var aus=""; if(row[c]==undefined||row[c]=="") continue; if(this.Cols[c]!=undefined&&this.Cols[c].Type=="Date"){ //´¦ÀíÈÕÆÚÊýÖµ·µ»Ø¸øÃæ°åʱºò£¬ÐèÒª¸ñʽ»¯³ÉÈÕÆÚÏÔʾ£¬ÒòΪ¸ñÏßÄÚ²¿ÊÇÓúÁÃë±íʾ by2014-6-24 if(row[c]!=undefined) row[c]= DateToString(row[c],this.Cols[c].Format); if(row[c+ "Orig"]!=undefined) row[c+ "Orig"]= DateToString(row[c+ "Orig"],this.Cols[c].Format); } var oldValue=row[c]; if(oldValue!=undefined&&oldValue!=""){ oldValue=(oldValue+"").replace(/\\/g, '\\\\'); } var newValue=row[c+ "Orig"]; if(newValue!=undefined&&newValue!=""){ newValue=(newValue+"").replace(/\\/g, '\\\\'); } var Header=this.Header[c]; if(Header!=undefined&&Header!=""){ Header=(Header+"").replace(/\\/g, '\\\\'); } if(au==""){ aus='{"newvalue":"'+GT_tranCode(newValue,true)+'","oldvalue":"'+GT_tranCode(oldValue,true)+ '","Fielddescr":"' + GT_tranCode(Header,true)+'","fieldname":"'+c+'","usercode":"","username":"","auditType":"delete","_YCAUDIT_":"1","formid":"'+this.formid+'","doccode":"'+(row["doccode"]==undefined?'':row["doccode"])+'","auditIndex":"'+getAudit1(row)+'"}'; }else{ aus=',{"newvalue":"'+GT_tranCode(newValue,true)+'","oldvalue":"'+GT_tranCode(oldValue,true)+ '","Fielddescr":"' + GT_tranCode(Header,true)+'","fieldname":"'+c+'","usercode":"","username":"","auditType":"delete","_YCAUDIT_":"1","formid":"'+this.formid+'","doccode":"'+(row["doccode"]==undefined?'':row["doccode"])+'","auditIndex":"'+getAudit1(row)+'"}'; } isaudit=true; au+=aus; } // } } S += F.Dtd ? "" : F.End; if(isaudit) S+=au+",";//****°ÑÐèÒªÉó¼ÆµÄ¼Óµ½ÁíÒ»¸öÐÂÐУ¬ÀàÐÍÊÇ_YCAUDIT_ } else if(row.Added || row.Moved==2&&alldef&8){ var def = row.Def, par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row), ppar = Get(row,"Par"); //*** ²»ÐèҪ̫¶à²ÎÊý´«µÝ // S = F.Start+F.Str(row.id)+"\""+F.Spc+"Added"+F.One+(ppar?F.Spc+"Par"+F.Sep+"\""+ppar+"\"":"")+F.Spc+"Def"+F.Sep+"\""+def.Name // + "\""+F.Spc+"Parent"+F.Sep+"\"" + (par.id ? F.Str(par.id) : par.Pos!=null ? par.Pos : "") // + "\""+F.Spc+"Next"+F.Sep+"\"" + (next && next.id ? F.Str(next.id) : "") // + "\""+F.Spc+"Prev"+F.Sep+"\"" + (prev && prev.id ? F.Str(prev.id) : "") // + "\""; // if(type&2 && row.Selected) S += F.Spc+"Selected"+F.Sep+"\""+row.Selected+"\""; // if(type&4 && row.Resized) S += F.Spc+"Height"+F.Sep+"\""+row.Height+"\""; // if(row.Copy) S += F.Spc+"Copy"+F.Sep+"\""+row.Copy+"\""; S = F.Start+F.Str(row.id)+"\""+F.Spc+"Added"+F.One;//**²»ÐèҪ̫¶à²ÎÊý´«µÝ by 11-4-18 X.Def = 1; //*** TODO ²»Çå³þ±£Áô×îÐÂÕâ¸öÓÐûӰÏ죬ÔÚÕâÀï×ö¸ö±ê¼Ç£¬ÔÝʱ±£Áô S += GetAttrs(row); if(F.Dtd) S += ">"; MS.GenId; if(this.IdMore){ for(var i=0;i" : F.End; if(isaudit) S+=au+",";//****°ÑÐèÒªÉó¼ÆµÄ¼Óµ½ÁíÒ»¸öÐÂÐУ¬ÀàÐÍÊÇ_YCAUDIT_ } else if(row.Changed || row.Moved){ S = F.Start+F.Str(row.id)+"\""; MS.GenId; var CH = null; if(alldef&4 && this.IdMore) { CH = this.UpdateNewId(row,"NewId",0,row.Changed,row.Moved); if(row.NewId) S += F.Spc+"NewId"+F.Sep+"\""+row.NewId+"\""; } ME.GenId; if(row.Changed) S += F.Spc+"Changed"+F.One; if(row.Moved){ var par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row); S += F.Spc+"Moved"+F.Sep+"\""+row.Moved+"\""+F.Spc+"Parent"+F.Sep+"\"" + (par.id ? F.Str(par.id) : par.Pos!=null ? par.Pos : "") + "\""+F.Spc+"Next"+F.Sep+"\"" + (next && next.id ? F.Str(next.id) : "") + "\""+F.Spc+"Prev"+F.Sep+"\"" + (prev && prev.id ? F.Str(prev.id) : "") + "\""; } if(type&2 && row.Selected) S += F.Spc+"Selected"+F.Sep+"\""+row.Selected+"\""; if(type&4 && row.Resized) S += F.Spc+"Height"+F.Sep+"\""+row.Height+"\""; S += GetAttrs(row); if(F.Dtd) S += ">"; if(type&2 && row.Selected&2) { for(var c in C) if(row[c+"Selected"]) SetAttr(row,c+"Selected"); } if(row.Changed || alldef&2){ if(row.Cells) { for(var i=0;i" : F.End; if(isaudit) S+=au+",";//****°ÑÐèÒªÉó¼ÆµÄ¼Óµ½ÁíÒ»¸öÐÂÐУ¬ÀàÐÍÊÇ_YCAUDIT_ MS.GenId; if(CH) for(var id in CH) S += F.Start+F.Str(id)+"\""+F.Spc+"NewId"+F.Sep+"\""+CH[id]+"\""+F.End; ME.GenId; } else if(type&2 && row.Selected || type&4 && row.Resized) { S = F.Start+F.Str(row.id)+"\""; if(type&2 && row.Selected) S += F.Spc+"Selected"+F.Sep+"\""+row.Selected+"\""; if(type&4 && row.Resized) S += F.Spc+"Height"+F.Sep+"\""+row.Height+"\""; S += GetAttrs(row); if(F.Dtd) S += ">"; if(type&2 && row.Selected&2) { for(var c in C) if(row[c+"Selected"]) SetAttr(row,c+"Selected"); } if(alldef&2) for(var c in C) if(!C[c].NoUpload) SetAttr(row,c); }else if(this.cp&&row.Kind=="Data"&&row.id!="Fix1"){//***¸´µ¥Ê±ºòÐèÒª°ÑÕâЩÊý¾Ý×÷ΪÐÂÔö Ö»ÓÐÊÇdataµÄÐкͲ»ÊÇͳ¼ÆÐÐ var def = row.Def, par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row), ppar = Get(row,"Par"); S = F.Start+F.Str(row.id)+"\""+F.Spc+"Added"+F.One;//**²»ÐèҪ̫¶à²ÎÊý´«µÝ by 11-4-18 S += GetAttrs(row); if(F.Dtd) S+=">"; MS.GenId; if(this.IdMore){ for(var i=0;i" : F.End; }else if(this.btnId!=""&&row.Kind=="Data"&&row.id!="Fix1"){//***µãOA°´Å¥Ê±ÐèÒª°Ñµ±Ç°¸ñÏßÊý¾ÝÌá½»µ½ºǫ́ ÔòÖ»ÓÐÊÇdataµÄÐÐÇÒ²»ÊÇͳ¼ÆÐÐ var def = row.Def, par = row.parentNode, next = this.NextChanges(row), prev = this.PrevChanges(row), ppar = Get(row,"Par"); S = F.Start+F.Str(row.id)+"\""+F.Spc+"OAChanged"+F.One;//**²»ÐèҪ̫¶à²ÎÊý´«µÝ by 11-4-18 S += GetAttrs(row); if(F.Dtd) S+=">"; MS.GenId; if(this.IdMore){ for(var i=0;i" : F.End; } else if(this.SaveSpan) { SetSpan(row); if(S) S = F.Start + F.Str(row.id) + "\"" + F.Spc + "Changed" + F.One + (F.Dtd?">":"") + S + (F.Dtd?"":F.End); } return S; } // ----------------------------------------------------------------------------------------------------------- // Returns changes of variable rows - recursion TGP.GetChildrenChanges = function(row,F,type,alldef,attrs){ var A = [], p = 0; for(var r=row.firstChild;r;r=r.nextSibling){ A[p] = this.GetRowChanges(r,F,type,alldef,attrs); if(A[p]) p++; var D = this; if(r.DetailCol){ for(var rr=r;rr.DetailRow;rr=rr.DetailRow[0]) if(rr.DetailGrid) D = rr.DetailGrid[0]; } A[p] = D.GetChildrenChanges(r,F,type,alldef,attrs); if(A[p]) p++; } return A.join(""); } // ----------------------------------------------------------------------------------------------------------- // Returns what changes grid contains (&1 changes, &2 selected rows) TGP.HasChanges = function(row){ var ret = 0,max = (this.Resizing?4:0)+(this.Selecting?2:0)+1; if(!row){ var F = this.GetFixedRows(); for(var i=0;i only, cannot be used with row // type = &1 - changess, &2 selected, &4 resized // For alldef&1 returns for added rows also values from defaults // For alldef&2 returns also calculated values TGP.GetChanges = function(row,type,alldef,attrs,F){ if(!F) F = this.GetUploadFormat(this.Source.Upload); //*** Ôö¼Ó this.Ps var gridstart = (F.Json?"{"+this.Ps+" \"IO\":{":"", chgstart = F.Json ? "\"Changes\":[" :"", chgend = F.Json ? "]" : ""; if(row) { var chg = this.GetRowChanges(row,F,type,alldef,attrs); if(!chg) return ""; if(F.Json && chg.slice(-1)==',') chg = chg.slice(0,-1); return gridstart+chgstart + chg + chgend+gridend; } if(this.SaveOrder) return (type?"":gridstart+chgstart) + this.GetChangesOrder() + (type?"":chgend+gridend); var A = [], p = 0; //***È¥µôͳ¼ÆÁеÄÌá½» //var R = this.GetFixedRows(); //for(var i=0;i l) r = this.GetNext(r); this.AcceptChanges(n,1); } else { this.AcceptChanges(r,1); r = this.GetNext(r); } } if(this.RefreshDetail) this.RefreshDetail(); MS.Pivot; if(this.PivotDetail) for(var id in this.PivotDetail) this.PivotDetail[id].AcceptChanges(null,1); ME.Pivot; var C = this.Cols; for(var c in C) { if(C[c].Deleted) this.DelCol(c); else if(C[c].Added) { C[c].Added = 0; if(this.ColorState&4) this.ColorCol(c); } } this.SaveOrigData(); return; } if(row.Deleted && Get(row,"NoUpload")!=2){ if(row==this.FRow) this.FRow = null; this.DelRow(row); } else if((row.Added || row.Changed || row.Moved) && Get(row,"NoUpload")!=2){ MS.GenId; if(this.IdMore) this.UpdateNewId(row,"id",this.SetIds,row.Changed,row.Moved); ME.GenId; if(row.Changed){ var calcchg = this.CalculatedChanges; if(row.Cells){ for(var i=0;i=48&&s1<=57||s1==32||s1==45) s1 = ';'; else { s1 = run.charAt(0); s2 = run.charCodeAt(1); if((s2>=48&&s2<=57||s2==45)&&s1!=32) { s2 = ','; run = run.slice(1); } else { s2 = run.charAt(1); run = run.slice(2); } } if(s1=='['&&s2=='{'){ run = FromJSON("[{"+run); if(typeof(run)!="string") { for(var i=0;i=0&&!rr[j+hs]&&rr[j+hs]!="0";j--); rr.length = j+hs+1; } run[i] = rr.join(s2); } } if(rr[1+hs]=="-") { chg = 1; run.splice(i--,1); } } if(chg){ row[C.GanttRun] = (s1==';'&&s2==','?"":s1+s2)+run.join(s1); this.RefreshCell(row,C.GanttRun); } } } } } ME.GanttRun; ME.Gantt; if(row.DetailRow) for(var i=0;i1 && row[c+"RowSpan"]!=0) row[c+"SpanOrig"] = row[c+"Span"]; } } if(row.RowSpan){ for(var c in this.SpanCols) { if(row[c+"RowSpanOrig"]) row[c+"RowSpanOrig"] = null; if(row[c+"RowSpan"]>1 && row[c+"Span"]!=0) row[c+"RowSpanOrig"] = row[c+"RowSpan"]; } } } MS.Pivot; if(!master && this.PivotDetail) for(var id in this.PivotDetail) this.PivotDetail[id].AcceptChanges(row,1); ME.Pivot; if(!master && this.RefreshDetail) this.RefreshDetail(); } // ----------------------------------------------------------------------------------------------------------- // Returns all grid data // type = &7 = rows, 0 - none, 1 - changed, 2 - selected, 3 - selected + changed, 5 - all fixed, 6 - all variable, 7 - all // type&8 = configuration from cookies, &16 - Cfg, &32 - Def, &64 - Cols, &128 - Header, &256 - Panel+Toolbar+MenuCfg+Pager, &512 - Img // type&1024 = Lang, &0x10000 - no , &0x20000 - no TGP.GetXmlData = function(type,attrs,colvis,U,row,rowvis){ var flags = ""; if(!U) U = this.Source.Upload; if(type==null) { type = U.Type; flags = U.Flags; } var names, otype = type; MS.UploadType; MS.Debug; names = "changes,selected,resized,expanded,hidden,body,data,all,fixed,settings,config,configxlsx,cookie,cfg,def,cols,root,menu,actions,animations,pagers,resources,zoom,calendars,media,other,lang,languages,text,complete,defaults,allcols,nodelete,noio,nogrid,gantt,span,spanned,newid,accepted,index,nogantt,autocols,focus,editattrs,cells,noempty,focused,fullmoved,noformula,noupload"; ME.Debug; if(type && type-0+""==type) { var t = type&7; type = this.BitArrayToFlags(type&~7,",,,settings,cfg,def,cols,,other,,lang,,cookie,,,,nogrid,noio"); if(t==3) { type["changed"] = 1; type["selected"] = 1; } else type[["","changes","selected","","","","body","all"][t]] = 1; } else { if(type&&typeof(type)=="string"&&type.toLowerCase().indexOf("complete")>=0) type += ",all,cols,cfg,def,calendars,resources,zoom,other,lang,text"; type = this.ConvertFlags((type?type:(type==null?"changes":""))+(flags&&type!=""?",":"")+(flags?flags:""),names); } ME.UploadType; if(attrs==null) attrs = U.Attrs; if(typeof(attrs)=="string") attrs = attrs.split(","); var C = this.Cols, rspn = 0, cspn = 0, noformula = type["noformula"], fed = noformula ? 0 : this.FormulaEditing; if(attrs) { var A = [], p = 0; for(var i=0;iA.RowSpan?1:0),1); A.push("Img","Link"); for(var i=0;i=0 && (v=="0"||v==1) && C[n.replace("RowSpan","")]) continue; ME.RowSpan; MS.ColSpan; if(cspn && row.Spanned && n.indexOf("Span")>=0 && (v=="0"||v==1) && C[n.replace("Span","")]) continue; ME.ColSpan; if(v==null && alldef && row.Def) { v = row.Def[n]; if(!v&&v!="0"&&C[n]) v = null; } var cn = n; MS.Calc; if(cidx){ if(!C[n]) { var c = GetColFromCell(n); if(c&&C[c]){ if(C[c].HasIndex) cn = cidx[c]+n.slice(c.length); else if(O&&C[c].Deleted) continue; } } else if(C[n].HasIndex) cn = cidx[n]; else if(O&&C[n].Deleted) continue; } ME.Calc; if(C[n]&&fed==1&&row[n+"EFormula"]!=null ? o&&row[n+"EFormula"]==o[n+"EFormula"] : o ? o[cn]==v||!v&&!o[cn]&&isNaN(v)&&isNaN(o[cn]) : v==null) continue; if(C[n]) v = T.ConvertUpload(row,n,v,fed); if(v==null) v = ""; SetAttr(cn,v); } } function SetRowAttrs(nm,row,reg){ if((accept||ridx) && row.Deleted) return; A[p++] = F.Json ? "\n{" : "\n<"+nm; var pp = p; if(ridx&&row.HasIndex) SetAttr("id",row[ridx]); else if(row.id) SetAttr("id",row.id); if(row.Def && (row.Def.Name!="R"||alldef)) SetAttr("Def",row.Def.Name); var cp = p, o = null; if(O){ o = O[row[ridx?ridx:"id"]]; if(!ridx){ var rn = T.GetNextSibling(row), rp = T.GetPrevSibling(row), par = row.parentNode.Page?null:row.parentNode; if((par?par.id:null)!=(o?o.parentNode:null)||(rn?rn.id:null)!=(o?o.nextSibling:null)||(rp?rp.id:null)!=(o?o.previousSibling:null)){ SetAttr("Moved",1); SetAttr("Parent",par?par.id:""); SetAttr("Next",rn?rn.id:""); SetAttr("Prev",rp?rp.id:""); } else if(!o) SetAttr("Added",1); } else if(o?row.Level!=o.Level:row.Level>0) SetAttr("Level",row.Level); } if(attrs||allcols) { if(attrs) SetCustomAttrs(row); if(allcols) SetRowCols(row); } else { var D = alldef ? null : row.Def; for(var n in row) if(!RA[n]) { var v = row[n]; if(D && (v===D[n]||CRowAttrs[n])) continue; if(nogantt && n.indexOf(nogantt)==0 || ridx && n==ridx || noformula&&n.indexOf("EFormula")>0) continue; MS.RowSpan; if(row.RowSpan && n.indexOf("RowSpan")>=0 && (v=="0"||v==1) && T.Cols[n.replace("RowSpan","")]) continue; ME.RowSpan; MS.ColSpan; if(row.Spanned && n.indexOf("Span")>=0 && (v=="0"||v==1) && T.Cols[n.replace("Span","")]) continue; ME.ColSpan; if(v==null && alldef && row.Def) v = row.Def[n]; var cn = n; MS.Calc; if(cidx){ if(!C[n]) { var c = GetColFromCell(n); if(c&&C[c]){ if(C[c].HasIndex) cn = cidx[c]+n.slice(c.length); else if(O&&C[c].Deleted) continue; } } else if(C[n].HasIndex) cn = cidx[n]; else if(O&&C[n].Deleted) continue; } ME.Calc; if(o ? o[cn]==v || fed&&C[n]&&(fed==1?row[n+"EFormula"]&&row[n+"EFormula"]==o[cn+"EFormula"]:!v&&!o[cn]&&isNaN(v)&&isNaN(o[cn])) : v==null) continue; if(C[n]) { if(C[n].Type!="Gantt") v = T.ConvertUpload(row,n,v,fed); } else if(fed && (fed==1||T.FormulaRelative==2)){ var idx = n.indexOf("EFormula"); if(idx>0 && C[n.slice(0,idx)]){ if(fed==1) continue; if(T.FormulaRelative==2) v = T.ConvertEditFormula(row,n.slice(0,idx),v,T.FormulaLocal ? 6 : 4); } } if(!reg||cn.search(reg)==0&&cn!="RowSpan") { if(v==null) v = ""; SetAttr(cn,v); } } } if(F.Json) RemoveFirst(pp); return cp!=p; } function SetRowChildren(nm,row,reg){ if((accept||ridx) && row.Deleted) return; var noup = Get(row,"NoUpload")-0 && !type["noupload"]; if(!noup){ var cp = p; if(!SetRowAttrs(nm,row,reg)&&noempty&&(!row.firstChild||O)) { p = cp; A.length = p; } else A[p++] = row.firstChild&&!O ? (F.Json?",\"Items\":[":">") : F.End; } for(var r=row.firstChild;r;r=r.nextSibling) SetRowChildren(r.tagName,r,reg); if(!noup && row.firstChild && !O) { if(F.Json) RemoveLast(); A[p++] = F.Json?"]\n},":"\n"; } } function SetRowCols(row){ var o = O ? O[row[ridx?ridx:"id"]] : null; for(var c in C){ if(c=="id" || C[c].NoUpload) continue; var v = alldef&1 ? Get(row,c) : row[c]; if(v==null) v = ""; v = T.ConvertUpload(row,c,v,fed); if(cidx && C[c].HasIndex) c = cidx[c]; if(o && (o[c]==v || o[c]==null&&v==="" || fed&&v&&row[c+"EFormula"]&&(v+"").slice(1)==o[c+"EFormula"])) continue; A[p++] = F.Spc+c+F.Sep+"\""+F.Str(v)+"\""; } } function GetAutoCols(){ var cnt = 0; for(var c in C) if(C[c].HasIndex) cnt++; return GetAttr("AutoCols",cnt); } function RemoveLast() { if(p && A[p-1] && A[p-1].slice(-1)==',') A[p-1] = A[p-1].slice(0,-1); } function RemoveFirst(pp) { if(A[pp] && A[pp].charAt(0)==',') A[pp] = A[pp].slice(1); } var RA = Grids.INames; if(!type["nogrid"]) A[p++] = F.Json ? "{" : ""; if(!type["noio"]) A[p++] = (F.Json?"\"IO\":{":""; for(var x in X) { if(F.Json2) { A[p++] = "\n{\"Name\":\""+x+"\""; } else if(F.Json) A[p++] = "\n\""+x+"\":{"; else { A[p++] = "\n"; } } ME.GanttExclude; // --- Resources --- MS.GanttResources; if(type["resources"]){ var X = this.Resources; if(X){ A[p++] = F.Json ? "\n\"Resources\":"+(F.Json2?"[":"{") : "\n"; for(var x in X) { if(F.Json2) { A[p++] = "\n{\"Name\":"+x+"\""; } else if(F.Json) A[p++] = "\n\""+x+"\":{"; else { A[p++] = "\n"; } } ME.GanttResources; // --- Zoom --- MS.GanttZoom; if(this.GanttZoom && type["zoom"]){ A[p++] = F.Json ? "\n\"Zoom\":[" : "\n"; for(var n in this.GanttZoom) SetAttrs("Z",this.GanttZoom[n],F.Json); if(F.Json) RemoveLast(); A[p++] = F.Json ? "]," :"\n"; } ME.GanttZoom; ME.Gantt; var cfg = ""; var set = type["settings"]||type["config"]||type["configxlsx"] ? { LeftWidth:3,MidWidth:3,RightWidth:3,PrintRows:2,PrintPageBreaks:1,PrintExpanded:1,PrintFiltered:1,PrintSelected:1,PrintPageRoot:1,PDFText:1, PrintPageWidth:2,PrintPageHeight:2,ExportType:2,Language:2,Style:2,GanttStyle:2,Size:2,Scale:2,ShowDeleted:1,PrintVisible:1,FormulaTip:1, Sort:4,Group:4,SearchAction:4,SearchExpression:4,SearchType:4,SearchCaseSensitive:4,SearchCells:4,SearchMethod:4,SearchDefs:4,SearchCols:4,Rtl:1 } : {}; if(type["settings"]||type["config"]){ set.ReversedTree = 1; set.ReversedColTree = 1; set.DefaultBorder = 1; set.HideZero = 1; set.FormulaShow = 1; } if(type["settings"]) { set.Focused = 4; set.FocusedCol = 4; set.FocusedPos = 4; set.FocusedRect = 4; set.FocusedTop = 4; set.FocusedLeft = 4; } else if(type["focused"]){ set.Focused = 3; set.FocusedCol = 3; set.FocusedPos = 3; set.FocusedRect = 3; set.FocusedTop = 3; set.FocusedLeft = 3; } if(this.ShowPrintPageBreaks>=0) set.ShowPrintPageBreaks = 1; // --- AutoCols --- if(type["autocols"]) { cfg += GetAutoCols(); } // --- Expanded --- if(type["expanded"]){ var chp = this.ChildPaging==3; for(var s="",r=this.GetFirst();r;r=this.GetNext(r)) if(r.Expanded && (r.firstChild||chp&&r.Count)) s += r[rid]+","; cfg += F.Spc+"Expanded"+F.Sep+"\""+F.Str(s.slice(0,-1))+"\""; } // --- Hidden --- if(type["hidden"]||type["settings"]){ var s = "", v = ""; if(rowvis) for(var id in rowvis) if(rowvis[id]) v += id + ","; else s += id + ","; function setvis(r){ var rid = ridx&&r.HasIndex?ridx:"id"; if((!rowvis||rowvis[r.id]==null) && Get(r,"CanHide") && (!O||!O[r[rid]]||!O[r[rid]].Visible!=!r.Visible)){ if(!r.Visible) s += r[rid]+","; else if(O) v += r[rid]+","; } } if(type["hidden"]) for(var r=this.GetFirst();r;r=this.GetNext(r)) setvis(r); for(var R=this.GetFixedRows(),i=0;ic.Width+cleft) right = c.Width+cleft; if(left<0) left = 0; cfg += F.Spc+"PrintVisibleLeft"+F.Sep+"\""+left+"\""; cfg += F.Spc+"PrintVisibleRight"+F.Sep+"\""+right+"\""; } ME.Gantt; if(type["settings"]) { cfg += F.Spc+"AllCols"+F.One; A[p++] = "\n"+this.GetCfgRequest(F,cfg); cfg = null; } } if(cfg) { if(cfg.charAt(0)==',') cfg = cfg.slice(1); A[p++] = (F.Json?"\n\"Cfg\":{":"\n"; for(var D in this.Def) { var zu = this.Def[D].Updated; delete this.Def[D].Updated; SetAttrs("D",this.Def[D],F.Json2); this.Def[D].Updated = zu; } if(F.Json) RemoveLast(); A[p++] = F.Json2 ? "]," : (F.Json ? "}," :"\n"); SetAttrs("Root",this.Root); } // --- DefCols --- if(type["def"] && type["cols"]){ A[p++] = F.Json ? "\n\"DefCols\":"+(F.Json2?"[":"{") : "\n"; for(var D in this.DefCols) { SetAttrs("D",this.DefCols[D],F.Json2); } if(F.Json) RemoveLast(); A[p++] = F.Json2 ? "]," : (F.Json ? "}," :"\n"); } // --- Cols --- if(type["cols"]||type["settings"]||type["selected"]&&this.SelectingCols){ var len = this.ColNames.length; var Cols1 = ["LeftCols"]; Cols1[len-1] = "RightCols"; var Cols2 = ["LeftCols"]; Cols2[len-1] = "RightCols"; var Reg = null; if(type["cols"]){ var s = CDebugAttrs.C.join("|") + CCellAttrs.CCell.join("|") + CCellAttrs.CICell.join("|") + "|On\\w+"; s += ("|"+CDebugAttrs.Panel.join("|")).replace(/\|\*\|/g,"|").replace(/\*/g,"\\w*") + "|Enum\\w*"; if(this.Gantt) { s += "|Gantt"+CDebugAttrs.CGantt.join("|Gantt") + "|Gantt"+CCellAttrs.CCellGantt.join("|Gantt") + "|Gantt"+CCellAttrs.CCellGanttX.join("\\d*|Gantt")+"\\d*"; s += "|GanttFormat\\d*|GanttHeader\\w*\\d*"; } Reg = new RegExp("^("+s+")$"); } for(var i=0;i"; if(N.length){ if(Cols1[i]) A[p++] = F.Json ? "\n\""+Cols1[i]+"\":"+(F.Json2?"[":"{") : "\n<"+Cols1[i]+">"; for(var ci=0;ci"; } if(i==len-2) A[p++] = F.Json ? "\n"+(F.Json2?"]":"}")+"," : "\n"; } } if(O) A[p++] = F.Json?"\n\"Changes\":[":"\n"; // --- fixed rows --- if(type["data"] || type["all"] || type["fixed"] || O){ if((this.Header.id!="Header"||this.Header.Kind!="Header")&&!O) A[p++] = (F.Json?"\n\"Header\":{":"\n"; for(var i=0;i"; } } } } // --- variable rows --- if(type["body"] || type["data"] || type["all"] || O){ var name = "Body"; if(!O) A[p++] = F.Json ? "\n\""+name+"\":[" : "\n<"+name+">"; var BA = { LevelImg:1,Level:1,Hasch:1,Page:1,State:1,LastAccess:1,Visible:1 }; var Reg = null; s = CDebugAttrs.I.join("|") + "|\\w+On\\w+"; if(this.Paging==3&&!O) s += "|\\w+"+CDebugAttrs.BCellICell.join("|\\w+"); s += ("|"+CDebugAttrs.Panel.join("|")).replace(/\|\*\|/g,"|").replace(/\*/g,"\\w+").replace(/\|/g,"|\\w+") + "|\\w+Enum\\w+"; s += "|\\w+"+CCellAttrs.Cell.join("|\\w+") + "|\\w+"+CCellAttrs.CCell.join("|\\w+") + "|\\w*"+CCellAttrs.CICell.join("|\\w*"); if(this.Gantt) s += "|\\w+Gantt"+CCellAttrs.CCellGantt.join("|\\w+Gantt") + "|\\w+"+CCellAttrs.CCellGanttX.join("\\d*|\\w+Gantt")+"\\d*"; var a = [], CC = this.Cols; for(var n in CC) if(CC[n].Type!="Gantt") a[a.length] = n; s += "|"+a.join("|"); Reg = new RegExp("^("+s+")$"); if(this.Paging==3&&!O) { for(var B=this.XB.firstChild;B;B=B.nextSibling){ var S = ""; if(B.id) S += GetAttr("id",B.id); for(var n in B) if(!RA[n] && !BA[n]) S += GetAttr(n,B[n]); if(F.Json){ if(S) { if(S.charAt(0)==',') S = S.slice(1); A[p++] = "\n{"+S+",\"Items\":["; } else A[p++] = "["; } else A[p++] = "\n"; for(var r=B.firstChild;r;r=r.nextSibling) SetRowChildren("I",r,Reg); if(F.Json) RemoveLast(); A[p++] = F.Json ? (S?"]},":"],") : "\n"; } if(F.Json) RemoveLast(); } else { if(!O) A[p++] = F.Json ? "[" : "\n"; var lr = null; if(this.AutoPages) lr = this.GetLastDataRow((alldef?16:0)+(U&&U.Name=="ExportPDF"?32:0)); for(var B=this.XB.firstChild;B;B=B.nextSibling) for(var r=B.firstChild;r;r=r.nextSibling) { SetRowChildren("I",r,Reg); if(r==lr) { B = this.XB.lastChild; break; } } if(O&&!ridx){ var N = this.Rows; for(var id in O) { var n = ridx?this.GetRowByIndex(id):N[id]; if(n&&!n.Deleted) continue; A[p++] = F.Json ? "\n{" : "\n"; } if(!O) A[p++] = F.Json ? "\n]," : "\n"; } // --- Selected --- var sel = (type["selected"]||type["resized"]) && !type["changes"] && (!O||attrs||allcols); if(!O&&(sel||type["changes"])) A[p++] = F.Json?"\n\"Changes\":[":"\n"; if(sel){ var res = type["resized"], sel = type["selected"]; var R = this.GetFixedRows(), allcols = type["allcols"]; function AddSel(row){ if(ridx&&row.Deleted) return; A[p++] = "\n"+F.Start+F.Str(row[rid])+"\""; if(sel && row.Selected) A[p++] = F.Spc+"Selected"+F.Sep+"\""+row.Selected+"\""; if(res && row.Resized) A[p++] = F.Spc+"Height"+F.Sep+"\""+row.Height+"\""; if(F.Dtd) A[p++] = F.End; if(allcols) SetRowCols(row); if(!O) SetCustomAttrs(row); if(sel && row.Selected&2) { for(var c in C) if(row[c+"Selected"]) SetAttr(c+"Selected",row[c+"Selected"]); } A[p++] = F.Dtd ? "" : F.End; } for(var i=0;i"; } // --- Spanned --- if(type["span"]){ A[p++] = F.Json?"\n\"Spanned\":[":"\n"; for(var r=this.GetFirst();r;r=this.GetNext(r)){ var s = "", o = O ? O[r[rid]] : null; if(r.Spanned||r.RowSpan||o&&(o.Spanned||o.RowSpan)) for(var col in C) { if((o?r[col+"Span"]!=o[col+"Span"]&&(r[col+"Span"]>1||o[col+"Span"]>1)||r[col+"RowSpan"]!=o[col+"RowSpan"]&&(r[col+"RowSpan"]>1||o[col+"RowSpan"]>1):r[col+"Span"]>1||r[col+"RowSpan"]>1) && r[col+"RowSpan"]!=0 && r[col+"Visible"]!=-2) { s += F.Spc+col+"Span"+F.Sep+"\""+F.Str(r[col+"Span"]==null?1:r[col+"Span"])+"\""+F.Spc+col+"RowSpan"+F.Sep+"\""+F.Str(r[col+"RowSpan"]==null?1:r[col+"RowSpan"])+"\""; } } if(s) A[p++] = F.Start + F.Str(r[rid]) + "\"" + s + F.End; } if(F.Json) RemoveLast(); A[p++] = F.Json?"],":"\n"; } // --- Lang --- if(type["lang"]){ A[p++] = F.Json ? "\n\"Lang\":{" : "\n"; for(var i in this.Lang){ var v = this.Lang[i]; A[p++] = F.Json ? "\n\""+i+"\":{" : "\n<"+i; pp = p; var reg = i=="Format" ? new RegExp("^("+CDebugAttrs.Format.join("|")+")$") : null; for(var n in v){ if(v[n]==null||reg&&n.search(reg)!=0); else if(v[n].join) SetAttr(n,v[n].join(",")); else SetAttr(n,v[n]); } if(F.Json) RemoveFirst(pp); A[p++] = F.End; } if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n}," : "\n"; } // --- Text --- MS.Lang; if(type["text"]) for(var xx in this.Text) { A[p++] = F.Json ? "\n\"Text"+xx+"\":{" : "\n"; var R = this.Text[xx]; for(var r in R) { var Set = {}, CC = R[r], hasset = 0; for(var c in CC){ var D = CC[c], P = {}; for(var d in D){ if(d=="set") { Set[c] = D[d]; hasset = 1; continue; } if(d=="change") { P["Change"] = D[d]; continue; } var N = D[d], Reg = null, Rep = null; for(var n in N) { if(n.charAt(n.length-1)=="@"); else if(N[n+"@"]) { if(!Reg) Reg = {}; Reg[n] = N[n]; } else { if(!Rep) Rep = {}; Rep[n] = N[n]; } } if(Rep) P["Replace"] = Rep; if(Reg) P["Regex"] = Reg; } for(var d in P){ var N = P[d], X = {}, T = {}, hasu = 0; if(r=="@All"); else if(r=="@Space") T.Space = 1; else if(r.charAt(0)=="@") T.Kind = r.slice(1); else if(r.charAt(0)=="#") T.Def = r.slice(1); else T.Row = r; if(c=="@All"); else if(c.charAt(0)=="@") T.Type = r.slice(1); else T.Col = c; for(var n in N) if(!F.Json&&n.search(/\W/)>=0) { X[n] = N[n]; hasu++; } else T[n] = N[n]; if(hasu){ var S = "\n<"+d; for(var n in T) S += GetAttr(n,T[n]); if(hasu==1) for(var n in X) S += " N=\""+F.Str(n)+"\" V=\""+F.Str(X[n])+"\"/>"; else { S += ">"; for(var n in X) S += ""; S += ""; } A[p++] = S; } else SetAttrs(d,T); } } if(hasset) { if(r=="@All"); else if(r=="@Space") Set.Space = 1; else if(r.charAt(0)=="@") Set.Kind = r.slice(1); else if(r.charAt(0)=="#") Set.Def = r.slice(1); else Set.Row = r; SetAttrs("Set",Set); } } if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n}," : "\n"; } // --- Languages --- if(type["other"]||type["languages"]){ A[p++] = F.Json ? "\n\"Languages\":{" : "\n"; for(var n in this.Languages) SetAttrs("L",this.Languages[n]); if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n}," : "\n"; } ME.Lang; // --- Other --- if(type["other"]||type["menu"]) { SetAttrs("MenuCfg",this.MenuCfg); SetAttrs("MenuColumns",this.MenuColumns); SetAttrs("MenuPrint",this.MenuPrint); SetAttrs("MenuExport",this.MenuExport); } if(type["other"]) SetAttrs("GanttExport",this.GanttExport); if(type["other"]||type["animations"]) SetAttrs("Animations",this.Animations); // --- Actions --- if(type["other"]||type["actions"]) { var S = ""; for(var n in this.Actions) S += GetAttr(n,this.Actions[n]); for(var n in this.Mouse) S += GetAttr(n,this.Mouse[n]); S += F.Spc+"KeyCodes9"+F.Sep+"\""; for(var n in this.KeyCodes) { S += this.KeyCodes[n]+"="+n+","; } S = S.slice(0,-1) + "\""; if(F.Json && S && S.charAt(0)==',') S = S.slice(1); A[p++] = "\n"+(F.Json ? "\"Actions\":{" : ""; var Reg = new RegExp("^("+CDebugAttrs.Pager.join("|")+"|"+CDebugAttrs.PagerXXX.join("|")+")$"); for(var i=0;i"); } // --- Media --- MS.Media; if(type["other"]||type["media"]){ A[p++] = F.Json ? "\n\"Media\":[" : "\n"; for(var i=1;i"; for(var n in v) { if(n=="Lang"){ A[p++] = F.Json ? "\n\"Lang\":{" : "\n"; var vv = v[n]; for(var nn in vv) SetAttrs(nn,vv[nn]); if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n}," : "\n"; } else if(n=="Cols"||n=="Rows"||n=="Def"||n=="Pagers"){ var vv = v[n]; A[p++] = F.Json ? "\n\""+n+"\":[" :"\n<"+n+">"; var tn = {Rows:"I",Cols:"C",Def:"D",Pagers:"Pager"}[n]; for(var nn in vv) { A[p++] = F.Json ? "\n{" : "\n<"+tn; var pp = p, vvv = vv[nn]; if(n=="Rows"&&this.Rows[vvv.id].Space){ var Cells = ","+this.Rows[vvv.id].Cells.join(",")+","; for(var nnn in vvv) SetAttr(nnn.search(/Left$/)>=0&&Cells.search(","+nnn+",")>=0&&Cells.search(","+nnn.slice(0,-4)+",")>=0?nnn+"Width":nnn,vvv[nnn]); } else for(var nnn in vvv) SetAttr(nnn,vvv[nnn]); if(F.Json) RemoveFirst(pp); A[p++] = F.End; } if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n]," : "\n"; } else if(n!="Attrs"&&n!="Media") SetAttrs(n,v[n]); } if(F.Json) RemoveLast(); A[p++] = F.Json ? "}," :"\n"; } if(F.Json) RemoveLast(); A[p++] = F.Json ? "\n]," : "\n"; } ME.Media; if(F.Json) RemoveLast(); if(!type["nogrid"]) A[p++] = F.Json ?"\n}" :"\n"; if(grp) { var zalgrp = this.Group; this.Group = ""; this.DoGrouping(zalgrp,-1); } if(this.Img.Width!=1){ if(type["cols"]) this.MultiplyScale(this.Img.Width,9); if(type["other"]) this.MultiplyScale(this.Img.Width,10); if(type["all"]||type["fixed"]) this.MultiplyScale(this.Img.SpaceWidth,12); if(this.Gantt&&type["cols"]) this.MultiplyScale(this.Img.GanttWidth,24); } this.Focused = null; //lertTimer(); return A.join(""); ME.UploadType; NoModule("UploadType"); } // ----------------------------------------------------------------------------------------------------------- TGP.GetChangesOrder = function(){ var C = this.Changes, A = [], p = 0, F = this.GetUploadFormat(this.Source.Upload), ind = this.SaveOrder==2; var names; MS.Debug; names = "changes,selected,expanded,body,data,all,settings,cookie,cfg,def,cols,other,lang,defaults,allcols,nodelete,noio,nogrid,gantt,span,spanned,calendars,resources,newid"; ME.Debug; var flags = this.ConvertFlags(this.Source.Upload.Flags,names), NewId = flags["newid"]; for(var i=0;i"; else s += F.Spc+c+F.Sep+"\""+F.Str(v)+"\""; } s += F.Dtd ? "" : F.End; MS.GenId; if(CH) for(var id in CH) s += F.Start+F.Str(id)+"\""+F.Spc+"NewId"+F.Sep+"\""+CH[id]+"\""+F.End; ME.GenId; A[p++] = s; } if(F.Json && p && A[p-1] && A[p-1].slice(-1)==',') A[p-1] = A[p-1].slice(0,-1); return A.join(""); } // ----------------------------------------------------------------------------------------------------------- ME.Upload; // ----------------------------------------------------------------------------------------------------------- TGP.SetChange = function(O,fill){ MS.Upload; if(!O.Row) return; var C = this.Changes; if(fill) { O.Cols = { }; var row = this.GetRowById(O.Row); for(var c in this.Cols) if(c!="Panel" && c!="id") O.Cols[c] = Get(row,c); } if(O.Deleted==0){ for(var i=0;i=0 ? this.RowIndex : null, idx = ridx ? ridx : "id", O = {}, R = this.Rows, mc = this.MainCol; for(var id in R) { var r = R[id], o = {}; if(!r[idx]) continue; for(var n in r) o[n] = r[n]; if(!ridx){ o.parentNode = r.parentNode.Page ? null : r.parentNode.id; if(r.nextSibling) o.nextSibling = r.nextSibling.id; else if(r.parentNode.Page && r.parentNode.nextSibling && r.parentNode.nextSibling.firstChild) o.nextSibling = r.parentNode.nextSibling.firstChild.id; if(r.previousSibling) o.previousSibling = r.previousSibling.id; else if(r.parentNode.Page && r.parentNode.previousSibling && r.parentNode.previousSibling.lastChild) o.previousSibling = r.parentNode.previousSibling.lastChild.id; } else if(mc) o.Level = r.Level; O[r[idx]] = o; } this.OrigData = O; ME.Upload; } // -----------------------------------------------------------------------------------------------------------