Changeset 300 for anr/gantt.l
- Timestamp:
- Dec 20, 2010, 2:20:29 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anr/gantt.l
r296 r300 40 40 0 41 41 }; 42 char* subtask_names[20][20]; 43 char* get_subtask_name(int tn, int stn) 44 { 45 char* ret=subtask_names[tn][stn]; 46 if (ret==0) { 47 fprintf(stderr,"ERROR: no name found for st%d-%d sub-task.\n",tn,stn); 48 return ""; 49 } else 50 return ret; 51 } 52 42 53 struct partner_def { char *key, *name, *fnfull, *fnshort; } partner_table[] = { 43 54 { "UNKNOW" ,"relax" ,0 ,0 }, … … 242 253 milestones[i] = atoi(yytext+3); 243 254 } 255 STN=.* { 256 int nb,tn, stn; 257 char tmp[1000]; 258 nb=sscanf(yytext+4,"%d%d%s",&tn,&stn,tmp); 259 if ( nb==3 && 0<=tn && tn<10 && 0<=stn && stn<10 ) { 260 char* p =strstr(yytext+4,tmp); 261 subtask_names[tn][stn]=strdup(p); 262 } else { 263 fprintf(stderr, "bad formated ST rule (ignored): %s.\n",yytext); 264 } 265 } 244 266 BM=[0-9]+ { bm=atoi(yytext+3); } 245 267 EM=[0-9]+ { em=atoi(yytext+3); } … … 725 747 sum2 = lcurr->hman[1]; sum +=sum2; 726 748 sum3 = lcurr->hman[2]; sum +=sum3; 727 char label [1000],title[1000];749 char label_lnk[1000],label[1000],title[1000]; 728 750 gen_label_base(label,leader); 751 sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label); 729 752 sprintf(title,"\\resstablestyletitle{%s}",leader->title); 730 753 fprintf(curr->os,"%s & %s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n", 731 label ,title,sum1,sum2,sum3,sum);754 label_lnk,title,sum1,sum2,sum3,sum); 732 755 an1 += sum1 ; tsk1 += sum1 ; 733 756 an2 += sum2 ; tsk2 += sum2 ; … … 818 841 an += sum ; tsk += sum ; 819 842 newlineadded=0; 820 char label[1000];821 gen_label_base(label,leader);822 843 } 823 844 } … … 886 907 if ( l==0 ) break; 887 908 if ( l->leader==0 ) continue; 888 char label [1000],resp[100],date[100],kind[100],desc[1000];909 char label_lnk[1000],label[1000],resp[100],date[100],kind[100],desc[1000]; 889 910 gen_label_full(label,l); 911 sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label); 890 912 sprintf(resp,"\\S%s",partner_table[l->partner].key); 891 913 sprintf(date,"\\makebox[2mm][r]{%d}",l->em); … … 902 924 sprintf(desc, "\\\\\\cline{1-4}\n"); 903 925 904 fprintf(curr->os,"%-15s", label );926 fprintf(curr->os,"%-15s", label_lnk); 905 927 fprintf(curr->os," & %-10s", resp); 906 928 fprintf(curr->os," & %-30s", date); … … 913 935 } 914 936 915 #if 1916 937 void do_effort_par_livrable(char* filename,int from_task, int to_task) 917 938 { … … 919 940 if ( (curr->os=fopen(filename,"w"))==0 ) { 920 941 fprintf(stderr,"can not open %s file for writing.\n",filename); 921 fprintf(stderr,"generation of %s partner table is skipped.\n",filename);942 fprintf(stderr,"generation of %s file is skipped.\n",filename); 922 943 return; 923 944 } … … 953 974 sum2 = lcurr->hman[1]; sum +=sum2; 954 975 sum3 = lcurr->hman[2]; sum +=sum3; 955 char label [1000],title[1000];976 char label_lnk[1000],label[1000],title[1000]; 956 977 gen_label_base(label,lcurr); 978 sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label); 957 979 sprintf(title,"\\resstablestyletitle{%s}",top->title); 958 980 fprintf(curr->os,"%10s & %50s & %10s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n", 959 linenb==0 ? label : "",981 linenb==0 ? label_lnk : "", 960 982 linenb==0 ? title : "", 961 983 partner_table[lcurr->partner].key, … … 980 1002 char title[1000]; 981 1003 sprintf(name,"st%d-%d",task_n,subtask_n); 982 sprintf(title,"\\resstablestyletitle{%s}", "");1004 sprintf(title,"\\resstablestyletitle{%s}",get_subtask_name(task_n,subtask_n)); 983 1005 fprintf(curr->os,"%10s & %50s & %10s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n", 984 1006 name,title,"total",st_sum1,st_sum2,st_sum3,st_sum); … … 999 1021 curr->os=0; 1000 1022 } 1023 1024 void do_partner_by_subtask() 1025 { 1026 char filename[2000]; 1027 int tn,stn,dn,partner; 1028 for (tn=0 ; tn<T_MAX ; tn++) { 1029 int livrablenb=0,subtasknb=0; 1030 int task_n,subtask_n; 1031 double t_sum1=0, t_sum2=0, t_sum3=0, t_sum=0; 1032 double st_sum1=0,st_sum2=0,st_sum3=0,st_sum=0; 1033 if (curr->ls[tn][0][0][0]==0) break; 1034 for (stn=0; stn<S_MAX; stn++) { 1035 int parts[100]; memset(parts,0,sizeof(parts)); 1036 int partnb=0; 1037 for (dn=0; dn<D_MAX; dn++) { 1038 int linenb = 0; 1039 Tlivrable* top=curr->ls[tn][stn][dn][0]; 1040 if ( top==0 ) break; 1041 double liv1=0,liv2=0,liv3=0,liv=0; 1042 for (partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1043 Tlivrable *lcurr,*leader; 1044 if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 ) { 1045 continue; 1046 } 1047 parts[partner]=1; partnb+=1; 1048 task_n = top->tn; 1049 subtask_n = top->stn; 1050 } 1051 } 1052 if (partnb==0) continue; 1053 sprintf(filename,"tmp/st%d-%d-partner.tex",task_n,subtask_n); 1054 if ( (curr->os=fopen(filename,"w"))==0 ) { 1055 fprintf(stderr,"can not open %s file for writing.\n",filename); 1056 fprintf(stderr,"generation of %s file is skipped.\n",filename); 1057 continue; 1058 } 1059 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1060 if ( parts[partner]==0) continue; 1061 fprintf(curr->os,"\\S%s\n",partner_table[partner].key); 1062 } 1063 fclose(curr->os); 1064 curr->os=0; 1065 } 1066 } 1067 } 1068 1069 #if 1 1070 void do_effort_par_livrable_xls(char* filename,int from_task, int to_task) 1071 { 1072 //struct partner_def* part; 1073 if ( (curr->os=fopen(filename,"w"))==0 ) { 1074 fprintf(stderr,"can not open %s file for writing.\n",filename); 1075 fprintf(stderr,"generation of %s file is skipped.\n",filename); 1076 return; 1077 } 1078 int tn,stn,dn,partner; 1079 fprintf(curr->os,"\"task\";\"sub-task\";\"delivrable\";"); 1080 fprintf(curr->os,"\"cumul\";;;;"); 1081 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1082 fprintf(curr->os,"\"%s\";;;;",partner_table[partner].key); 1083 } 1084 fprintf(curr->os,"\"description\";\n"); 1085 fprintf(curr->os,";;;"); 1086 fprintf(curr->os,"\"an 1\";\"an 2\";\"an 3\";\"sum\";"); 1087 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1088 fprintf(curr->os,"\"an 1\";\"an 2\";\"an 3\";\"sum\";"); 1089 } 1090 fprintf(curr->os,";\n"); 1091 double an1=0,an2=0,an3=0,anA=0; 1092 double an1p[100], an2p[100], an3p[100], anAp[100]; 1093 memset(an1p,0,sizeof(an1p)); memset(an2p,0,sizeof(an2p)); 1094 memset(an3p,0,sizeof(an3p)); memset(anAp,0,sizeof(anAp)); 1095 for (tn=0 ; tn<T_MAX ; tn++) { 1096 int livrablenb=0,subtasknb=0; 1097 int task_n,subtask_n; 1098 double t_sum1=0, t_sum2=0, t_sum3=0, t_sumA=0; 1099 double t_sum1p[100], t_sum2p[100], t_sum3p[100], t_sumAp[100]; 1100 memset(t_sum1p,0,sizeof(t_sum1p)); memset(t_sum2p,0,sizeof(t_sum2p)); 1101 memset(t_sum3p,0,sizeof(t_sum3p)); memset(t_sumAp,0,sizeof(t_sumAp)); 1102 if (curr->ls[tn][0][0][0]==0) break; 1103 for (stn=0; stn<S_MAX; stn++) { 1104 double st_sum1=0, st_sum2=0, st_sum3=0, st_sumA=0; 1105 double st_sum1p[100], st_sum2p[100], st_sum3p[100], st_sumAp[100]; 1106 memset(st_sum1p,0,sizeof(st_sum1p)); memset(st_sum2p,0,sizeof(st_sum2p)); 1107 memset(st_sum3p,0,sizeof(st_sum3p)); memset(st_sumAp,0,sizeof(st_sumAp)); 1108 1109 livrablenb=0; 1110 for (dn=0; dn<D_MAX; dn++) { 1111 int linenb = 0; 1112 Tlivrable* top=curr->ls[tn][stn][dn][0]; 1113 if ( top==0 ) break; 1114 if ( !( from_task<=top->tn && top->tn<=to_task ) ) break; 1115 double liv1=0,liv2=0,liv3=0,liv=0; 1116 char label_lnk[1000],label[1000],title[1000]; 1117 gen_label_base(label,top); 1118 sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label); 1119 sprintf(title,"%s",top->title); 1120 double sum1p[20], sum2p[20], sum3p[20], sumAp[20]; 1121 memset(sum1p,0,sizeof(sum1p)); memset(sum2p,0,sizeof(sum2p)); 1122 memset(sum3p,0,sizeof(sum3p)); memset(sumAp,0,sizeof(sumAp)); 1123 task_n=top->tn; 1124 subtask_n=top->stn; 1125 for (partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1126 Tlivrable *lcurr,*leader; 1127 if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 ) 1128 continue; 1129 double sum1,sum2,sum3,sum=0; 1130 sum1 = lcurr->hman[0]; sum +=sum1; 1131 sum2 = lcurr->hman[1]; sum +=sum2; 1132 sum3 = lcurr->hman[2]; sum +=sum3; 1133 linenb += 1; 1134 liv1 += sum1 ; st_sum1 += sum1 ; t_sum1 += sum1 ; an1 += sum1 ; 1135 liv2 += sum2 ; st_sum2 += sum2 ; t_sum2 += sum2 ; an2 += sum2 ; 1136 liv3 += sum3 ; st_sum3 += sum3 ; t_sum3 += sum3 ; an3 += sum3 ; 1137 liv += sum ; st_sumA += sum ; t_sumA += sum ; anA += sum ; 1138 sum1p[partner] += sum1 ; st_sum1p[partner] += sum1 ; t_sum1p[partner] += sum1 ; an1p[partner] += sum1 ; 1139 sum2p[partner] += sum2 ; st_sum2p[partner] += sum2 ; t_sum2p[partner] += sum2 ; an2p[partner] += sum2 ; 1140 sum3p[partner] += sum3 ; st_sum3p[partner] += sum3 ; t_sum3p[partner] += sum3 ; an3p[partner] += sum3 ; 1141 sumAp[partner] += sum ; st_sumAp[partner] += sum ; t_sumAp[partner] += sum ; anAp[partner] += sum ; 1142 } 1143 if (linenb>=1) { 1144 livrablenb+=1; 1145 fprintf(curr->os,";;\"%s\";",label); 1146 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;",liv1,liv2,liv3,liv); 1147 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1148 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;", 1149 sum1p[partner],sum2p[partner],sum3p[partner],sumAp[partner]); 1150 } 1151 fprintf(curr->os,"\"%s\";",title); 1152 fprintf(curr->os,"\n"); 1153 } 1154 } 1155 if ( livrablenb>0) { 1156 subtasknb += 1; 1157 char name[100]; 1158 char title[1000]; 1159 sprintf(name,"st%d-%d",task_n,subtask_n); 1160 sprintf(title,"%s",get_subtask_name(task_n,subtask_n)); 1161 fprintf(curr->os,";\"%s\";;",name); 1162 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;",st_sum1,st_sum2,st_sum3,st_sumA); 1163 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1164 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;", 1165 st_sum1p[partner],st_sum2p[partner],st_sum3p[partner],st_sumAp[partner]); 1166 } 1167 fprintf(curr->os,"\"%s\";",title); 1168 fprintf(curr->os,"\n"); 1169 } 1170 } 1171 if ( subtasknb>0 ) { 1172 char name[100]; 1173 char title[1000]; 1174 sprintf(name,"task-%d",task_n); 1175 sprintf(title,"%s",task_names[task_n]); 1176 fprintf(curr->os,"\"%s\";;;",name); 1177 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;",t_sum1,t_sum2,t_sum3,t_sumA); 1178 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1179 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;", 1180 t_sum1p[partner],t_sum2p[partner],t_sum3p[partner],t_sumAp[partner]); 1181 } 1182 fprintf(curr->os,"\"%s\";",title); 1183 fprintf(curr->os,"\n"); 1184 } 1185 } 1186 char name[100]; 1187 char title[1000]; 1188 sprintf(name,"total"); 1189 sprintf(title,"%s",""); 1190 fprintf(curr->os,"\"%s\";;;",name); 1191 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;",an1,an2,an3,anA); 1192 for ( partner=1 ; partner_table[partner].key!=0 ; partner+=1) { 1193 fprintf(curr->os,"%2.1f;%2.1f;%2.1f;%2.1f;", 1194 an1p[partner],an2p[partner],an3p[partner],anAp[partner]); 1195 } 1196 fprintf(curr->os,"\"%s\";",title); 1197 fprintf(curr->os,"\n"); 1198 fclose(curr->os); 1199 curr->os=0; 1200 } 1001 1201 #endif 1002 1202 … … 1030 1230 prepare2(curr); 1031 1231 prepare3(curr); 1032 do_livrable_tables(4 0);1232 do_livrable_tables(44); 1033 1233 1034 1234 curr = data_new(0,0); … … 1040 1240 do_effort_par_livrable("effort-par-livrable-2.tex",4,7); 1041 1241 do_effort_par_livrable("effort-par-livrable-3.tex",8,8); 1242 do_effort_par_livrable_xls("tmp/effort-par-livrable.csv",1,8); 1243 1244 curr = data_new(0,0); 1245 prepare0(curr); 1246 prepare1(curr); 1247 prepare2(curr); 1248 prepare3(curr); 1249 do_partner_by_subtask(); 1042 1250 return 0; 1043 1251 }
Note: See TracChangeset
for help on using the changeset viewer.