Skip to content
Snippets Groups Projects
Commit 9b87275f authored by srosse's avatar srosse
Browse files

OO-535: fix several issues for question pool, delete and copy of items quicker...

OO-535: fix several issues for question pool, delete and copy of items quicker reflected on the gui, search gui issues, doesn't show ID per default in admin part...
parent aff4fce3
No related branches found
No related tags found
No related merge requests found
Showing
with 59 additions and 11 deletions
......@@ -202,6 +202,8 @@ public abstract class DefaultFlexiTableDataSourceModel<U> implements FlexiTableD
if(firstResult == 0) {
if(newRows.getObjects().size() < correctMaxResults) {
rowCount = newRows.getObjects().size();
} else if(newRows.getCorrectedRowCount() >= 0) {
rowCount = newRows.getCorrectedRowCount();
} else {
rowCount = sourceDelegate.getRowCount();
}
......
......@@ -58,7 +58,7 @@ class FlexiDataTablesRenderer extends AbstractFlexiTableRenderer implements Comp
Form rootForm = ftE.getRootForm();
String id = ftC.getFormDispatchId();
int rows = dataModel.getRowCount();
int loadedRows = dataModel.getRowCount();
int selectPos = -1;
Object selectedObject = ftE.getSelectedObj();
......@@ -74,16 +74,17 @@ class FlexiDataTablesRenderer extends AbstractFlexiTableRenderer implements Comp
target.append("<script type='text/javascript'>")
.append("/* <![CDATA[ */ \n")
.append("jQuery(function() {\n")
.append(" var scrollHeight = (jQuery('#qitems').height() - 130) + 'px';\n")
.append(" var selectedIndex =").append(selectPos).append(";\n")
.append(" jQuery('#").append(id).append("').dataTable( {\n")
.append(" 'bScrollInfinite': true,\n")
.append(" 'bScrollCollapse': true,\n")
.append(" 'bFilter': false,\n")
.append(" 'sScrollY': '1px',\n")
.append(" 'sScrollY': scrollHeight,\n")
.append(" 'bProcessing': true,\n")
.append(" 'bServerSide': true,\n")
.append(" 'iDisplayLength': ").append(ftE.getPageSize()).append(",\n")
.append(" 'iDeferLoading': ").append(rows).append(",\n")
.append(" 'iDeferLoading': ").append(loadedRows).append(",\n")
.append(" 'sAjaxSource': '").append(ftE.getMapperUrl()).append("',\n")
.append(" 'asStripeClasses': ['','b_table_odd'],\n")
.append(" 'fnRowCallback': function( nRow, aData, iDisplayIndex, iDisplayIndexFull) {\n")
......
......@@ -477,8 +477,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
if(dataSource != null) {
resetInternComponents();
dataSource.clear();
ResultInfos<?> infos = dataSource.load(search, conditionalQueries, 0, getPageSize(), orderBy);
System.out.println("Found: " + infos.getObjects().size());
dataSource.load(search, conditionalQueries, 0, getPageSize(), orderBy);
}
}
......
......@@ -122,6 +122,8 @@ public class QuestionPoolServiceImpl implements QPoolService {
for(QuestionItemShort item:items) {
lifeIndexer.deleteDocument(QItemDocument.TYPE, item.getKey());
}
dbInstance.getCurrentEntityManager().flush();//allow reload of data
}
@Override
......@@ -173,6 +175,7 @@ public class QuestionPoolServiceImpl implements QPoolService {
return questionItemDao.loadById(key);
}
@Override
public QuestionItem updateItem(QuestionItem item) {
QuestionItem mergedItem = questionItemDao.merge(item);
dbInstance.commit();//
......@@ -192,6 +195,9 @@ public class QuestionPoolServiceImpl implements QPoolService {
}
copies.add(copy);
}
if(copies.size()> 0) {// reload of data must be possible in the same transaction
dbInstance.getCurrentEntityManager().flush();
}
return copies;
}
......@@ -262,6 +268,10 @@ public class QuestionPoolServiceImpl implements QPoolService {
@Override
public VFSLeaf getRootFile(QuestionItem item) {
QuestionItemImpl reloadedItem = questionItemDao.loadById(item.getKey());
if(reloadedItem == null) {
return null;
}
VFSContainer root = qpoolModule.getRootContainer();
VFSItem dir = root.resolve(reloadedItem.getDirectory());
if(dir instanceof VFSContainer) {
......
......@@ -95,7 +95,7 @@ public class QuestionItemDataModel extends DefaultFlexiTableDataSourceModel<Item
taxnonomyLevel("classification.taxonomy.level"),
difficulty("question.difficulty"),
type("question.assessmentType"),
type("question.type"),
format("technical.format"),
rating("rating"),
status("lifecycle.status"),
......
......@@ -66,6 +66,9 @@ import org.olat.repository.controllers.RepositoryAddController;
import org.olat.repository.controllers.RepositoryDetailsController;
/**
*
* This controller wrap the table of qitems and decorate it with
* features like copy, delete...<br/>
*
* Initial date: 22.01.2013<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
......
......@@ -49,6 +49,9 @@ import org.olat.modules.qpool.ui.events.QItemViewEvent;
import org.olat.modules.qpool.ui.events.QPoolEvent;
/**
*
* This controller build the GUI with the table of items,
* the preview and the short summary of metadatas.<br/>
*
* Initial date: 12.02.2013<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
......
......@@ -98,7 +98,7 @@ public class PoolsAdminController extends FormBasicController {
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
//add the table
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), true, "name"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, "name"));
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit-pool"));
......
......@@ -101,7 +101,7 @@ public class QEducationalContextsAdminController extends FormBasicController {
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
//add the table
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.level.i18nKey(), Cols.level.ordinal(), true, "level"));
FlexiCellRenderer renderer = new StaticFlexiCellRenderer("translate", new TextFlexiCellRenderer());
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(Cols.levelI18n.i18nKey(), Cols.levelI18n.ordinal(), "translate", renderer));
......
......@@ -101,7 +101,7 @@ public class QItemTypesAdminController extends FormBasicController {
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
//add the table
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.type.i18nKey(), Cols.type.ordinal(), true, "name"));
FlexiCellRenderer renderer = new StaticFlexiCellRenderer("translate", new TextFlexiCellRenderer());
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(Cols.typeI18n.i18nKey(), Cols.typeI18n.ordinal(), "translate", renderer));
......
......@@ -93,7 +93,7 @@ public class QLicensesAdminController extends FormBasicController {
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
//add the table
FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel();
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(false, Cols.id.i18nKey(), Cols.id.ordinal(), true, "key"));
columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.licenseKey.i18nKey(), Cols.licenseKey.ordinal(), true, "licenseKey"));
FlexiCellRenderer delRenderer = new BooleanCellRenderer(new StaticFlexiCellRenderer(translate("delete"), "delete-license"), null);
columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", Cols.deletable.ordinal(), "delete-license", delRenderer));
......
......@@ -82,7 +82,8 @@ public class EducationalMetadataEditController extends FormBasicController {
contextValues[count++] = translation;
}
contextEl = uifactory.addDropdownSingleselect("educational.context", "educational.context", formLayout, contextKeys, contextValues, null);
contextEl.setEnabled(count > 0);
String page = velocity_root + "/learning_time.html";
learningTimeContainer = FormLayoutContainer.createCustomFormLayout("learningTime", getTranslator(), page);
learningTimeContainer.setRootForm(mainForm);
......
......@@ -143,6 +143,31 @@ public class MetaUIFactory {
return allOk;
}
protected static boolean validateInteger(TextElement el, int min, int max, boolean enabled) {
boolean allOk = true;
el.clearError();
if(enabled) {
String val = el.getValue();
if(StringHelper.containsNonWhitespace(val)) {
try {
double value = Integer.parseInt(val);
if(min > value) {
el.setErrorKey("error.wrongFloat", null);
allOk = false;
} else if(max < value) {
el.setErrorKey("error.wrongFloat", null);
allOk = false;
}
} catch (NumberFormatException e) {
el.setErrorKey("error.wrongFloat", null);
allOk = false;
}
}
}
return allOk;
}
protected static boolean validateBigDecimal(TextElement el, double min, double max, boolean enabled) {
boolean allOk = true;
el.clearError();
......
......@@ -175,6 +175,7 @@ public class MetadatasController extends BasicController {
}
private void doEditEducationalMetadata(UserRequest ureq) {
removeAsListenerAndDispose(educationalEditCtrl);
educationalEditCtrl= new EducationalMetadataEditController(ureq, getWindowControl(), item);
listenTo(educationalEditCtrl);
mainVC.put("details_educational", educationalEditCtrl.getInitialComponent());
......@@ -187,6 +188,7 @@ public class MetadatasController extends BasicController {
}
private void doEditQuestionMetadata(UserRequest ureq) {
removeAsListenerAndDispose(questionEditCtrl);
questionEditCtrl= new QuestionMetadataEditController(ureq, getWindowControl(), item);
listenTo(questionEditCtrl);
mainVC.put("details_question", questionEditCtrl.getInitialComponent());
......
......@@ -25,6 +25,7 @@ import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toBigDecimal;
import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.toInt;
import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateBigDecimal;
import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateSelection;
import static org.olat.modules.qpool.ui.metadata.MetaUIFactory.validateInteger;
import java.math.BigDecimal;
......@@ -128,6 +129,7 @@ public class QuestionMetadataEditController extends FormBasicController {
allOk &= validateBigDecimal(difficultyEl, 0.0d, 1.0d, true);
allOk &= validateBigDecimal(stdevDifficultyEl, 0.0d, 1.0d, true);
allOk &= validateBigDecimal(differentiationEl, -1.0d, 1.0d, true);
allOk &= validateInteger(numAnswerAltEl, 0, Integer.MAX_VALUE, true);
allOk &= validateSelection(assessmentTypeEl, true);
return allOk && super.validateFormLogic(ureq);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment