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);
        };
示例#2
0
文件: markup.js 项目: vba/NBlast
		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);
        };
示例#5
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 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.";
  }
};
示例#6
0
 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;
 },
示例#7
0
        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);
        };
示例#8
0
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);
});
示例#9
0
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;
            }
        });
示例#11
0
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);
};
示例#12
0
    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();
    });
示例#13
0
  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);
};
示例#15
0
        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);
        };
示例#16
0
        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);
        };
示例#17
0
        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);
        };
示例#18
0
        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);
        };
示例#19
0
/**
 * 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();
}
示例#20
0
文件: notebook.js 项目: cloudera/hue
                  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
                    }
                  }
示例#21
0
    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;
    };
示例#22
0
        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));
        };
示例#23
0
 ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
   ko.cleanNode(html[0] || iframedoc);
 });
示例#24
0
function cleanTest () {
    ko.cleanNode(container[0]);
    container.remove();
}
示例#25
0
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);
 });
示例#27
0
  N.wire.on('navigate.exit:' + module.apiPath, function page_exit() {
    const ko = require('knockout');

    ko.cleanNode($('#content')[0]);
    view = null;
  });
示例#28
0
 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);
};