blob: b2af8e1f8b9bf1d38565955d9b9d1e9938484d68 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
define(['require', 'backgrid', 'asBreadcrumbs'], function(require) {
'use strict';
$.asBreadcrumbs.prototype.generateChildrenInfo = function() {
var self = this;
this.$children.each(function() {
var $this = $(this);
self.childrenInfo.push({
$this: $this,
outerWidth: $this.outerWidth(),
$content: $(self.options.dropdownContent($this))
});
});
if (this.options.overflow === "left") {
this.childrenInfo.reverse();
}
this.childrenLength = this.childrenInfo.length;
};
String.prototype.trunc = String.prototype.trunc ||
function(n) {
return (this.length > n) ? this.substr(0, n - 1) + '...' : this;
};
/*
* Overriding Cell for adding custom className to Cell i.e <td>
*/
var cellInit = Backgrid.Cell.prototype.initialize;
Backgrid.Cell.prototype.initialize = function() {
cellInit.apply(this, arguments);
var className = this.column.get('className');
var rowClassName = this.column.get('rowClassName');
if (rowClassName) this.$el.addClass(rowClassName);
if (className) this.$el.addClass(className);
}
/*
* Overriding Cell for adding custom width to Cell i.e <td>
*/
Backgrid.HeaderRow = Backgrid.HeaderRow.extend({
render: function() {
var that = this;
Backgrid.HeaderRow.__super__.render.apply(this, arguments);
_.each(this.columns.models, function(modelValue) {
if (modelValue.get('width')) that.$el.find('.' + modelValue.get('name')).css('width', modelValue.get('width') + '%')
if (modelValue.get('toolTip')) that.$el.find('.' + modelValue.get('name')).attr('title', modelValue.get('toolTip'))
});
return this;
}
});
/*
* HtmlCell renders any html code
* @class Backgrid.HtmlCell
* @extends Backgrid.Cell
*/
var HtmlCell = Backgrid.HtmlCell = Backgrid.Cell.extend({
/** @property */
className: "html-cell",
render: function() {
this.$el.empty();
var rawValue = this.model.get(this.column.get("name"));
var formattedValue = this.formatter.fromRaw(rawValue, this.model);
this.$el.append(formattedValue);
this.delegateEvents();
return this;
}
});
var UriCell = Backgrid.UriCell = Backgrid.Cell.extend({
className: "uri-cell",
title: null,
target: "_blank",
initialize: function(options) {
UriCell.__super__.initialize.apply(this, arguments);
this.title = options.title || this.title;
this.target = options.target || this.target;
},
render: function() {
this.$el.empty();
var rawValue = this.model.get(this.column.get("name"));
var href = _.isFunction(this.column.get("href")) ? this.column.get('href')(this.model) : this.column.get('href');
var klass = this.column.get("klass");
var formattedValue = this.formatter.fromRaw(rawValue, this.model);
this.$el.append($("<a>", {
tabIndex: -1,
href: href,
title: this.title || formattedValue,
'class': klass
}).text(formattedValue));
if (this.column.has("iconKlass")) {
var iconKlass = this.column.get("iconKlass");
var iconTitle = this.column.get("iconTitle");
this.$el.find('a').append('<i class="' + iconKlass + '" title="' + iconTitle + '"></i>');
}
this.delegateEvents();
return this;
}
});
});