Edit C:\galaxie\Back\galaxie\netbusiness\massemailing\massemailing_statistics.jsp
<%@page session="true" contentType="text/html; charset=UTF-8" %> <%@ page import="java.util.Map.Entry" %> <%@ page import="java.util.Date" %> <%@ page import="java.text.NumberFormat" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashMap" %> <%@ page import="com.edeal.frontline.navigation.FlRequest" %> <%@ page import="com.edeal.frontline.FlContext" %> <%@ page import="com.edeal.frontline.Utils" %> <%@ page import="com.edeal.frontline.FlLocale" %> <%@ page import="com.edeal.frontline.controller.actions.PopulationMassEmailingAction" %> <%@ page import="com.edeal.frontline.controller.actions.BackgroundAjaxAction" %> <%@ page import="com.edeal.frontline.controller.actions.GetMassEmailingStatsAction" %> <%@taglib uri="http://www.e-deal.com/taglib/fl" prefix="fl" %> <script type="text/javascript" language="javascript" src="<fl:webapp/>/js/edeal/libraries/json.org/json2/json2.js"></script> <link rel="stylesheet" type="text/css" href="<fl:webapp/>/css/common_css.jsp"/> <style type="text/css"> .tabFdBlanc td, .tabFdBleu td { border-right: 1px solid #ccc; padding-top: 3px; padding-right: 5px; padding-bottom: 3px; padding-left: 5px; vertical-align: middle; } .tabFdBlanc { font-size: 12px; font-family: Arial,Verdana,sans-serif; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); } .tabFdBleu { font-size: 12px; font-family: Arial,Verdana,sans-serif; color: rgb(0, 0, 0); background-color: rgb(235, 244, 246); } .tabFdBlanc, .tabFdBleu { border: 0px; border-bottom: 1px solid #ccc; border-left: 1px solid #ccc; } .titreTable { font-family: Arial, Verdana, sans-serif; font-weight: bold; font-size: 12px; } </style> <% final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory.getLog(getClass()); ArrayList<Integer> arrEmailingStats = (ArrayList<Integer>)request.getAttribute(GetMassEmailingStatsAction.ARR_EMAILING_STATS); ArrayList<Integer> arrEmailingStatsHavingSameRegrouping = (ArrayList<Integer>)request.getAttribute(GetMassEmailingStatsAction.ARR_EMAILING_STATS_HAVING_SAME_REGROUPING); HashMap<String, Integer> hmapLinkStatsRegrouped = (HashMap<String, Integer>)request.getAttribute(GetMassEmailingStatsAction.HMAP_LINK_STATS_REGROUPED); HashMap<String, Integer> hmapLinkStats = (HashMap<String, Integer>)request.getAttribute(GetMassEmailingStatsAction.HMAP_LINK_STATS); HashMap<String, Integer> hmapLinkStatsHavingSameRegrouping = (HashMap<String, Integer>)request.getAttribute(GetMassEmailingStatsAction.HMAP_LINK_STATS_HAVING_SAME_REGROUPING); Date emlSentDate = (Date) request.getAttribute(GetMassEmailingStatsAction.EML_SENT_DATE); String period = request.getParameter(GetMassEmailingStatsAction.PERIOD_ANALYSE); NumberFormat floatFormat = FlLocale.getInstance(session).getDecimalFormat("#,##0"); String strDate = ""; if (emlSentDate != null) { strDate = Utils.formatToWeb(session, emlSentDate, false, "datetime" ); } FlRequest flRequest = new FlRequest(request); FlContext context = flRequest.getContext(); String id = (String)request.getParameter("id"); Date lastStatsDate = (Date)flRequest.getAttribute(GetMassEmailingStatsAction.LAST_STATS_DATE); String strLastStatsDate = "N/A"; if (lastStatsDate != null) { strLastStatsDate = Utils.formatToWeb(session, lastStatsDate, false, "datetime" ); } //Synthèse de l'e-mailing float volumeCible = 0, hardBounces = 0, softBounces = 0, presumesArrives = 0, ouvert = 0, sentError = 0, desabonne = 0, spam = 0; if (arrEmailingStats != null && !arrEmailingStats.isEmpty()) { try { hardBounces = arrEmailingStats.get(0);//EstNbFatalError } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'hardBounces'", ex); } try { softBounces = arrEmailingStats.get(1);//EstNbTempError } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'softBounces'", ex); } try { presumesArrives = arrEmailingStats.get(2);//EstNbSent } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'presumesArrives'", ex); } try { ouvert = arrEmailingStats.get(3);//EstNbOpened } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'ouvert'", ex); } //inclure dans le comptage des présumés arrivés les ouverts presumesArrives = presumesArrives + ouvert; try { sentError = arrEmailingStats.get(4);//EstNbSentError } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'erreur envoi'", ex); } try { volumeCible = arrEmailingStats.get(5);//EstNbTotal } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'total'", ex); } try { desabonne = arrEmailingStats.get(6);//EstNbUnsubscribed } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'nombre de désabonné'", ex); } try { spam = arrEmailingStats.get(7);//EstNbSpam } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'nombre de spam'", ex); } logger.debug("volumeCible vaut" + volumeCible); } //Synthèse de l'e-mailing en % float perHardBounces = 0, perSoftBounces = 0, perPresumesArrives = 0, perOuvert = 0, perSentError = 0, perDesabonne = 0, perSpam = 0; if (volumeCible > 0) { try { perHardBounces = hardBounces / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perHardBounces'", ex); } try { perSoftBounces = softBounces / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSoftBounces'", ex); } try { perPresumesArrives = presumesArrives / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perPresumesArrives'", ex); } try { perOuvert = ouvert / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perOuvert'", ex); } try { perSentError = sentError / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSentError'", ex); } try { perDesabonne = desabonne / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perDesabonne'", ex); } try { perSpam = spam / volumeCible * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSpam'", ex); } } //Moyenne des e-mailings de même regroupement float volumeCibleRg = 0, hardBouncesRg = 0, softBouncesRg = 0, presumesArrivesRg = 0, ouvertRg = 0, sentErrorRg = 0, desabonneRg = 0, spamRg = 0; if (arrEmailingStatsHavingSameRegrouping != null && !arrEmailingStatsHavingSameRegrouping.isEmpty()) { try { hardBouncesRg = arrEmailingStatsHavingSameRegrouping.get(0); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'hardBouncesRg'", ex); } try { softBouncesRg = arrEmailingStatsHavingSameRegrouping.get(1); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'softBouncesRg'", ex); } try { presumesArrivesRg = arrEmailingStatsHavingSameRegrouping.get(2); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'presumesArrivesRg'", ex); } try { ouvertRg = arrEmailingStatsHavingSameRegrouping.get(3); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'ouvertRg'", ex); } try { sentErrorRg = arrEmailingStatsHavingSameRegrouping.get(4); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'erreur envoi'", ex); } try { volumeCibleRg = arrEmailingStatsHavingSameRegrouping.get(5); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'total'", ex); } try { desabonneRg = arrEmailingStatsHavingSameRegrouping.get(6); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'desabonneRg'", ex); } try { spamRg = arrEmailingStatsHavingSameRegrouping.get(7); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'spamRg'", ex); } //volumeCibleRg = hardBouncesRg + softBouncesRg + presumesArrivesRg ;//+ ouvertRg; logger.debug("VolumeCibleRg vaut" + volumeCibleRg); } //Moyenne des e-mailings de même regroupement en % float perHardBouncesRg = 0, perSoftBouncesRg = 0, perPresumesArrivesRg = 0, perOuvertRg = 0, perSentErrorRg = 0, perDesabonneRg = 0, perSpamRg = 0; float evolHardBounces = 0, evolSoftBounces = 0, evolPresumesArrives = 0, evolOuvert = 0,evolCible = 0, evolSentError = 0, evolDesabonne = 0, evolSpam = 0; if (volumeCibleRg > 0) { try { perHardBouncesRg = hardBouncesRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perHardBouncesRg'", ex); } try { perSoftBouncesRg = softBouncesRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSoftBouncesRg'", ex); } try { perPresumesArrivesRg = presumesArrivesRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perPresumesArrivesRg'", ex); } try { perOuvertRg = ouvertRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perOuvertRg'", ex); } try { perSentErrorRg = sentErrorRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSentErrorRg'", ex); } try { perDesabonneRg = desabonneRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perDesabonneRg'", ex); } try { perSpamRg = spamRg / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perSpamRg'", ex); } try { evolCible = (volumeCible - volumeCibleRg) / volumeCibleRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perOuvertRg'", ex); } if (hardBouncesRg > 0) { try { evolHardBounces = (hardBounces - hardBouncesRg) / hardBouncesRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolHardBounces'", ex); } } if (softBouncesRg > 0) { try { evolSoftBounces = (softBounces - softBouncesRg) / softBouncesRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolSoftBounces'", ex); } } if (presumesArrivesRg > 0) { try { evolPresumesArrives = (presumesArrives - presumesArrivesRg) / presumesArrivesRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolPresumesArrives'", ex); } } if (ouvertRg > 0) { try { evolOuvert = (ouvert - ouvertRg) / ouvertRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolOuvert'", ex); } } if (sentErrorRg > 0) { try { evolSentError = (sentError - sentErrorRg) / sentErrorRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolOuvert'", ex); } } if (desabonneRg > 0) { try { evolDesabonne = (desabonne - desabonneRg) / desabonneRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolDesabonne'", ex); } } if (spamRg > 0) { try { evolSpam = (spam - spamRg) / spamRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolSpam'", ex); } } } %> <table class="container"> <tr> <td class="dataLabel"> <fl:getMessage code="L707B" alt="Envoyé le"/> : <%= strDate %>, <fl:getMessage code="F60C9" alt="Calculé le"/> : <%= strLastStatsDate %> </td> </tr> </table> <div class="edealGrid"> <div id="grid-data"> <table> <caption class="titreTable"><fl:getMessage code="L70B9" alt="Statistiques d\'envois"/></caption> <thead> <tr> <th width="25%"></th> <th width="30%" colspan="2"><fl:getMessage code="L706B" alt="Synthèse de l\'e-mailing"/></th> <th width="30%" colspan="2"><fl:getMessage code="L706C" alt="Moyenne des e-mailings de même regroupement"/></th> <th width="15%"><fl:getMessage code="L7072" alt="Evolution"/></th> </tr> </thead> <tbody> <tr class="tabFdBleu"> <td><fl:getMessage code="L706D" alt="Volume de la cible"/></td> <td align="right"><%= (int)volumeCible %></td> <td></td> <td align="right"><%= (int)volumeCibleRg %></td> <td></td> <td align="right"><%= floatFormat.format(evolCible) %>%</td> </tr> <tr class="tabFdBlanc"> <td><div style="display:hidden" id="bgstatusMessageSentError"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.SENTERROR %>',null,'bgstatusMessageSentError')"><fl:getMessage code="L6245" alt="Adresses e-mail erronées"/></a></td> <td align="right"><%= (int)sentError %></td> <td align="right"><%= floatFormat.format(perSentError) %>%</td> <td align="right"><%= (int)sentErrorRg %></td> <td align="right"><%= floatFormat.format(perSentErrorRg) %>%</td> <td align="right"><%= floatFormat.format(evolSentError) %>%</td> </tr> <tr class="tabFdBleu"> <td><div style="display:hidden" id="bgstatusMessageSpam"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.SPAM %>',null,'bgstatusMessageSpam')"><fl:getMessage code="L8130" alt="Spam"/></a></td> <td align="right"><%= (int)spam %></td> <td align="right"><%= floatFormat.format(perSpam) %>%</td> <td align="right"><%= (int)spamRg %></td> <td align="right"><%= floatFormat.format(perSpamRg) %>%</td> <td align="right"><%= floatFormat.format(evolSpam) %>%</td> </tr> <tr class="tabFdBlanc"> <td><div style="display:hidden" id="bgstatusMessageHardBounces"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.HARDBOUNCES %>',null,'bgstatusMessageHardBounces')"><fl:getMessage code="L706F" alt="Hard Bounces"/></a></td> <td align="right"><%= (int)hardBounces %></td> <td align="right"><%= floatFormat.format(perHardBounces) %>%</td> <td align="right"><%= (int)hardBouncesRg %></td> <td align="right"><%= floatFormat.format(perHardBouncesRg) %>%</td> <td align="right"><%= floatFormat.format(evolHardBounces) %>%</td> </tr> <tr class="tabFdBleu"> <td><div style="display:hidden" id="bgstatusMessageSoftBounces"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.SOFTBOUNCES %>',null,'bgstatusMessageSoftBounces')"><fl:getMessage code="L7070" alt="Soft Bounces"/></a></td> <td align="right"><%= (int)softBounces %></td> <td align="right"><%= floatFormat.format(perSoftBounces) %>%</td> <td align="right"><%= (int)softBouncesRg %></td> <td align="right"><%= floatFormat.format(perSoftBouncesRg) %>%</td> <td align="right"><%= floatFormat.format(evolSoftBounces) %>%</td> </tr> <tr class="tabFdBlanc"> <td><div style="display:hidden" id="bgstatusMessagePresumesArrives"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.SUSPECTEDARRIVED %>',null,'bgstatusMessagePresumesArrives')"><fl:getMessage code="L7071" alt="Présumés arrivés"/></a></td> <td align="right"><%= (int)presumesArrives %></td> <td align="right"><%= floatFormat.format(perPresumesArrives) %>%</td> <td align="right"><%= (int)presumesArrivesRg %></td> <td align="right"><%= floatFormat.format(perPresumesArrivesRg) %>%</td> <td align="right"><%= floatFormat.format(evolPresumesArrives) %>%</td> </tr> <tr class="tabFdBleu"> <td><div style="display:hidden" id="bgstatusMessageOuvert"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.OPENED %>',null,'bgstatusMessageOuvert')"><fl:getMessage code="L7073" alt="Ouverture certaine"/></a></td> <td align="right"><%= (int)ouvert %></td> <td align="right"><%= floatFormat.format(perOuvert) %>%</td> <td align="right"><%= (int)ouvertRg %></td> <td align="right"><%= floatFormat.format(perOuvertRg) %>%</td> <td align="right"><%= floatFormat.format(evolOuvert) %>%</td> </tr> <tr class="tabFdBlanc"> <td><div style="display:hidden" id="bgstatusMessageDesabonne"></div><a href="javascript:doBackgroundAjax('<fl:webapp/>/create_population_massemailing_ajax.fl?id=<%= id %>&poptype=<%= PopulationMassEmailingAction.PopulationType.UNSUBSCRIBE %>',null,'bgstatusMessageDesabonne')"><fl:getMessage code="L70D4" alt="Désabonnés"/></a></td> <td align="right"><%= (int)desabonne %></td> <td align="right"><%= floatFormat.format(perDesabonne) %>%</td> <td align="right"><%= (int)desabonneRg %></td> <td align="right"><%= floatFormat.format(perDesabonneRg) %>%</td> <td align="right"><%= floatFormat.format(evolDesabonne) %>%</td> </tr> </tbody> </table> <br> <%-- Regroupement : l'ensemble des regroupements des web opérations correspondants à cet e-mail --%> <table> <caption class="titreTable"><fl:getMessage code="L706E" alt="Regroupements"/></caption> <thead> <tr> <th width="30%"><fl:getMessage code="F2025" alt="Nom"/></th> <th width="30%" colspan="2"><fl:getMessage code="L706B" alt="Synthèse de l\'e-mailing"/></th> <th width="30%" colspan="2"><fl:getMessage code="L706C" alt="Moyenne des e-mailings de même regroupement"/></th> <th width="10%"><fl:getMessage code="L7072" alt="Evolution"/></th> </tr> </thead> <tbody> <% int k = 0; if (hmapLinkStatsRegrouped != null && !hmapLinkStatsRegrouped.isEmpty()){ for (Entry<String, Integer> currentEntry : hmapLinkStatsRegrouped.entrySet()) { k ++; String regroupement = ""; float countLink = 0, countLinkRg = 0, perCountLinkC = 0, perCountLinkRgC = 0, perCountLinkA = 0, perCountLinkRgA = 0, evolCountLink = 0; try { regroupement = currentEntry.getKey(); logger.debug("regroupement vaut : " + regroupement); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'regroupement'", ex); } try { countLink = currentEntry.getValue(); logger.debug("countLink vaut : " + countLink); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de récupérer 'countLink'", ex); } if (volumeCible > 0) { try { perCountLinkC = countLink / volumeCible * 100; logger.debug("perCountLink vaut : " + perCountLinkC); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perCountLinkC'", ex); } } if (presumesArrives > 0) { try { perCountLinkA = countLink / presumesArrives * 100; logger.debug("perCountLink vaut : " + perCountLinkA); } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'perCountLinkA'", ex); } } if (hmapLinkStatsHavingSameRegrouping != null && !hmapLinkStatsHavingSameRegrouping.isEmpty() && hmapLinkStatsHavingSameRegrouping.containsKey(regroupement)) { try { countLinkRg = hmapLinkStatsHavingSameRegrouping.get(regroupement); } catch (Exception ex) { } if (volumeCibleRg > 0) { try { perCountLinkRgC = countLinkRg / volumeCibleRg * 100; } catch (Exception ex) { } } if (presumesArrives > 0) { try { perCountLinkRgA = countLinkRg / presumesArrives * 100; } catch (Exception ex) { } } if (countLinkRg > 0) { try { evolCountLink = (countLink - countLinkRg) / countLinkRg * 100; } catch (Exception ex) { logger.error("Une Exception s'est produite quand on tente de calculer 'evolCountLink'", ex); } } } %> <tr class="<%= k%2 == 0 ? "tabFdBlanc" : "tabFdBleu" %>"> <%-- Nom --%> <td><%= regroupement %></td> <td align="right"><%= (int)countLink %></td> <td align="right"> <%= floatFormat.format(perCountLinkA) %>% / <%= floatFormat.format(perCountLinkC) %>% </td> <td align="right"><%= (int)countLinkRg %></td> <td align="right"> <%= floatFormat.format(perCountLinkRgA) %>% / <%= floatFormat.format(perCountLinkRgC) %>% </td> <%-- Evolution --%> <td align="right"> <%= floatFormat.format(evolCountLink) %>% </td> </tr> <% } } %> </tbody> </table> <br> <%-- l'ensemble des liens correspondants à cet e-mail --%> <table> <caption class="titreTable"><fl:getMessage code="L6182" alt="Liens"/></caption> <thead> <tr> <th width="30%"><fl:getMessage code="F2025" alt="Nom"/></th> <th width="30%" ><fl:getMessage code="L708B" alt="Nb clics"/></th> <th width="30%"><fl:getMessage code="L706B" alt="Synthèse de l\'e-mailing"/></th> </tr> </thead> <tbody> <% int j = 0; if (hmapLinkStats != null && !hmapLinkStats.isEmpty()) { for (Entry<String, Integer> currentEntry : hmapLinkStats.entrySet()) { j++; String wopName = ""; float nbLink = 0, perNbLinkC = 0, perNbLinkA = 0; try { wopName = currentEntry.getKey(); } catch (Exception ex) { } try { nbLink = currentEntry.getValue(); } catch (Exception ex) { } if (volumeCible > 0) { try { perNbLinkC = nbLink / volumeCible * 100; } catch (Exception ex) { } } if (presumesArrives > 0) { try { perNbLinkA = nbLink / presumesArrives * 100; } catch (Exception ex) { } } %> <tr class="<%= j%2 == 0 ? "tabFdBlanc" : "tabFdBleu" %>"> <td><%= wopName %></td> <td><%= (int)nbLink %></td> <td> <%= floatFormat.format(perNbLinkA) %>% / <%= floatFormat.format(perNbLinkC) %>% </td> </tr> <% } } %> </tbody> </table> </div> </div> <br/> <%-- Graphe --%> <table class="container" cellpadding="1" align="center"> <tr> <td> <center> <fl:sdi code="STDNBEMAILSENT"/> </center> </td> </tr> <tr class="ligne_separation"> <td colspan="4"></td> </tr> <tr class="ligne_separation_couleur"> <td colspan="4"></td> </tr> <tr class="ligne_separation"> <td colspan="4"></td> </tr> <tr> <td> <center> <fl:sdi code="STDNBCNTCLICKS"/> </center> </td> </tr> </table>
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de