AuditBusVisitCtrl.prototype.Show = function () { var _this = this; var model = this.backboneModel; model.set("fromDate", helper.FormatDateString(Date.now())); model.set("toDate", helper.FormatDateString(Date.now())); this.compositeModel = model; this.collectionView.model = model; //var deferred = DAL.GetAllAuditBusVisit(null); //deferred.done(p=> this.AuditBusVisitCompleted(p)); this.app.MainRegion.show(this.collectionView); this.collectionView.listenTo(this.collectionView, "Event:AuditBusVisit", function (auditRequest) { return _this.GetAuditBusVisitDetial(auditRequest); }); var vm = kb.viewModel(this.compositeModel); var fromDate = $('#txtFromDate')[0]; ko.cleanNode(fromDate); ko.applyBindings(vm, fromDate); var toDate = $('#txtToDate')[0]; ko.cleanNode(toDate); ko.applyBindings(vm, toDate); };
applyBindings: function (viewModel, view) { var $ = config.jquery(), container = $(settings.getViewsContainer()); container.html(view); ko.cleanNode(container[0]); ko.applyBindings(viewModel, container[0]); }
var checkBadBrowserExtensions = function() { var id = 'checkbadbrowsersframe'; var origTpl = ko.bindingHandlers.bindIframe.tpl; ko.bindingHandlers.bindIframe.tpl = "<!DOCTYPE html>\r\n<html>\r\n<head><title>A</title>\r\n</head>\r\n<body><p style=\"color: blue\" align=\"right\" data-bind=\"style: { color: 'red' }\">B</p><div data-bind=\"text: content\"></div></body>\r\n</html>\r\n"; $('body').append('<iframe id="' + id + '" data-bind="bindIframe: $data"></iframe>'); var frameEl = global.document.getElementById(id); ko.applyBindings({ content: "dummy content" }, frameEl); // Obsolete method didn't work on IE11 when using "HTML5 doctype": // var docType = new XMLSerializer().serializeToString(global.document.doctype); var node = frameEl.contentWindow.document.doctype; var docType = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>'; var content = docType + "\n" + frameEl.contentWindow.document.documentElement.outerHTML; ko.cleanNode(frameEl); ko.removeNode(frameEl); ko.bindingHandlers.bindIframe.tpl = origTpl; var expected = "<!DOCTYPE html>\n<html><head><title>A</title>\n</head>\n<body><p align=\"right\" style=\"color: red;\" data-bind=\"style: { color: 'red' }\">B</p><div data-bind=\"text: content\">dummy content</div>\n\n</body></html>"; var expected2 = "<!DOCTYPE html>\n<html><head><title>A</title>\n</head>\n<body><p style=\"color: red;\" data-bind=\"style: { color: 'red' }\" align=\"right\">B</p><div data-bind=\"text: content\">dummy content</div>\n\n</body></html>"; var expected3 = "<!DOCTYPE html>\n<html><head><title>A</title>\n</head>\n<body><p style=\"color: red;\" align=\"right\" data-bind=\"style: { color: 'red' }\">B</p><div data-bind=\"text: content\">dummy content</div>\n\n</body></html>"; if (expected !== content && expected2 !== content && expected3 !== content) { console.info("BadBrowser.FrameContentCheck", content.length, expected.length, expected2.length, expected3.length, content == expected, content == expected2, content == expected3); console.info(content); throw "Unexpected frame content. Misbehaving browser: "+content.length+"/"+expected.length+"/"+expected2.length+"/"+expected3.length; } };
NearestCentreSetupCtrl.prototype.GetAllCompleted = function (nearestCentreSetup) { //app = application.Application.getInstance(); var _this = this; var lookupResponse = JSON.parse(localStorage.getItem('lookupResponse')); this.compositeModel.set("alkhidmatCentreList", lookupResponse.alkhidmatCentre); this.compositeModel.set("alkhidmatCentreSelected", ""); this.collection = new Backbone.Collection(nearestCentreSetup["nearestCentreList"]); this.collectionView = new views.NearestCentreSetupCollectionView({ collection: this.collection, model: this.compositeModel }); this.collectionView.on("itemview:ShowDetail", function (view) { return _this.GetByIdCompleted(view.model); }); this.collectionView.on("Event:SearchNearestCentre", function (centreId) { return _this.GetByCriteria(centreId, _this.allCollection); }); this.allCollection = new Backbone.Collection(nearestCentreSetup["nearestCentreList"]); this.app.MainRegion.show(this.collectionView); var currentView = this.collectionView.$el; var vm = kb.viewModel(this.compositeModel); var element = currentView.find('#ddlCentre')[0]; ko.cleanNode(element); ko.applyBindings(vm, element); };
var checkBadBrowserExtensions = function() { var id = 'checkbadbrowsersframe'; var origTpl = ko.bindingHandlers.bindIframe.tpl; ko.bindingHandlers.bindIframe.tpl = "<!DOCTYPE html>\r\n<html>\r\n<head><title>A</title>\r\n</head>\r\n<body><p align=\"right\" data-bind=\"attr: { align: 'left' }\">B</p><div data-bind=\"text: content\"></div></body>\r\n</html>\r\n"; $('body').append('<iframe id="' + id + '" data-bind="bindIframe: $data"></iframe>'); var frameEl = global.document.getElementById(id); ko.applyBindings({ content: "dummy content" }, frameEl); // Obsolete method didn't work on IE11 when using "HTML5 doctype": // var docType = new XMLSerializer().serializeToString(global.document.doctype); var node = frameEl.contentWindow.document.doctype; var docType = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>'; var content = docType + "\n" + frameEl.contentWindow.document.documentElement.outerHTML; ko.cleanNode(frameEl); ko.removeNode(frameEl); ko.bindingHandlers.bindIframe.tpl = origTpl; var expected = "<!DOCTYPE html>\n<html><head><title>A</title>\n</head>\n<body><p align=\"left\" data-bind=\"attr: { align: 'left' }\">B</p><div data-bind=\"text: content\">dummy content</div>\n\n</body></html>"; // Firefox changes the attributes order. var expected2 = "<!DOCTYPE html>\n<html><head><title>A</title>\n</head>\n<body><p data-bind=\"attr: { align: 'left' }\" align=\"left\">B</p><div data-bind=\"text: content\">dummy content</div>\n\n</body></html>"; if (expected !== content && expected2 !== content) { console.info("BadBrowser.FrameContentCheck", content.length, expected.length, expected2.length, content == expected, content == expected2); console.warn("Detected incompatible/misbehaving browser, probably introduced by a bad browser extension."); console.warn(content); throw "Detected misbehaving browser/extension: unexpected frame content."; } };
cloneNodes: function(nodesArray, shouldCleanNodes) { for (var i = 0, j = nodesArray.length, newNodesArray = []; i < j; i++) { var clonedNode = nodesArray[i].cloneNode(true); newNodesArray.push(shouldCleanNodes ? ko.cleanNode(clonedNode) : clonedNode); } return newNodesArray; },
RefundTypeCtrl.prototype.UIBinding = function (model) { model.set("isActive", model.get("isActive") ? "1" : "0"); this.refundTypeViewModel.bbModel = model; this.refundTypeViewModel.model = kb.viewModel(model); ko.cleanNode($(this.refundTypeView.el)[0]); ko.applyBindings(this.refundTypeViewModel, this.refundTypeView.el); };
N.wire.on('navigate.exit:admin.core.rebuild', function rebuild_forum_posts_widget_teardown() { if (!$(SELECTOR).length) return; view = null; ko.cleanNode($(SELECTOR)[0]); N.live.off('admin.core.rebuild.forum_posts', update_task_status); });
const hidePopover = function() { if (!preventHide) { const $contextPopover = $('#contextPopover'); if ($contextPopover.length > 0) { ko.cleanNode($contextPopover[0]); $contextPopover.remove(); $(document).off('click.context'); huePubSub.publish('context.popover.hidden'); } } };
$element.on('shown.bs.popover', function(event) { var popoverData = $(event.target).data(); var popoverEl = popoverData['bs.popover'].$tip; var options = popoverData['bs.popover'].options || {}; var button = $(event.target); var buttonPosition = button.position(); var buttonDimensions = { x: button.outerWidth(), y: button.outerHeight() }; ko.cleanNode(popoverEl[0]); if (data) { ko.applyBindings({template: template, data: data}, popoverEl[0]); } else { ko.applyBindings(viewModel, popoverEl[0]); } var popoverDimensions = { x: popoverEl.outerWidth(), y: popoverEl.outerHeight() }; popoverEl.find('button[data-dismiss="popover"]').click(function() { button.popover('hide'); }); switch (options.placement) { case 'right': popoverEl.css({ left: buttonDimensions.x + buttonPosition.left, top: (buttonDimensions.y / 2 + buttonPosition.top) - popoverDimensions.y / 2 }); break; case 'left': popoverEl.css({ left: buttonPosition.left - popoverDimensions.x, top: (buttonDimensions.y / 2 + buttonPosition.top) - popoverDimensions.y / 2 }); break; case 'top': popoverEl.css({ left: buttonPosition.left + (buttonDimensions.x / 2 - popoverDimensions.x / 2), top: buttonPosition.top - popoverDimensions.y }); break; case 'bottom': popoverEl.css({ left: buttonPosition.left + (buttonDimensions.x / 2 - popoverDimensions.x / 2), top: buttonPosition.top + buttonDimensions.y }); break; } });
InfoViewModel.prototype.applyBindings = function() { var div = document.querySelector("#content-wrapper"); var inner = div.querySelector('.inner'); if (inner) { ko.cleanNode(inner); inner.remove(); } div.innerHTML = infoHTML; inner = div.querySelector('.inner'); ko.applyBindings(this, inner); };
viewHelpers.beforeLeague(req).then(function () { var contentEl; ui.update({ container: "league_content", template: "error" }); contentEl = document.getElementById("league_content"); ko.cleanNode(contentEl); ko.applyBindings({error: req.params.error}, contentEl); ui.title("Error"); req.raw.cb(); });
viewModel.exportHTML = function() { var id = 'exportframe'; $('body').append('<iframe id="' + id + '" data-bind="bindIframe: $data"></iframe>'); var frameEl = global.document.getElementById(id); ko.applyBindings(viewModel, frameEl); ko.cleanNode(frameEl); if (viewModel.inline) viewModel.inline(frameEl.contentWindow.document); // Obsolete method didn't work on IE11 when using "HTML5 doctype": // var docType = new XMLSerializer().serializeToString(global.document.doctype); var node = frameEl.contentWindow.document.doctype; var docType = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>'; var content = docType + "\n" + frameEl.contentWindow.document.documentElement.outerHTML; ko.removeNode(frameEl); content = content.replace(/<script ([^>]* )?type="text\/html"[^>]*>[\s\S]*?<\/script>/gm, ''); // content = content.replace(/<!-- ko .*? -->/g, ''); // sometimes we have expressions like (<!-- ko var > 2 -->) content = content.replace(/<!-- ko ((?!--).)*? -->/g, ''); // this replaces the above with a more formal (but slower) solution content = content.replace(/<!-- \/ko -->/g, ''); // Remove data-bind/data-block attributes content = content.replace(/ data-bind="[^"]*"/gm, ''); // Remove trash leftover by TinyMCE content = content.replace(/ data-mce-(href|src)="[^"]*"/gm, ''); // Replace "replacedstyle" to "style" attributes (chrome puts replacedstyle after style) content = content.replace(/ style="[^"]*"([^>]*) replaced(style="[^"]*")/gm, '$1 $2'); // Replace "replacedstyle" to "style" attributes (ie/ff have reverse order) content = content.replace(/ replaced(style="[^"]*")([^>]*) style="[^"]*"/gm, ' $1$2'); content = content.replace(/ replaced(style="[^"]*")/gm, ' $1'); // same as style, but for http-equiv (some browser break it if we don't replace, but then we find it duplicated) content = content.replace(/ http-equiv="[^"]*"([^>]*) replaced(http-equiv="[^"]*")/gm, '$1 $2'); content = content.replace(/ replaced(http-equiv="[^"]*")([^>]*) http-equiv="[^"]*"/gm, ' $1$2'); content = content.replace(/ replaced(http-equiv="[^"]*")/gm, ' $1'); // We already replace style and http-equiv and we don't need this. // content = content.replace(/ replaced([^= ]*=)/gm, ' $1'); // Restore conditional comments content = conditional_restore(content); var trash = content.match(/ data-[^ =]+(="[^"]+")? /) || content.match(/ replaced([^= ]*=)/); if (trash) { console.warn("Output HTML contains unexpected data- attributes or replaced attributes", trash); } return content; };
var AuthorImport = function(data, $root) { var self = this; self.question = data; self.serializeContributors = function(data) { return $.map(data.contributors, function(c) { return c.fullname; }).join(', '); }; self.makeContributorsRequest = function() { var self = this; var contributorsUrl = window.contextVars.node.urls.api + 'get_contributors/'; return $.getJSON(contributorsUrl); }; self.getContributors = function() { var self = this; return self.makeContributorsRequest() .then(function(data) { return self.serializeContributors(data); }).fail(function() { $osf.growl('Could not retrieve contributors.', 'Please refresh the page or ' + 'contact <a href="mailto: support@cos.io">support@cos.io</a> if the ' + 'problem persists.'); }); }; self.getContributors().done(function(data) { self.question.value(data); }); self.preview = function() { return self.value(); }; var callback = function(data) { self.value(self.serializeContributors(data)); }; if ($('#addContributors').length > 0) { ko.cleanNode($('#addContributors')[0]); var adder = new ContribAdder( '#addContributors', node.title, node.id, null, null, {async: true, callback: callback} ); } $.extend(self, data); };
BusMilageCtrl.prototype.SimpleLoad = function () { var _this = this; var model = this.backboneModel; model.set("fromVisitDate", helper.FormatDateString(Date.now())); model.set("toVisitDate", helper.FormatDateString(Date.now())); this.compositeModel = model; this.collectionView.model = this.compositeModel; this.collectionView.listenTo(this.collectionView, "Event:BusMilage", function () { return _this.BusMilage(model); }); this.app.MainRegion.show(this.collectionView); var vm = kb.viewModel(this.compositeModel); var fromVisitDate = $('#txtFromVisitDate')[0]; ko.cleanNode(fromVisitDate); ko.applyBindings(vm, fromVisitDate); var toVisitDate = $('#txtToVisitDate')[0]; ko.cleanNode(toVisitDate); ko.applyBindings(vm, toVisitDate); };
DriverCtrl.prototype.UIBinding = function (model) { var lookupResponse = JSON.parse(localStorage.getItem('lookupResponse')); model.set("alkhidmatCentreList", lookupResponse.alkhidmatCentre); var centre = _.filter(lookupResponse.alkhidmatCentre, function (p) { return p.id == model.get("centreId"); }); model.set("alkhidmatCentreSelected", centre[0]); model.set("isActive", model.get("isActive") ? "1" : "0"); this.driverViewModel.bbModel = model; this.driverViewModel.model = kb.viewModel(model); ko.cleanNode($(this.driverView.el)[0]); ko.applyBindings(this.driverViewModel, this.driverView.el); };
LandmarkCtrl.prototype.UIBinding = function (model) { var lookupResponse = JSON.parse(localStorage.getItem('lookupResponse')); model.set("unionCouncilList", lookupResponse.unionCouncil); var unionCouncil = _.filter(lookupResponse.unionCouncil, function (p) { return p.id == model.get("ucId"); }); model.set("unionCouncilIdSelected", unionCouncil[0]); model.set("isActive", model.get("isActive") ? "1" : "0"); this.landmarkViewModel.bbModel = model; this.landmarkViewModel.model = kb.viewModel(model); ko.cleanNode($(this.landmarkView.el)[0]); ko.applyBindings(this.landmarkViewModel, this.landmarkView.el); };
BusVisitCtrl.prototype.SimpleLoad = function () { var _this = this; var lookupResponse = JSON.parse(localStorage.getItem('lookupResponse')); this.compositeModel.set("busList", lookupResponse.bus); this.compositeModel.set("busSelected", ""); this.app.MainRegion.show(this.currentLayout); this.searchView.model = this.compositeModel; this.searchView.on("Event:SearchVisit", function (busId) { _this.SearchVisit(busId); }); this.currentLayout.SearchRegion.show(this.searchView); var vm = kb.viewModel(this.compositeModel); var element = $('#ddlBuses')[0]; ko.cleanNode(element); ko.applyBindings(vm, element); };
/** * Display a whole-page error message to the user. * * @memberOf util.helpers * @param {Object} req Object with parameter "params" containing another object with a string representing the error message in the parameter "error". */ function globalError(req) { var contentEl, ui, viewHelpers; ui = require('../ui'); viewHelpers = require('./viewHelpers'); viewHelpers.beforeNonLeague(); ui.update({ container: "content", template: "error" }); contentEl = document.getElementById("content"); ko.cleanNode(contentEl); ko.applyBindings({error: req.params.error}, contentEl); ui.title("Error"); req.raw.cb(); }
callback: function(r) { $('#schedulerEditor').html(r); self.schedulerViewModel = new vm.CoordinatorEditorViewModel( data.coordinator, data.credentials, data.workflows, data.can_edit ); ko.cleanNode($('#schedulerEditor')[0]); ko.applyBindings(self.schedulerViewModel, $('#schedulerEditor')[0]); $(document).off('showSubmitPopup'); $(document).on('showSubmitPopup', (event, data) => { $('.submit-modal-editor').html(data); $('.submit-modal-editor').modal('show'); $('.submit-modal-editor').on('hidden', () => { huePubSub.publish('hide.datepicker'); }); const _sel = $('.submit-form .control-group[rel!="popover"]:visible'); if (_sel.length > 0) { $('.submit-modal-editor .modal-body').height( $('.submit-modal-editor .modal-body').height() + 60 ); } }); huePubSub.publish('render.jqcron'); self.schedulerViewModel.coordinator.properties.cron_advanced.valueHasMutated(); // Update jsCron enabled status self.schedulerViewModel.coordinator.tracker().markCurrentStateAsClean(); self.schedulerViewModel.isEditing(true); self.schedulerViewModelIsLoaded(true); if (_action == 'new') { self.schedulerViewModel.coordinator.properties.document(self.uuid()); // Expected for triggering the display } }
viewModel.exportHTML = function () { var id = 'exportframe'; $('body').append('<iframe id="' + id + '" data-bind="bindIframe: $data"></iframe>'); var frameEl = global.document.getElementById(id); ko.applyBindings(viewModel, frameEl); // Obsolete method didn't work on IE11 when using "HTML5 doctype": // var docType = new XMLSerializer().serializeToString(global.document.doctype); var node = frameEl.contentWindow.document.doctype; var docType = "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>'; var content = docType + "\n" + frameEl.contentWindow.document.documentElement.outerHTML; ko.cleanNode(frameEl); ko.removeNode(frameEl); content = content.replace(/<script ([^>]* )?type="text\/html"[^>]*>[\s\S]*?<\/script>/gm, ''); content = content.replace(/<!-- ko [^>]* -->/g, ''); content = content.replace(/<!-- \/ko -->/g, ''); // Remove data-bind/data-block attributes content = content.replace(/ data-bind="[^"]*"/gm, ''); // Remove trash leftover by TinyMCE content = content.replace(/ data-mce-(href|src)="[^"]*"/gm, ''); // Replace "replacedstyle" to "style" attributes (chrome puts replacedstyle after style) content = content.replace(/ style="[^"]*"([^>]*) replaced(style="[^"]*")/gm, '$1 $2'); // Replace "replacedstyle" to "style" attributes (ie/ff have reverse order) content = content.replace(/ replaced(style="[^"]*")([^>]*) style="[^"]*"/gm, ' $1$2'); // Replace replacedhttp-equiv and other "replaced" attributes (TODO: maybe too broad!) content = content.replace(/ replaced([^= ]*=)/gm, ' $1'); // Restore conditional comments content = conditional_restore(content); var trash = content.match(/ data-[^ =]+(="[^"]+")? /); if (trash) { console.warn("Output HTML contains unexpected data- attributes...", trash); } return content; };
BusCtrl.prototype.UIBinding = function (model) { var lookupResponse = JSON.parse(localStorage.getItem('lookupResponse')); model.set("alkhidmatCentreList", lookupResponse.alkhidmatCentre); var centre = _.filter(lookupResponse.alkhidmatCentre, function (p) { return p.id == model.get("centreId"); }); model.set("alkhidmatCentreSelected", centre[0]); model.set("busModelList", lookupResponse.busModel); var modelNo = _.filter(lookupResponse.busModel, function (p) { return p.id == model.get("modelNo"); }); model.set("busModelSelected", modelNo[0]); model.set("isActive", model.get("isActive") ? "1" : "0"); this.busViewModel.bbModel = model; this.busViewModel.model = kb.viewModel(model); ko.cleanNode($(this.busView.el)[0]); ko.applyBindings(this.busViewModel, this.busView.el); //this.busView = new views.BusView({ viewModel: this.busViewModel }); //this.busView.on("SaveBus", () => this.Save(this.busViewModel.bbModel)); };
ko.utils.domNodeDisposal.addDisposeCallback(element, function() { ko.cleanNode(html[0] || iframedoc); });
function cleanTest () { ko.cleanNode(container[0]); container.remove(); }
LogFeed.prototype.init = function() { var self = this; self.$progBar.hide(); ko.cleanNode(self.$element[0]); $osf.applyBindings(self.viewModel, self.selector); };
$ui.each(function (index, element) { ko.cleanNode(element); });
N.wire.on('navigate.exit:' + module.apiPath, function page_exit() { const ko = require('knockout'); ko.cleanNode($('#content')[0]); view = null; });
N.wire.on('navigate.exit:' + module.apiPath, function page_exit() { ko.cleanNode($('#content')[0]); view = null; });
KnockoutCustomAttribute.prototype.unbind = function () { ko.cleanNode(this.element); };
var AuthorImport = function(data, $root, preview) { var self = this; self.question = data; /** * Makes ajax request for a project's contributors */ self.makeContributorsRequest = function() { var contributorsUrl = window.contextVars.node.urls.api + 'get_contributors/'; return $.getJSON(contributorsUrl); }; /** * Returns the `user_fullname` of each contributor attached to a node. **/ self.getContributors = function() { return self.makeContributorsRequest() .fail(function(xhr, status, error) { Raven.captureMessage('Could not GET contributors', { extra: { url: window.contextVars.node.urls.api + 'get_contributors/', textStatus: status, error: error } }); $osf.growl('Could not retrieve contributors.', osfLanguage.REFRESH_OR_SUPPORT); }); }; self.serializeContributors = function(contributors) { return $.map(contributors, function(c) { return c.fullname; }).join(', '); }; self.makeContributorsRequest = function() { var self = this; var contributorsUrl = window.contextVars.node.urls.api + 'get_contributors/'; return $.getJSON(contributorsUrl); }; self.contributors = ko.observable([]); if (!preview) { self.getContributors().done(function(data) { self.question.value(self.serializeContributors(data.contributors)); }); } self.preview = function() { return $osf.htmlEscape(self.value()); }; var callback = function(data) { self.question.value(self.serializeContributors(data.contributors)); }; if ($('#addContributors').length > 0) { ko.cleanNode($('#addContributors')[0]); var adder = new ContribAdder( '#addContributors', node.title, node.id, null, null, {async: true, callback: callback} ); } $.extend(self, data); };