Author: fdesbois
Date: 2010-01-17 13:26:09 +0000 (Sun, 17 Jan 2010)
New Revision: 208
Modified:
trunk/pom.xml
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css
Log:
- Simplify Synthesis for DataSampling (maybe only usage of SamplingFilter needed)
- Use form.submit js for onChange on some select (facade, company)
- Add observer in AbstractFilteredPage
- Use last mavenpom and nuiton-utils release version
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/pom.xml 2010-01-17 13:26:09 UTC (rev 208)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4labs</artifactId>
- <version>2.0-SNAPSHOT</version>
+ <version>2.0</version>
</parent>
<groupId>fr.ifremer</groupId>
@@ -213,7 +213,7 @@
<labs.id>154</labs.id>
<!-- libraries version -->
- <nuitonutils.version>1.1.3-SNAPSHOT</nuitonutils.version>
+ <nuitonutils.version>1.1.3</nuitonutils.version>
<topia.version>2.3.0-beta-4-SNAPSHOT</topia.version>
<eugene.version>2.0.0-beta-3-SNAPSHOT</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-17 13:26:09 UTC (rev 208)
@@ -78,25 +78,21 @@
query = filter.prepareQueryForSampling(query, "M");
- // FIXME company from sampleRow and not from contact, but user from contact
- // Refactor MODEL : suppress link between user and contact + add field observer in contact
- // In filter : sampleRow.company filtered and contact.observer
+// if (filter.isBoatFiltered() || filter.getObserver() != null) {
+// // Check boat on finished contact (validate + Boarding_Done) and same month/year as SampleMonth
+// query.addFrom(Contact.class.getName() + " C").add("C IN elements(M.sampleRow.contact)").
+// add("C.state", ContactState.BOARDING_DONE.toString()).
+// add("C.validationCompany", Boolean.TRUE).
+// add("C.validationProgram IS NULL OR C.validationProgram = :booleanTrue").
+// addParam("booleanTrue", Boolean.TRUE).
+// add("month(C.tideBeginDate) = month(M.periodDate)").
+// add("year(C.tideBeginDate) = year(M.periodDate)");
+// query = filter.prepareQueryForBoat(query, "C");
+// if (filter.getObserver() != null) {
+// query.add("C." + Contact.USER, filter.getObserver());
+// }
+// }
- if (filter.isBoatFiltered() || filter.getObserver() != null) {
- // Check boat on finished contact (validate + Boarding_Done) and same month/year as SampleMonth
- query.addFrom(Contact.class.getName() + " C").add("C IN elements(M.sampleRow.contact)").
- add("C.state", ContactState.BOARDING_DONE.toString()).
- add("C.validationCompany", Boolean.TRUE).
- add("C.validationProgram IS NULL OR C.validationProgram = :booleanTrue").
- addParam("booleanTrue", Boolean.TRUE).
- add("month(C.tideBeginDate) = month(M.periodDate)").
- add("year(C.tideBeginDate) = year(M.periodDate)");
- query = filter.prepareQueryForBoat(query, "C");
- if (filter.getObserver() != null) {
- query.add("C." + Contact.USER, filter.getObserver());
- }
- }
-
if (filter.getCompany() != null) {
query.add("M." + SampleMonth.SAMPLE_ROW + "." + SampleRow.COMPANY, filter.getCompany());
}
Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java
===================================================================
--- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceUserImpl.java 2010-01-17 13:26:09 UTC (rev 208)
@@ -34,6 +34,7 @@
import java.util.ArrayList;
import java.util.List;
import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.framework.TopiaQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -230,11 +231,34 @@
transaction.closeContext();
} catch (Exception eee) {
- SuiviObsmerContext.serviceException(transaction, "Impossible de créer ou de mettre à jour l'utilisateur", eee);
+ SuiviObsmerContext.serviceException(transaction, "Impossible de récupérer la liste des sociétés", eee);
}
return results;
}
+ @Override
+ public List<User> getObservers(boolean activeOnly) throws SuiviObsmerException {
+ TopiaContext transaction = null;
+ List<User> results = new ArrayList<User>();
+ try {
+ transaction = rootContext.beginTransaction();
+ UserDAO dao = SuiviObsmerModelDAOHelper.getUserDAO(transaction);
+ TopiaQuery<User> query = dao.createQuery().add(User.ADMIN, Boolean.FALSE);
+ if (activeOnly) {
+ query.add(User.ACTIVE, Boolean.TRUE);
+ }
+
+ results = query.executeToEntityList();
+
+ transaction.closeContext();
+ } catch (Exception eee) {
+ SuiviObsmerContext.serviceException(transaction, "Impossible de récupérer la liste des observateurs", eee);
+ }
+ return results;
+ }
+
+
+
}
Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo
===================================================================
(Binary files differ)
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-17 13:26:09 UTC (rev 208)
@@ -3,11 +3,13 @@
import fr.ifremer.suiviobsmer.SuiviObsmerException;
import fr.ifremer.suiviobsmer.bean.BoatFilter;
+import fr.ifremer.suiviobsmer.entity.Company;
import fr.ifremer.suiviobsmer.entity.SampleRow;
import fr.ifremer.suiviobsmer.entity.User;
import fr.ifremer.suiviobsmer.services.ServiceBoat;
import fr.ifremer.suiviobsmer.services.ServiceReferential;
import fr.ifremer.suiviobsmer.services.ServiceSampling;
+import fr.ifremer.suiviobsmer.services.ServiceUser;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
@@ -42,6 +44,10 @@
* The zone_id is the one of the zone returned by {@link #getFilterZone() }
* - SampleRow select value is sampleRowId :
* <input t:type="select" t:id="sampleRow" t:model="sampleRowSelectModel" value="sampleRowId" />
+ * - Company select value is companyId :
+ * <input t:type="select" t:id="company" t:model="companySelectModel" value="companyId" />
+ * - Observer select value is observerId and have a zoneUpdater mixins :
+ * <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" t:mixins="zoneUpdater" t:event="change" t:zone="..." .../>
* </pre>
*
* @author fdesbois
@@ -70,6 +76,9 @@
@Inject
private ServiceBoat serviceBoat;
+ @Inject
+ private ServiceUser serviceUser;
+
@Persist
private GenericSelectModel<SampleRow> sampleRowSelectModel;
@@ -82,11 +91,18 @@
@Persist
private SelectModel sectorSelectModel;
-// public enum FIELD {
-// FACADE, SECTOR, SAMPLE_ROW, PROGRAM;
-// }
+ private GenericSelectModel<Company> companySelectModel;
+ @Property
+ private String companyId;
+
+ private GenericSelectModel<User> observerSelectModel;
+
+ @Property
+ private String observerId;
+
protected void initFilter() throws SuiviObsmerException {
+
facadeSelectModel = null;
getFacadeSelectModel();
sectorSelectModel = null;
@@ -97,6 +113,23 @@
if (getFilter().getSampleRow() != null) {
sampleRowId = getFilter().getSampleRow().getTopiaId();
}
+
+ if (user.getAdmin()) {
+ companySelectModel = null;
+ getCompanySelectModel();
+ if (getFilter().getCompany() != null) {
+ companyId = getFilter().getCompany().getTopiaId();
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Company filtered : " + user.getCompany());
+ }
+ getFilter().setCompany(user.getCompany());
+ }
+
+ if (getFilter().getObserver() != null) {
+ observerId = getFilter().getObserver().getTopiaId();
+ }
}
public SelectModel getFacadeSelectModel() throws SuiviObsmerException {
@@ -132,47 +165,102 @@
if (log.isInfoEnabled()) {
log.info("BUSINESS REQUEST [getSampleRowsForUser]");
}
- List<SampleRow> sampleRows = serviceSampling.getSampleRowsForUser(user, getFinishedSampleRowsOnly());
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsForUser(user, getAvailableDataForFiltersOnly());
sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class,
"code", "topiaId", propertyAccess);
}
return sampleRowSelectModel;
}
- public String[] onProvideCompletionsFromBoatName(String input) throws SuiviObsmerException {
- if (log.isInfoEnabled()) {
- log.info("BUSINESS REQUEST [getBoatNamesStartWith]");
+ public GenericSelectModel<Company> getCompanySelectModel() throws SuiviObsmerException {
+ if (companySelectModel == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("BUSINESS REQUEST [getCompanies]");
+ }
+ List<Company> companies = serviceUser.getCompanies(getAvailableDataForFiltersOnly());
+ companySelectModel = new GenericSelectModel<Company>(companies,Company.class,
+ "name","topiaId",propertyAccess);
}
- List<String> results = serviceBoat.getBoatNamesStartWith(input);
- return results.toArray(new String[0]);
+ return companySelectModel;
}
+ public GenericSelectModel<User> getObserverSelectModel() throws SuiviObsmerException {
+ if (observerSelectModel == null) {
+ List<User> observers = new ArrayList<User>();
+ if (getFilter().getCompany() != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Company filter users : " + getFilter().getCompany());
+ }
+ observers = getFilter().getCompany().getUser();
+ } else if (user.getAdmin()) {
+ if (log.isDebugEnabled()) {
+ log.debug("BUSINESS REQUEST [getObservers]");
+ }
+ observers = serviceUser.getObservers(getAvailableDataForFiltersOnly());
+ }
+ observerSelectModel = new GenericSelectModel<User>(observers,User.class,
+ "fullName","topiaId",propertyAccess);
+ }
+ return observerSelectModel;
+ }
+
protected abstract BoatFilter getFilter() throws SuiviObsmerException;
protected abstract void resetFilter();
- protected abstract Zone getFilterZone();
+ protected abstract Zone getSampleRowFilterZone();
- protected abstract boolean getFinishedSampleRowsOnly();
+ protected abstract Zone getObserverFilterZone();
- @Log
- public Object onChangeFromFacadeName(String value) throws SuiviObsmerException {
- if (!StringUtils.isEmpty(value.trim())) {
- // Reset filter to avoid strange behavior (cause of no form submit)
- resetFilter();// = null;
- // set facadeName selected in filter
- getFilter().setFacadeName(value);
- // Reset sectors to use facadeName selected
- sectorSelectModel = null;
- return getFilterZone().getBody();
+ protected abstract boolean getAvailableDataForFiltersOnly();
+
+ public String[] onProvideCompletionsFromBoatName(String input) throws SuiviObsmerException {
+ if (log.isInfoEnabled()) {
+ log.info("BUSINESS REQUEST [getBoatNamesStartWith]");
}
- return null;
+ List<String> results = serviceBoat.getBoatNamesStartWith(input);
+ return results.toArray(new String[0]);
}
+// @Log
+// public Object onChangeFromFacadeName(String value) throws SuiviObsmerException {
+// if (!StringUtils.isEmpty(value.trim())) {
+// // Reset filter to avoid strange behavior (cause of no form submit)
+// resetFilter();// = null;
+// // set facadeName selected in filter
+// getFilter().setFacadeName(value);
+// // Reset sectors to use facadeName selected
+// sectorSelectModel = null;
+// return getSampleRowFilterZone().getBody();
+// }
+// return null;
+// }
+//
+// @Log
+// public Object onChangeFromCompany(String value) throws SuiviObsmerException {
+// if (!StringUtils.isEmpty(value.trim())) {
+// // Reset filter to avoid strange behavior (cause of no form submit)
+// resetFilter();
+// // set company selected in filter
+// getFilter().setCompany(getCompanySelectModel().findObject(companyId));
+// // Reset observers to use company selected
+// observerSelectModel = null;
+// return getObserverFilterZone().getBody();
+// }
+// return null;
+// }
+
@Log
public void onSuccess() throws SuiviObsmerException {
SampleRow row = getSampleRowSelectModel().findObject(sampleRowId);
getFilter().setSampleRow(row);
+ if (user.getAdmin()) {
+ Company company = getCompanySelectModel().findObject(companyId);
+ getFilter().setCompany(company);
+ }
+
+ User observer = getObserverSelectModel().findObject(observerId);
+ getFilter().setObserver(observer);
}
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-17 13:26:09 UTC (rev 208)
@@ -144,9 +144,9 @@
public ContactFilter getContactFilter() throws SuiviObsmerException {
if (contactFilter == null) {
contactFilter = new ContactFilterImpl();
- if (!user.getAdmin()) {
- contactFilter.setCompany(user.getCompany());
- }
+// if (!user.getAdmin()) {
+// contactFilter.setCompany(user.getCompany());
+// }
}
return contactFilter;
}
@@ -162,12 +162,17 @@
}
@Override
- protected Zone getFilterZone() {
+ protected Zone getSampleRowFilterZone() {
return filtersZone;
}
@Override
- protected boolean getFinishedSampleRowsOnly() {
+ protected Zone getObserverFilterZone() {
+ return filtersZone;
+ }
+
+ @Override
+ protected boolean getAvailableDataForFiltersOnly() {
return true;
}
Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java
===================================================================
--- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Synthesis.java 2010-01-17 13:26:09 UTC (rev 208)
@@ -85,8 +85,11 @@
private BoatFilter dataSamplingFilter;
@InjectComponent
- private Zone dataSamplingFiltersZone;
+ private Zone sampleRowZone;
+ @InjectComponent
+ private Zone observerZone;
+
@Persist
private ChartType dataSamplingChartType;
@@ -114,12 +117,17 @@
}
@Override
- protected Zone getFilterZone() {
- return dataSamplingFiltersZone;
+ protected Zone getSampleRowFilterZone() {
+ return sampleRowZone;
}
@Override
- protected boolean getFinishedSampleRowsOnly() {
+ protected Zone getObserverFilterZone() {
+ return observerZone;
+ }
+
+ @Override
+ protected boolean getAvailableDataForFiltersOnly() {
return false;
}
Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties
===================================================================
--- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Contacts.properties 2010-01-17 13:26:09 UTC (rev 208)
@@ -1,6 +1,7 @@
# ContactForm labels
facadeName-label: Facade
sectorName-label: Secteur
+observer-label: Observateur
contactsCsvFile-label: Fichier des contacts
# Grid labels
Modified: trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/webapp/Contacts.tml 2010-01-17 13:26:09 UTC (rev 208)
@@ -33,8 +33,7 @@
<t:label t:for="boatDistrictCode" />:
<input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="contactFilter.boatDistrictCode" />
<t:label t:for="facadeName" />:
- <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName"
- t:mixins="zoneUpdater" t:event="change" t:zone="so-contacts-filters"/>
+ <select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="contactFilter.facadeName" />
<t:label t:for="sectorName" />:
<select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="contactFilter.sectorName" />
<t:label t:for="sampleRow" />:
@@ -50,6 +49,12 @@
</t:label>
</div><p> </p>
<div>
+ <t:if t:test="user.admin">
+ <t:label t:for="company" />:
+ <input t:type="select" t:id="company" t:model="companySelectModel" value="companyId"/>
+ </t:if>
+ <t:label t:for="observer" />:
+ <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />
<label>Validation société: </label>
<input t:type="checkbox" t:id="companyAccepted" value="contactFilter.companyAccepted" />
<t:label t:for="companyAccepted">
@@ -242,5 +247,9 @@
</div>
</form>
</t:zone>
+<script type="text/javascript">
+ Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+ Event.observe('company', 'change', function() { $('filtersForm').submit(); } );
+</script><!--Event.observe('company', 'change', function() { $('filtersForm').submit(); } );-->
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/webapp/Synthesis.tml 2010-01-17 13:26:09 UTC (rev 208)
@@ -47,7 +47,7 @@
<fieldset>
<legend>Filtres</legend>
<div class="so-filters-form">
- <div t:type="zone" t:id="dataSamplingFiltersZone" t:update="show" id="so-datasampling-filters">
+ <!--<div t:type="zone" t:id="dataSamplingFiltersZone" t:update="show" id="so-datasampling-filters">-->
<form t:type="form" t:id="filtersForm">
<t:errors />
<div class="t-beaneditor">
@@ -58,10 +58,10 @@
<t:label t:for="periodEnd" />:
<input t:type="datefield" class="width70" t:id="periodEnd" t:value="filter.period.thruDate" />
</div>
- <div class="filterRow">
+ <div class="filterRow" t:type="zone" t:id="sampleRowZone" t:update="show">
<t:label t:for="facadeName" />:
<select t:type="select" t:id="facadeName" t:model="facadeSelectModel" value="filter.facadeName"
- t:mixins="zoneUpdater" t:event="change" t:zone="so-datasampling-filters"/>
+ />
<t:label t:for="sectorName" />:
<select t:type="select" t:id="sectorName" t:model="sectorSelectModel" value="filter.sectorName" />
<t:label t:for="sampleRow" />:
@@ -69,7 +69,7 @@
<!--<t:label t:for="program" />:
<input t:type="select" t:id="program" t:model="programSelectModel" value="programId" />-->
</div>
- <div class="filterRow">
+<!-- <div class="filterRow">
<label>Navire: </label>
<t:label t:for="boatName" />:
<input t:type="textfield" t:id="boatName" t:value="filter.boatName" t:mixins="Autocomplete" />
@@ -77,24 +77,23 @@
<input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" />
<t:label t:for="boatDistrictCode" />:
<input t:type="textfield" t:id="boatDistrictCode" class="width50" t:value="filter.boatDistrictCode" />
- </div>
-<!-- <t:if t:test="user.admin">
- <t:label t:for="program" />:
- <input t:type="select" t:id="program" t:model="programSelectModel" value="dataSamplingFilter.programName" />
- </t:if>
- <t:label t:for="observer" />:
- <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />
- <t:if t:test="user.admin">
+ </div>-->
+ <t:if t:test="user.admin">
+ <div t:type="zone" t:id="observerZone" t:update="show">
+ <!--<t:label t:for="observer" />:
+ <input t:type="select" t:id="observer" t:model="observerSelectModel" value="observerId" />-->
+
<t:label t:for="company" />:
- <input t:type="select" t:id="company" t:model="companySelectModel" value="companyId" />
- </t:if>-->
+ <input t:type="select" t:id="company" t:model="companySelectModel" value="companyId"/>
+ </div>
+ </t:if>
<div class="t-beaneditor-row aright">
<input t:type="submit" class="ico search-32px" t:id="search" value="Search" />
<input t:type="submit" class="ico undo" t:id="reset" value="Reset" />
</div>
</div>
</form>
- </div>
+ <!--</div>-->
</div>
</fieldset>
<p class="so-chart-types">
@@ -110,4 +109,7 @@
</p>
<t:chart t:width="550" t:height="350" t:chart="dataSamplingChart" />
</div>
+<script type="text/javascript">
+ Event.observe('facadeName', 'change', function() { $('filtersForm').submit(); } );
+</script>
</t:layout>
Modified: trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css
===================================================================
--- trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css 2010-01-15 15:14:48 UTC (rev 207)
+++ trunk/suiviobsmer-ui/src/main/webapp/css/synthesis.css 2010-01-17 13:26:09 UTC (rev 208)
@@ -68,7 +68,7 @@
padding-left: 20px;
}
-div#so-datasampling-filters div.filterRow {
+div#so-datasampling div.so-filters-form div.filterRow {
margin-bottom: 5px;
margin-top: 5px;
}