Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
remove stats graph widget from model (DocumentNode) object
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmason committed Dec 21, 2011
1 parent e80374d commit 32cc565
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 51 deletions.
Expand Up @@ -61,4 +61,25 @@ public void add(TranslationStats other)
wordCount.add(other.getWordCount());
}

public double getRemainingWordsHours()
{
return remainingHours(wordCount.getNeedReview(), wordCount.getUntranslated());
}

public int getApprovedPercent(boolean byWords)
{
if (byWords)
return wordCount.getApproved() * 100 / wordCount.getTotal();
else
return unitCount.getApproved() * 100 / unitCount.getTotal();
}

private double remainingHours(int fuzzyWords, int untranslatedWords)
{
double untransHours = untranslatedWords / 250.0;
double fuzzyHours = fuzzyWords / 500.0;
double remainHours = untransHours + fuzzyHours;
return remainHours;
}

}
@@ -1,6 +1,7 @@
package org.zanata.webtrans.client.ui;

import java.util.Comparator;
import java.util.HashMap;

import org.zanata.webtrans.client.history.HistoryToken;
import org.zanata.webtrans.client.presenter.AppPresenter.Display.MainView;
Expand Down Expand Up @@ -55,6 +56,11 @@ else if (event.getType().equalsIgnoreCase("mouseout"))
}
}

// TODO this is not the ideal place to store this
// it is required since these graphs have been removed from DocumentNode so
// that DocumentListPresenter can be unit tested (JRE).
private static HashMap<Long, TransUnitCountGraph> statsWidgets = new HashMap<Long, TransUnitCountGraph>();

private static Column<DocumentNode, String> getFolderColumn(final Resources resources)
{
TextColumn<DocumentNode> folderColumn = new TextColumn<DocumentNode>()
Expand Down Expand Up @@ -84,14 +90,25 @@ public String getValue(DocumentNode object)
return docColumn;
}

private static Column<DocumentNode, TransUnitCountGraph> getStatisticColumn(final Resources resources)
private static Column<DocumentNode, TransUnitCountGraph> getStatisticColumn(final Resources resources, final WebTransMessages messages)
{
Column<DocumentNode, TransUnitCountGraph> statisticColumn = new Column<DocumentNode, TransUnitCountGraph>(new TransUnitCountGraphCell())
{
@Override
public TransUnitCountGraph getValue(DocumentNode object)
public TransUnitCountGraph getValue(DocumentNode docNode)
{
return object.getTransUnitCountGraph();
long id = docNode.getDocInfo().getId().getId();
if (!statsWidgets.containsKey(id))
{
TransUnitCountGraph graph = new TransUnitCountGraph(messages);
graph.setStats(docNode.getDocInfo().getStats());
statsWidgets.put(id, graph);
}
else
{
statsWidgets.get(id).setStats(docNode.getDocInfo().getStats());
}
return statsWidgets.get(id);
}
};
statisticColumn.setSortable(true);
Expand All @@ -105,7 +122,7 @@ private static Column<DocumentNode, String> getTranslatedColumn(final WebTransMe
@Override
public String getValue(DocumentNode object)
{
return String.valueOf(object.getTransUnitCountGraph().getWordsApproved());
return String.valueOf(object.getDocInfo().getStats().getWordCount().getApproved());
}
};
translatedColumn.setSortable(true);
Expand All @@ -119,7 +136,8 @@ private static Column<DocumentNode, String> getUntranslatedColumn(final WebTrans
@Override
public String getValue(DocumentNode object)
{
return String.valueOf(object.getTransUnitCountGraph().getWordsUntranslated());
return String.valueOf(object.getDocInfo().getStats().getWordCount().getUntranslated());

}
};
unTranslatedColumn.setSortable(true);
Expand All @@ -133,7 +151,7 @@ private static Column<DocumentNode, String> getRemainingColumn(final WebTransMes
@Override
public String getValue(DocumentNode object)
{
return messages.statusBarLabelHours(object.getTransUnitCountGraph().getRemainingWordsHours());
return messages.statusBarLabelHours(object.getDocInfo().getStats().getRemainingWordsHours());
}
};
remainingColumn.setSortable(true);
Expand Down Expand Up @@ -177,7 +195,7 @@ public void onSelectionChange(SelectionChangeEvent event)

final Column<DocumentNode, String> folderColumn = getFolderColumn(resources);
final Column<DocumentNode, String> documentColumn = getDocumentColumn(resources);
final Column<DocumentNode, TransUnitCountGraph> statisticColumn = getStatisticColumn(resources);
final Column<DocumentNode, TransUnitCountGraph> statisticColumn = getStatisticColumn(resources, messages);
final Column<DocumentNode, String> translatedColumn = getTranslatedColumn(messages);
final Column<DocumentNode, String> untranslatedColumn = getUntranslatedColumn(messages);
final Column<DocumentNode, String> remainingColumn = getRemainingColumn(messages);
Expand Down Expand Up @@ -215,13 +233,16 @@ public int compare(DocumentNode o1, DocumentNode o2)
{
public int compare(DocumentNode o1, DocumentNode o2)
{
if (o1.getTransUnitCountGraph().getApprovedPercent() == o2.getTransUnitCountGraph().getApprovedPercent())
// StatsByWords is always true for TransUnitCountGraph used in this
// table
boolean statsByWords = true;
if (o1.getDocInfo().getStats().getApprovedPercent(statsByWords) == o2.getDocInfo().getStats().getApprovedPercent(statsByWords))
{
return 0;
}
if (o1 != null && o2 != null)
{
return o1.getTransUnitCountGraph().getApprovedPercent() > o2.getTransUnitCountGraph().getApprovedPercent() ? 1 : -1;
return o1.getDocInfo().getStats().getApprovedPercent(statsByWords) > o2.getDocInfo().getStats().getApprovedPercent(statsByWords) ? 1 : -1;
}
return -1;
}
Expand All @@ -230,13 +251,13 @@ public int compare(DocumentNode o1, DocumentNode o2)
{
public int compare(DocumentNode o1, DocumentNode o2)
{
if (o1.getTransUnitCountGraph().getWordsApproved() == o2.getTransUnitCountGraph().getWordsApproved())
if (o1.getDocInfo().getStats().getWordCount().getApproved() == o2.getDocInfo().getStats().getWordCount().getApproved())
{
return 0;
}
if (o1 != null && o2 != null)
{
return o1.getTransUnitCountGraph().getWordsApproved() > o2.getTransUnitCountGraph().getWordsApproved() ? 1 : -1;
return o1.getDocInfo().getStats().getWordCount().getApproved() > o2.getDocInfo().getStats().getWordCount().getApproved() ? 1 : -1;
}
return -1;
}
Expand All @@ -245,13 +266,13 @@ public int compare(DocumentNode o1, DocumentNode o2)
{
public int compare(DocumentNode o1, DocumentNode o2)
{
if (o1.getTransUnitCountGraph().getWordsUntranslated() == o2.getTransUnitCountGraph().getWordsUntranslated())
if (o1.getDocInfo().getStats().getWordCount().getUntranslated() == o2.getDocInfo().getStats().getWordCount().getUntranslated())
{
return 0;
}
if (o1 != null && o2 != null)
{
return o1.getTransUnitCountGraph().getWordsUntranslated() > o2.getTransUnitCountGraph().getWordsUntranslated() ? 1 : -1;
return o1.getDocInfo().getStats().getWordCount().getUntranslated() > o2.getDocInfo().getStats().getWordCount().getUntranslated() ? 1 : -1;
}
return -1;
}
Expand All @@ -260,13 +281,13 @@ public int compare(DocumentNode o1, DocumentNode o2)
{
public int compare(DocumentNode o1, DocumentNode o2)
{
if (o1.getTransUnitCountGraph().getRemainingWordsHours() == o2.getTransUnitCountGraph().getRemainingWordsHours())
if (o1.getDocInfo().getStats().getRemainingWordsHours() == o2.getDocInfo().getStats().getRemainingWordsHours())
{
return 0;
}
if (o1 != null && o2 != null)
{
return o1.getTransUnitCountGraph().getRemainingWordsHours() > o2.getTransUnitCountGraph().getRemainingWordsHours() ? 1 : -1;
return o1.getDocInfo().getStats().getRemainingWordsHours() > o2.getDocInfo().getStats().getRemainingWordsHours() ? 1 : -1;
}
return -1;
}
Expand Down
Expand Up @@ -33,7 +33,6 @@

public class DocumentNode implements TransUnitUpdatedEventHandler
{
private TransUnitCountGraph transUnitCountGraph;
private ListDataProvider<DocumentNode> dataProvider;
private DocumentInfo docInfo;
private boolean isVisible = true;
Expand All @@ -43,10 +42,8 @@ public class DocumentNode implements TransUnitUpdatedEventHandler
public DocumentNode(WebTransMessages messages, DocumentInfo doc, EventBus eventBus, ListDataProvider<DocumentNode> dataProvider)
{
this.messages = messages;
this.transUnitCountGraph = new TransUnitCountGraph(messages);
this.dataProvider = dataProvider;
this.docInfo = doc;
transUnitCountGraph.setStats(docInfo.getStats());
}

@Override
Expand All @@ -60,25 +57,15 @@ public void onTransUnitUpdated(TransUnitUpdatedEvent event)
unitCount.increment(event.getTransUnit().getStatus());
wordCount.decrement(event.getPreviousStatus(), event.getWordCount());
wordCount.increment(event.getTransUnit().getStatus(), event.getWordCount());
updateGraphStatus();
// TODO consider removing this and doing this from a higher level.
dataProvider.refresh();
}
}
public DocumentInfo getDocInfo()
{
return docInfo;
}

public TransUnitCountGraph getTransUnitCountGraph()
{
return transUnitCountGraph;
}

private void updateGraphStatus()
{
transUnitCountGraph.setStats(docInfo.getStats());
dataProvider.refresh();
}

public boolean isVisible()
{
return isVisible;
Expand Down
Expand Up @@ -15,6 +15,7 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
Expand Down Expand Up @@ -48,8 +49,6 @@ interface TransUnitCountBarUiBinder extends UiBinder<Widget, TransUnitCountBar>

private final WebTransMessages messages;

private int approvedPercent = 0;

private int totalWidth = 100;

private boolean isGraph = false;
Expand Down Expand Up @@ -139,23 +138,22 @@ public void refresh()
int unfinishedPx = untranslated * 100 / total * width / totalWidth;

setupLayoutPanel(0.0, 0, 0.0, completePx, completePx, inProgressPx, completePx + inProgressPx, unfinishedPx);
setLabelText(total, approved, needReview, untranslated);
setLabelText();
}

int duration = isGraph ? 0 : 1000;
refreshDisplay(duration);
}

private void setLabelText(int total, int approved, int needReview, int untranslated)
private void setLabelText()
{
approvedPercent = approved * 100 / total;
switch (labelFormat)
{
case PERCENT_COMPLETE_HRS:
label.setText(messages.statusBarPercentageHrs(approvedPercent, getRemainingWordsHours()));
label.setText(messages.statusBarPercentageHrs(stats.getApprovedPercent(statsByWords), stats.getRemainingWordsHours()));
break;
case PERCENT_COMPLETE:
label.setText(messages.statusBarLabelPercentage(approvedPercent));
label.setText(messages.statusBarLabelPercentage(stats.getApprovedPercent(statsByWords)));
break;
default:
label.setText("error: " + labelFormat.name());
Expand All @@ -164,7 +162,7 @@ private void setLabelText(int total, int approved, int needReview, int untransla

public int getApprovedPercent()
{
return approvedPercent;
return stats.getApprovedPercent(statsByWords);
}

private void refreshDisplay(int duration)
Expand Down Expand Up @@ -216,19 +214,6 @@ public int getUnitUntranslated()
return stats.getUnitCount().get(ContentState.New);
}

public double getRemainingWordsHours()
{
return remainingHours(getWordsNeedReview(), getWordsUntranslated());
}

private double remainingHours(int fuzzyWords, int untranslatedWords)
{
double untransHours = untranslatedWords / 250.0;
double fuzzyHours = fuzzyWords / 500.0;
double remainHours = untransHours + fuzzyHours;
return remainHours;
}

@Override
public void setStats(TranslationStats stats)
{
Expand Down

0 comments on commit 32cc565

Please sign in to comment.