Changeset 300 for anr/gantt.l


Ignore:
Timestamp:
Dec 20, 2010, 2:20:29 AM (14 years ago)
Author:
coach
Message:

1) Ajout des parters entre () pour les sous taches.
2) Ajout des liens sur les livrables dans les taches.
3) Sorties d'un point csv
4) Regrouppement des livrables evaluation
5) Ajout du D840
6) MAJ des effort de l'UPMC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • anr/gantt.l

    r296 r300  
    4040    0
    4141};
     42char* subtask_names[20][20];
     43char* 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
    4253struct partner_def { char *key, *name, *fnfull, *fnshort; } partner_table[] = {
    4354    { "UNKNOW" ,"relax"  ,0                             ,0                        },
     
    242253        milestones[i] = atoi(yytext+3);
    243254    }
     255STN=.*   {
     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}
    244266BM=[0-9]+ { bm=atoi(yytext+3); }
    245267EM=[0-9]+ { em=atoi(yytext+3); }
     
    725747                sum2 = lcurr->hman[1]; sum +=sum2;
    726748                sum3 = lcurr->hman[2]; sum +=sum3;
    727                 char label[1000],title[1000];
     749                char label_lnk[1000],label[1000],title[1000];
    728750                gen_label_base(label,leader);
     751                sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label);
    729752                sprintf(title,"\\resstablestyletitle{%s}",leader->title);
    730753                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);
    732755                an1 += sum1 ; tsk1 += sum1 ;
    733756                an2 += sum2 ; tsk2 += sum2 ;
     
    818841                an  += sum  ; tsk  += sum  ;
    819842                newlineadded=0;
    820                 char label[1000];
    821                 gen_label_base(label,leader);
    822843            }
    823844        }
     
    886907            if ( l==0 ) break;
    887908            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];
    889910            gen_label_full(label,l);
     911            sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label);
    890912            sprintf(resp,"\\S%s",partner_table[l->partner].key);
    891913            sprintf(date,"\\makebox[2mm][r]{%d}",l->em);
     
    902924                sprintf(desc, "\\\\\\cline{1-4}\n");
    903925
    904              fprintf(curr->os,"%-15s", label);
     926             fprintf(curr->os,"%-15s", label_lnk);
    905927             fprintf(curr->os," & %-10s", resp);
    906928             fprintf(curr->os," & %-30s", date);
     
    913935}
    914936
    915 #if 1
    916937void do_effort_par_livrable(char* filename,int from_task, int to_task)
    917938{
     
    919940    if ( (curr->os=fopen(filename,"w"))==0 ) {
    920941        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);
    922943        return;
    923944    }
     
    953974                sum2 = lcurr->hman[1]; sum +=sum2;
    954975                sum3 = lcurr->hman[2]; sum +=sum3;
    955                 char label[1000],title[1000];
     976                char label_lnk[1000],label[1000],title[1000];
    956977                gen_label_base(label,lcurr);
     978                sprintf(label_lnk,"\\hyperlink{%s}{%s}",label,label);
    957979                sprintf(title,"\\resstablestyletitle{%s}",top->title);
    958980                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 : "",
    960982                   linenb==0 ? title : "",
    961983                   partner_table[lcurr->partner].key,
     
    9801002                char title[1000];
    9811003                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));
    9831005                fprintf(curr->os,"%10s & %50s & %10s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n",
    9841006                    name,title,"total",st_sum1,st_sum2,st_sum3,st_sum);
     
    9991021    curr->os=0;
    10001022}
     1023
     1024void 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
     1070void 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}
    10011201#endif
    10021202
     
    10301230    prepare2(curr);
    10311231    prepare3(curr);
    1032     do_livrable_tables(40);
     1232    do_livrable_tables(44);
    10331233
    10341234    curr = data_new(0,0);
     
    10401240    do_effort_par_livrable("effort-par-livrable-2.tex",4,7);
    10411241    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();
    10421250    return 0;
    10431251}
Note: See TracChangeset for help on using the changeset viewer.