|
if (SJL === undefined || typeof (SJL) !== 'object') { var SJL = new Object(); } |
|
|
|
SJL = function () { |
|
var self = {}; |
|
return{ |
|
onPageLoad: function () { |
|
SJL.ViewModel.applyViewModelBinding(); |
|
} |
|
} |
|
}(); |
|
|
|
SJL.ViewModel = function () { |
|
var self = {}; |
|
self.vmMain = { |
|
optCoverage: [], |
|
selectedCoverage: ko.observableArray() |
|
} |
|
self.loadAsync_optCoverage = function (isActive) { |
|
var dfd = new jQuery.Deferred(); |
|
try { |
|
SJL.Repository.get_optCoverage( |
|
function () { |
|
$('.ajaxLoader').show(); |
|
}, |
|
function (items) { |
|
var tmpArray = []; |
|
$.each(items, function (index, element) { |
|
tmpArray.push(new SJL.Model.optCoverage(element.id, element.title, element.active, element.order)); |
|
}); |
|
self.vmMain.optCoverage = tmpArray; // For non-observables. |
|
//self.vmMain.optCoverage(tmpArray); // For observables. |
|
dfd.resolve('Options: "Coverage" loaded.'); |
|
}, |
|
isActive |
|
); |
|
return dfd.promise(); |
|
} catch (ex) { |
|
alert('Error: loadAsync_optCoverage() ' + ex); |
|
return dfd.fail(); |
|
} |
|
} |
|
self.load_selectedCoverage = function () { |
|
var tmpArray = SJL.Repository.get_selectedCoverage(); |
|
self.vmMain.selectedCoverage(tmpArray); |
|
} |
|
return { |
|
applyViewModelBinding: function () { |
|
$('.ajaxLoader').show(); |
|
$.when(self.loadAsync_optCoverage(true)).done(function () { |
|
self.load_selectedCoverage(); |
|
ko.applyBindings(self.vmMain); |
|
$('.ajaxLoader').delay(250).fadeOut(250); |
|
}); |
|
//alert('The code has run.'); |
|
} |
|
} |
|
}(); |
|
|
|
SJL.Model = function () { |
|
return { |
|
optCoverage: function (id, title, active, order) { |
|
this.id = id; |
|
this.title = title; |
|
this.action = active; |
|
this.order = order; |
|
} |
|
} |
|
}(); |
|
|
|
SJL.Repository = function () { |
|
var self = {}; |
|
self.get_optCoverage = function (beforeComplete, onComplete, isActive) { |
|
// So let's pretend to get data from SharePoint... |
|
fakeWebServiceCall = function () { |
|
var itemsArray = []; |
|
if (isActive === true) { |
|
itemsArray.push(new SJL.Model.optCoverage(1, 'Ireland', true, 1)); |
|
itemsArray.push(new SJL.Model.optCoverage(2, 'New Zealand', true, 3)); |
|
itemsArray.push(new SJL.Model.optCoverage(3, 'Spain', true, 4)); |
|
itemsArray.push(new SJL.Model.optCoverage(4, 'Great Britain', true, 2)); |
|
} |
|
if (onComplete && typeof (onComplete) === 'function') { |
|
onComplete(itemsArray); |
|
} else { |
|
CC.Utilities.logWarning('get_optCoverage()', 'callback function has not been passed.'); |
|
} |
|
} |
|
if (beforeComplete && typeof (beforeComplete) === 'function') { |
|
beforeComplete(); |
|
} |
|
fakeWebServiceCall(); |
|
} |
|
self.get_selectedCoverage = function () { |
|
var itemsArray = []; |
|
// Normally I would use IDs and not text however this is to solve a specific business case... |
|
itemsArray.push('New Zealand'); |
|
itemsArray.push('Great Britain'); |
|
return itemsArray; |
|
} |
|
return { |
|
get_optCoverage: function (beforeComplete, onComplete, isActive) { |
|
return self.get_optCoverage(beforeComplete, onComplete, isActive); |
|
}, |
|
get_selectedCoverage: function () { |
|
return self.get_selectedCoverage(); |
|
} |
|
} |
|
}(); |
|
|
|
SJL.Utilises = function () { |
|
var self = {}; |
|
return { |
|
} |
|
}(); |
|
|
|
$(document).ready(function () { |
|
SJL.onPageLoad(); |
|
}); |