Hi,
I see a undo issue with the first selected task only when I am using a custom form for lightbox.
I am guessing this happens since when we have a custom form for lightbox …showLightbox
does not trigger the onLightbox event which in turn will store the initial task in stack. Could you pls. check the same.
Could you pls. help me with the issue I have put it as another forum question but have not yet got any response since last week.
Thanks in advance.
My code for custom form -
gantt.showLightbox = function(id) {
var task = gantt.getTask(id);
if (task.progress != 1) {
showAndPopulateCustomLightbox(id);
}
};
gantt.hideLightbox = function(){
var form = $(’.clsInlinePanel’);
clearInlineForm(form);
form.hide();
}
function showAndPopulateCustomLightbox(id){
var task = gantt.getTask(id),
row = $(“div.gantt_row[task_id=” + id + “]”),
offset = row.offset();
form = $(’.clsInlinePanel’);
populateFromRow(form, task);
form.show()
.offset({
top: offset.top + 40,
left: offset.left + 10
});
if (!form.prop('isInitialized')) {
Seq.Html.equalizeLabels(form);
form.prop('isInitialized', true);
}
}
function populateFromRow(form, task) {
setFieldFromTask('id', task.id, form, 1);
setFieldFromTask('name', task.text, form, 1);
setFieldFromTask('startDate', gantt.date.parseDate(task.start_date, "xml_date"), form, 2);
setFieldFromTask('endDate', gantt.date.parseDate(task.end_date, "xml_date"), form, 2);
setFieldFromTask('plannedStartDate', gantt.date.parseDate(task.planned_start, "xml_date"), form, 2);
setFieldFromTask('plannedEndDate', gantt.date.parseDate(task.planned_end, "xml_date"), form, 2);
setFieldFromTask('percentComplete', Seq.Format.formatNumber(task.progress * 100, 0), form, 1);
}
function setFieldFromTask(name, val, form, fieldType) {
var field = Seq.jq(name, false, form);
if (fieldType == 1) field.val(val);
else if (fieldType == 2) Seq.Field.setDatepickerValue(field, val, true);
else if (fieldType == 3) Seq.Field.setSelectBoxValue(field, val); // this is for MS status select when you implement it
}
function getFieldFromTask(name, form, fieldType) {
var field = Seq.jq(name, false, form);
if (fieldType == 1) return field.val();
else if (fieldType == 2) return Seq.Field.getDatepickerValue(field);
}
function clearInlineForm(form) {
form = form || $('.clsInlinePanel');
Seq.jq('name', false, form).val('');
Seq.Field.setSelectBoxIndex(Seq.jq('status', false, form), 0); // TODO implement MS selectbox in inline form
$('.seqDate', form).datepicker('setDate', null);
}
function updateRow(taskId, form) {
// TODO implement me
// read form control values and set them to cells and row hidden fields
//showDialog();
gantt.getTask(taskId).text = getFieldFromTask('name', form, 1);
gantt.getTask(taskId).start_date = getFieldFromTask('startDate', form, 2);
gantt.getTask(taskId).end_date = getFieldFromTask('endDate', form, 2);
gantt.getTask(taskId).planned_start = getFieldFromTask('plannedStartDate', form, 2);
gantt.getTask(taskId).planned_end = getFieldFromTask('plannedEndDate', form, 2);
gantt.getTask(taskId).progress = getFieldFromTask('percentComplete', form, 1)/100;
gantt.getTask(taskId).updated = true;
gantt.autoSchedule(taskId);
Seq.Page.setModified();
gantt.updateTask(taskId);
}
function applyInlineForm() {
updateRow(TASK_BEING_EDITED, form);
gantt.hideLightbox();
}
function cancelInlineForm() {
gantt.hideLightbox();
}
My html for form -
<ul class="items btnToolbar">
<li><a href="#" class="save_btn btn_glow" id="btnApply" onclick="applyInlineForm()">Apply</a></li>
<li><a href="#" class="save_btn" onclick="cancelInlineForm()">Cancel</a></li>
</ul>
</div>