$(function(){ // prevent IE8 and below from erroring on any console statements if (!window.console){ console = {log: function() {}} }; var version = "1.0"; $(document).ajaxSend(function(event, request, settings) { request.setRequestHeader("X-Version", version); if (settings.type == "POST") { request.setRequestHeader("X-Xsrftoken", getCookie("_xsrf")); request.setRequestHeader("Content-type", "application/json; charset=utf-8"); } }); var sessionTimedOut = ko.observable(false); var delayed_call = ko.observable(); $(document).ajaxError(function(event, xhr) { if (xhr.status == 401) { delayed_call(xhr); sessionTimedOut(true); } if (xhr.status == 403) { window.location.replace("/logout"); } }); $.ajaxPrefilter(function(options, originalOptions, jqXHR) { if (options.url != "/login") { jqXHR.__kb_opts = originalOptions; } }); function getCookie(name) { var r = document.cookie.match("\\b" + name + "=([^;]*)\\b"); return r ? r[1] : undefined; } /* * global settings * for date/time formating, reference: http://blog.stevenlevithan.com/archives/date-time-format */ var settings = { time_format: 'h:MMtt', duration_format: 'HH:MM', date_format: 'dd/mm/yyyy', datetime_format: 'dd/mm/yyyy h:MMtt', api_date_format: "yyyy-mm-dd", api_time_format: 'HH:MM' }; function shellViewModel() { var self = this; self.loading = ko.observable(false); self.message = ko.observable(); self.username = ko.observable(); self.password = ko.observable(); self.error = ko.observable(); self.retry = ko.observable(true); self.login = function() { if (!self.username() && !self.password()) { self.error("Please enter your account details"); return false; } if (!self.username()) { self.error("Please enter your username"); return false; } if (!self.password()) { self.error("Please enter your password"); return false; } self.error(""); self.loading(true); $.ajax({ type: "POST", url: "/login", data: ko.toJSON({ username: self.username(), password: self.password() }), success: function(response) { if (response.result) { window.location.replace("/"); } else { self.loading(false); self.password(undefined); self.retry(true); self.error("Login details incorrect"); } } }); }; } var shellModel = new shellViewModel(); ko.applyBindings(shellModel); });