Explorar el Código

Improve time filter language and handling of daysBack parameter

tags/v1.3.0
James Moger hace 11 años
padre
commit
5abe3350a3

+ 2
- 1
releases.moxie Ver fichero

- { name: 'realm.salesforce.orgId', defaultValue: 0 } - { name: 'realm.salesforce.orgId', defaultValue: 0 }
- { name: 'realm.windows.defaultDomain', defaultValue: ' ' } - { name: 'realm.windows.defaultDomain', defaultValue: ' ' }
- { name: 'realm.windows.backingUserService', defaultValue: 'users.conf' } - { name: 'realm.windows.backingUserService', defaultValue: 'users.conf' }
- { name: 'web.activityDurationChoices', defaultValue: '7 14 21 28' }
- { name: 'web.activityDuration', defaultValue: 7 }
- { name: 'web.activityDurationChoices', defaultValue: '1 3 7 14 21 28' }
- { name: 'web.activityCacheDays', defaultValue: 14 } - { name: 'web.activityCacheDays', defaultValue: 14 }
- { name: 'web.allowAppCloneLinks', defaultValue: 'true' } - { name: 'web.allowAppCloneLinks', defaultValue: 'true' }
- { name: 'web.forceDefaultLocale', defaultValue: ' ' } - { name: 'web.forceDefaultLocale', defaultValue: ' ' }

+ 1
- 1
src/main/distrib/data/gitblit.properties Ver fichero

# #
# SPACE-DELIMITED # SPACE-DELIMITED
# SINCE 1.3.0 # SINCE 1.3.0
web.activityDurationChoices = 7 14 21 28
web.activityDurationChoices = 1 3 7 14 21 28
# The number of days of commits to cache in memory for the dashboard, activity, # The number of days of commits to cache in memory for the dashboard, activity,
# and project pages. A value of 0 will disable all caching and will parse commits # and project pages. A value of 0 will disable all caching and will parse commits

+ 4
- 1
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties Ver fichero

gb.starred = starred gb.starred = starred
gb.owned = owned gb.owned = owned
gb.starredAndOwned = starred & owned gb.starredAndOwned = starred & owned
gb.reviewPatchset = review {0} patchset {1}
gb.reviewPatchset = review {0} patchset {1}
gb.todaysActivityStats = today / {1} commits by {2} authors
gb.todaysActivityNone = today / none
gb.noActivityToday = there has been no activity today

+ 24
- 8
src/main/java/com/gitblit/wicket/PageRegistration.java Ver fichero

parameters = new PageParameters(params); parameters = new PageParameters(params);
if (parameters.containsKey(parameter)) { if (parameters.containsKey(parameter)) {
isSelected = params.getString(parameter).equals(value); isSelected = params.getString(parameter).equals(value);
if (isSelected) {
// already selected, so remove this enables toggling
parameters.remove(parameter);
} else {
// set the new selection value
setParameter(parameter, value);
}
// set the new selection value
setParameter(parameter, value);
} else { } else {
// not currently selected // not currently selected
isSelected = false; isSelected = false;
} }
} }
private void setParameter(String parameter, String value) {
protected void setParameter(String parameter, String value) {
if (!StringUtils.isEmpty(parameter)) { if (!StringUtils.isEmpty(parameter)) {
if (StringUtils.isEmpty(value)) { if (StringUtils.isEmpty(value)) {
this.parameters.remove(parameter); this.parameters.remove(parameter);
return displayText; return displayText;
} }
} }
public static class DropDownToggleItem extends DropDownMenuItem {
private static final long serialVersionUID = 1L;
/**
* Toggle Menu Item constructor that preserves aggregate parameters.
*
* @param displayText
* @param parameter
* @param value
*/
public DropDownToggleItem(String displayText, String parameter, String value,
PageParameters params) {
super(displayText, parameter, value, params);
if (isSelected) {
// already selected, so remove this enables toggling
parameters.remove(parameter);
}
}
}
} }

+ 1
- 1
src/main/java/com/gitblit/wicket/WicketUtils.java Ver fichero

} }
public static int getDaysBack(PageParameters params) { public static int getDaysBack(PageParameters params) {
return params.getInt("db", 7);
return params.getInt("db", 0);
} }
public static String getUsername(PageParameters params) { public static String getUsername(PageParameters params) {

+ 20
- 3
src/main/java/com/gitblit/wicket/pages/ActivityPage.java Ver fichero

// parameters // parameters
int daysBack = WicketUtils.getDaysBack(params); int daysBack = WicketUtils.getDaysBack(params);
if (daysBack < 1) { if (daysBack < 1) {
daysBack = 14;
daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
} }
String objectId = WicketUtils.getObject(params); String objectId = WicketUtils.getObject(params);
List<Activity> recentActivity = ActivityUtils.getRecentActivity(models, List<Activity> recentActivity = ActivityUtils.getRecentActivity(models,
daysBack, objectId, getTimeZone()); daysBack, objectId, getTimeZone());
String headerPattern;
if (daysBack == 1) {
// today
if (recentActivity.size() == 0) {
headerPattern = getString("gb.todaysActivityNone");
} else {
headerPattern = getString("gb.todaysActivityStats");
}
} else {
// multiple days
if (recentActivity.size() == 0) {
headerPattern = getString("gb.recentActivityNone");
} else {
headerPattern = getString("gb.recentActivityStats");
}
}
if (recentActivity.size() == 0) { if (recentActivity.size() == 0) {
// no activity, skip graphs and activity panel // no activity, skip graphs and activity panel
add(new Label("subheader", MessageFormat.format(getString("gb.recentActivityNone"),
add(new Label("subheader", MessageFormat.format(headerPattern,
daysBack))); daysBack)));
add(new Label("activityPanel")); add(new Label("activityPanel"));
} else { } else {
int totalAuthors = uniqueAuthors.size(); int totalAuthors = uniqueAuthors.size();
// add the subheader with stat numbers // add the subheader with stat numbers
add(new Label("subheader", MessageFormat.format(getString("gb.recentActivityStats"),
add(new Label("subheader", MessageFormat.format(headerPattern,
daysBack, totalCommits, totalAuthors))); daysBack, totalCommits, totalAuthors)));
// create the activity charts // create the activity charts

+ 27
- 3
src/main/java/com/gitblit/wicket/pages/DashboardPage.java Ver fichero

// quiet or no starred repositories // quiet or no starred repositories
if (repositories.size() == 0) { if (repositories.size() == 0) {
if (UserModel.ANONYMOUS.equals(user)) { if (UserModel.ANONYMOUS.equals(user)) {
activityFragment.add(new Label("digests", MessageFormat.format(getString("gb.noActivity"), daysBack)));
if (daysBack == 1) {
activityFragment.add(new Label("digests", getString("gb.noActivityToday")));
} else {
activityFragment.add(new Label("digests", MessageFormat.format(getString("gb.noActivity"), daysBack)));
}
} else { } else {
activityFragment.add(new LinkPanel("digests", null, getString("gb.findSomeRepositories"), RepositoriesPage.class)); activityFragment.add(new LinkPanel("digests", null, getString("gb.findSomeRepositories"), RepositoriesPage.class));
} }
} else { } else {
activityFragment.add(new Label("digests", MessageFormat.format(getString("gb.noActivity"), daysBack)));
if (daysBack == 1) {
activityFragment.add(new Label("digests", getString("gb.noActivityToday")));
} else {
activityFragment.add(new Label("digests", MessageFormat.format(getString("gb.noActivity"), daysBack)));
}
} }
} else { } else {
// show daily commit digest feed // show daily commit digest feed
} }
} }
frag.add(new Label("feedheader", MessageFormat.format(getString("gb.recentActivityStats"),
String headerPattern;
if (daysBack == 1) {
// today
if (totalCommits == 0) {
headerPattern = getString("gb.todaysActivityNone");
} else {
headerPattern = getString("gb.todaysActivityStats");
}
} else {
// multiple days
if (totalCommits == 0) {
headerPattern = getString("gb.recentActivityNone");
} else {
headerPattern = getString("gb.recentActivityStats");
}
}
frag.add(new Label("feedheader", MessageFormat.format(headerPattern,
daysBack, totalCommits, authorMetrics.size()))); daysBack, totalCommits, authorMetrics.size())));
// build google charts // build google charts

+ 1
- 1
src/main/java/com/gitblit/wicket/pages/MyDashboardPage.java Ver fichero

// parameters // parameters
int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params); int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params);
if (daysBack < 1) { if (daysBack < 1) {
daysBack = 7;
daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
} }
Calendar c = Calendar.getInstance(); Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -1*daysBack); c.add(Calendar.DATE, -1*daysBack);

+ 2
- 2
src/main/java/com/gitblit/wicket/pages/ProjectPage.java Ver fichero

} }
int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params); int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params);
if (daysBack < 1) { if (daysBack < 1) {
daysBack = 7;
daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
} }
// reset the daysback parameter so that we have a complete project // reset the daysback parameter so that we have a complete project
// repository list. the recent activity will be built up by the // repository list. the recent activity will be built up by the
// reflog utils. // reflog utils.
params.put("db", 0);
params.remove("db");
List<RepositoryModel> repositories = getRepositories(params); List<RepositoryModel> repositories = getRepositories(params);
Collections.sort(repositories, new Comparator<RepositoryModel>() { Collections.sort(repositories, new Comparator<RepositoryModel>() {

+ 12
- 7
src/main/java/com/gitblit/wicket/pages/RootPage.java Ver fichero

import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.PageRegistration; import com.gitblit.wicket.PageRegistration;
import com.gitblit.wicket.PageRegistration.DropDownMenuItem; import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
import com.gitblit.wicket.PageRegistration.DropDownToggleItem;
import com.gitblit.wicket.SessionlessForm; import com.gitblit.wicket.SessionlessForm;
import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.GravatarImage; import com.gitblit.wicket.panels.GravatarImage;
List<String> sets = new ArrayList<String>(setMap.keySet()); List<String> sets = new ArrayList<String>(setMap.keySet());
Collections.sort(sets); Collections.sort(sets);
for (String set : sets) { for (String set : sets) {
filters.add(new DropDownMenuItem(MessageFormat.format("{0} ({1})", set,
filters.add(new DropDownToggleItem(MessageFormat.format("{0} ({1})", set,
setMap.get(set).get()), "set", set, params)); setMap.get(set).get()), "set", set, params));
} }
// divider // divider
List<TeamModel> teams = new ArrayList<TeamModel>(user.teams); List<TeamModel> teams = new ArrayList<TeamModel>(user.teams);
Collections.sort(teams); Collections.sort(teams);
for (TeamModel team : teams) { for (TeamModel team : teams) {
filters.add(new DropDownMenuItem(MessageFormat.format("{0} ({1})", team.name,
filters.add(new DropDownToggleItem(MessageFormat.format("{0} ({1})", team.name,
team.repositories.size()), "team", team.name, params)); team.repositories.size()), "team", team.name, params));
} }
// divider // divider
for (String expression : expressions) { for (String expression : expressions) {
if (!StringUtils.isEmpty(expression)) { if (!StringUtils.isEmpty(expression)) {
addedExpression = true; addedExpression = true;
filters.add(new DropDownMenuItem(null, "x", expression, params));
filters.add(new DropDownToggleItem(null, "x", expression, params));
} }
} }
// if we added any custom expressions, add a divider // if we added any custom expressions, add a divider
if (daysBack < 1) { if (daysBack < 1) {
daysBack = 7; daysBack = 7;
} }
PageParameters clonedParams;;
PageParameters clonedParams;
if (params == null) { if (params == null) {
clonedParams = new PageParameters(); clonedParams = new PageParameters();
} else { } else {
List<DropDownMenuItem> items = new ArrayList<DropDownMenuItem>(); List<DropDownMenuItem> items = new ArrayList<DropDownMenuItem>();
Set<Integer> choicesSet = new TreeSet<Integer>(GitBlit.getIntegers(Keys.web.activityDurationChoices)); Set<Integer> choicesSet = new TreeSet<Integer>(GitBlit.getIntegers(Keys.web.activityDurationChoices));
if (choicesSet.isEmpty()) { if (choicesSet.isEmpty()) {
choicesSet.addAll(Arrays.asList(7, 14, 28, 60, 90, 180));
choicesSet.addAll(Arrays.asList(1, 3, 7, 14, 21, 28));
} }
List<Integer> choices = new ArrayList<Integer>(choicesSet); List<Integer> choices = new ArrayList<Integer>(choicesSet);
Collections.sort(choices); Collections.sort(choices);
String lastDaysPattern = getString("gb.lastNDays"); String lastDaysPattern = getString("gb.lastNDays");
for (Integer db : choices) { for (Integer db : choices) {
String txt = MessageFormat.format(lastDaysPattern, db);
items.add(new DropDownMenuItem(txt, "db", db.toString(), clonedParams));
if (db == 1) {
items.add(new DropDownMenuItem(getString("gb.time.today"), "db", db.toString(), clonedParams));
} else {
String txt = MessageFormat.format(lastDaysPattern, db);
items.add(new DropDownMenuItem(txt, "db", db.toString(), clonedParams));
}
} }
items.add(new DropDownMenuItem()); items.add(new DropDownMenuItem());
return items; return items;

Cargando…
Cancelar
Guardar