1function NotesVm() { 2 var self = this; 3 4 self.note = ko.observable(""); 5 self.count = ko.computed(function () { 6 var countNum = self.note().length; 7 return countNum + " / 500"; 8 }); 9 self.showAddMessage = ko.observable(false); 10 self.showAddNoteErrorMessage = ko.observable(false); 11 self.showNoteSaveCancelSection = ko.observable(false); 12 self.readyToSaveNewNote = ko.observable(true); 13 self.showEmptyNoteSection = ko.observable(false); 14 15 ko.bindingHandlers.limitCharacters = { 16 update: function (element, valueAccessor, allBindingsAccessor, self) { 17 element.value = element.value.substr(0, valueAccessor()); 18 allBindingsAccessor().value(element.value.substr(0, valueAccessor())); 19 } 20 }; 21 22 ko.bindingHandlers.slideVisible = { 23 update: function (element, valueAccessor) { 24 var value = valueAccessor(); 25 //do not use Toggle! 26 ko.unwrap(value) ? $(element).slideDown(1000) : $(element).slideUp(1000); 27 } 28 }; 29 30 ko.bindingHandlers.fadeVisible = { 31 update: function (element, valueAccessor) { 32 var value = valueAccessor(); 33 //do not use Toggle! 34 ko.unwrap(value) ? $(element).fadeIn(1000) : $(element).fadeOut(1000); 35 } 36 }; 37 38 self.addNoteClicked = function () { 39 self.showNoteSaveCancelSection(true); 40 }; 41 42 self.cancelNoteClicked = function () { 43 self.showNoteSaveCancelSection(false); 44 }; 45 46 self.showAddNoteError = function () { 47 self.showAddNoteErrorMessage(true); 48 self.showAddMessage(true); 49 }; 50 51 self.hideAddNoteError = function () { 52 self.showAddNoteErrorMessage(false); 53 self.showAddMessage(false); 54 }; 55 56 self.showEmptyNoteError = function () { 57 self.showAddNoteErrorMessage(true); 58 self.showEmptyNoteSection(true); 59 }; 60 61 self.hideEmptyNoteError = function () { 62 self.showAddNoteErrorMessage(false); 63 self.showEmptyNoteSection(false); 64 }; 65 66 self.clearNoteArea = function () { 67 self.note(""); 68 }; 69 70 self.saveNoteClicked = function () { 71 var options = {}; 72 var note = self.note(); 73 if (note === '' || note == null) { 74 self.showEmptyNoteError(); 75 self.showAddMessage(false); 76 } 77 else if (self.readyToSaveNewNote()) { 78 self.readyToSaveNewNote(false); 79 options.url = window.location.origin + "/Account/AddNote"; 80 options.data = { note: note }; 81 options.type = "POST"; 82 options.dataType = "html"; 83 options.success = function (result) { 84 var div = document.getElementById('notesViewPartial'); 85 ko.cleanNode(div); 86 $(div).html(result); 87 self.cancelNoteClicked(); 88 self.hideAddNoteError(); 89 self.showEmptyNoteSection(true); 90 self.readyToSaveNewNote(true); 91 self.clearNoteArea(); 92 }; 93 options.error = function (err) { 94 self.showAddNoteError(); 95 self.addNoteClicked(); 96 self.showEmptyNoteSection(false); 97 self.readyToSaveNewNote(true); 98 }; 99 options.complete = function (xhr) { 100 ShowAuthorizationFailedModal(xhr.status); 101 //dismiss alert after 6 seconds 102 setTimeout(function () { 103 $(".alert").fadeOut(1000); 104 }, 6000); 105 }; 106 $.ajax(options); 107 } 108 }; 109}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.