//@ sourceURL=autonumber.js
/// <reference path="~/SharePointRoot/Template/Layouts/FlowForma/js/lib/handlebars/handlebars-v2.0.0.js" />
/// <reference path="~/SharePointRoot/Template/Layouts/FlowForma/js/lib/jquery/jquery-1.9.1.intellisense.js"/>
/// <reference path="~/SharePointRoot/Template/Layouts/FlowForma/js/FlowForma.js" />
/// <reference path="~/SharePointRoot/Template/Layouts/FlowForma/js/lib/kendo/kendo.all.js" />
$.extend(FlowForma.Questions.Widgets, {
autonumber: function(container, question, DisplayMode, step) {
var editModeInit = function() {
//#region Variable init
var autoNumberControl = $(container).find('input.autonumber');
//#endregion
//#region Loading values
var definition = $.parseJSON(question.Definition);
if (question.DisplayAnswer || question.InternalAnswer) {
autoNumberControl.val(question.DisplayAnswer);
} else {
question.InternalAnswer = "loading";
var clientContext = new SP.ClientContext(definition.List.WebUrl);
var list = clientContext.get_web().get_lists().getByTitle(definition.List.ListTitle);
var itemCreateInfo = new SP.ListItemCreationInformation();
var item = list.addItem(itemCreateInfo);
item.update();
var queryLoadSuccess = function() {
autoNumberControl.val(item.get_id());
question.InternalAnswer = null;
question.DisplayAnswer = String(item.get_id());
$(question).trigger(FlowForma.Events.Question.Updated, []);
};
var queryLoadFailed = function(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
};
clientContext.executeQueryAsync(queryLoadSuccess, queryLoadFailed);
}
if (!question.Enabled) {
autoNumberControl.prop('disabled', true);
}
//#endregion
//#region Event handlers
autoNumberControl.on('change', function(e) {
question.InternalAnswer = null;
question.DisplayAnswer = $(this).val();
$(question).trigger(FlowForma.Events.Question.Updated, []);
});
//On form validating
$(FlowForma.FormContext.Form).on(FlowForma.Events.Form.Validating, validatingHandler);
//On form saving
$(FlowForma.FormContext.Form).on(FlowForma.Events.Form.Saving, savingHandler);
//#endregion
//#region Functions
//#endregion
};
function savingHandler(e, args) {
if (question.PublishToFieldEnabled && question.PublishField) {
var subQuestion = $(container).data().role == 'subquestion';
args.properties.push({
field: question.PublishField,
value: question.DisplayAnswer,
repeating: subQuestion
});
}
};
function validatingHandler() {
var autoNumberControl = $(container).find('input.autonumber');
if (question.Enabled && question.Required && !autoNumberControl.val()) {
FlowForma.LogDebug("Question " + question.Id + " from step " + step.Title + " " + step.Id + " is invalid");
FlowForma.FormContext.Errors.push(new FlowForma.ErrorMessage(question.Title + " is required", step, question, container));
}
$(question).trigger(FlowForma.Events.Question.Validated);
}
this.destroy = function() {
$(FlowForma.FormContext.Form).unbind(FlowForma.Events.Form.Validating, validatingHandler);
$(FlowForma.FormContext.Form).unbind(FlowForma.Events.Form.Saving, savingHandler);
};
var displayModeInit = function() {};
var createModeInit = function() {
//#region Variable init
var definition = $.parseJSON(question.Definition);
var listPickerContainer = $(container).find('#listPicker');
var listPicker;
//#endregion
//#region Load values
if (definition) {
listItem = definition.List;
listPicker = FlowForma.Widgets.ExistingListPicker(listPickerContainer, definition.List, null);
//listControlChange();
} else {
listPicker = FlowForma.Widgets.ExistingListPicker(listPickerContainer, null, null);
}
//#endregion
//#region Event handlers
listPicker.OnCallBack(function(ListObject) {
listItem = ListObject;
//listControlChange();
var errorField = $('.listErrorMessage');
errorField.css('display', 'none');
});
//On Saving
$(question).on(FlowForma.Events.Question.Saving, function(e, args) {
var errorField;
if (!listItem) {
args.IsValid = false;
args.Errors.push('Please fill all fields');
errorField = $('.listErrorMessage');
errorField.css('display', 'block');
errorField.text('List is required');
}
if (args.IsValid) {
//question creating saving event args format { IsValid: true, Errors: [] };
var definition = {
List: listItem
};
question.Definition = JSON.stringify(definition);
}
});
//#endregion
//#region Functions
function isRepeatingTable(question) {
return (question.Type == 'repeatingtable');
}
//#endregion
};
//#region Initialization
if (DisplayMode == FlowForma.DisplayModes.EDIT) {
editModeInit();
}
if (DisplayMode == FlowForma.DisplayModes.CREATE) {
createModeInit();
}
if (DisplayMode == FlowForma.DisplayModes.DISPLAY) {
displayModeInit();
}
//#endregion
}
});