# src/scripts/CDP/UI/listview/ListItemView.js

## Maintainability

74.42

## Lines of code

120

## Difficulty

34.07

## Estimated Errors

0.91

## Function weight

### By Complexity

### By SLOC

var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var CDP; (function (CDP) { var UI; (function (UI) { var TAG = "[CDP.UI.ListItemView] "; /** * @class ListItemView * @brief ListView が扱う ListItem コンテナクラス */ var ListItemView = /** @class */ (function (_super) { __extends(ListItemView, _super); /** * constructor */ function ListItemView(options) { var _this = _super.call(this, options) || this; _this._owner = null; _this._lineProfile = null; _this._owner = options.owner; if (options.$el) { var delegates = _this.events ? true : false; _this.setElement(options.$el, delegates); } _this._lineProfile = options.lineProfile; return _this; } /////////////////////////////////////////////////////////////////////// // Implements: ListItemView //! 描画: framework から呼び出されるため、オーバーライド必須 ListItemView.prototype.render = function () { console.warn(TAG + "need override 'render()' method."); return this; }; //! 自身の Line インデックスを取得 ListItemView.prototype.getIndex = function () { return this._lineProfile.index; }; //! 自身に指定された高さを取得 ListItemView.prototype.getSpecifiedHeight = function () { return this._lineProfile.height; }; //! child node が存在するか判定 ListItemView.prototype.hasChildNode = function () { if (!this.$el) { return false; } else { return 0 < this.$el.children().length; } }; /** * 高さを更新 * * @param newHeight {Number} [in] 新しい高さ * @param options {UpdateHeightOptions} [in] line の高さ更新時に影響するすべての LineProfile の再計算を行う場合は { reflectAll: true } * @return {ListItemView} インスタンス */ ListItemView.prototype.updateHeight = function (newHeight, options) { if (this.$el) { if (this.getSpecifiedHeight() !== newHeight) { this._lineProfile.updateHeight(newHeight, options); this.$el.height(newHeight); } } return this; }; /////////////////////////////////////////////////////////////////////// // Implements: IComposableView /** * すでに定義された Backbone.View を基底クラスに設定し、extend を実行する。 * * @param derives {Backbone.View|Backbone.View[]} [in] 合成元の View クラス * @param properties {Object} [in] prototype プロパティ * @param classProperties {Object} [in] static プロパティ * @return {Backbone.View|Backbone.View[]} 新規に生成された View のコンストラクタ */ ListItemView.compose = function (derives, properties, classProperties) { var composed = UI.composeViews(ListItemView, derives); return composed.extend(properties, classProperties); }; /////////////////////////////////////////////////////////////////////// // Override: Backbone.View //! 開放 ListItemView.prototype.remove = function () { // xperia AX Jelly Bean (4.1.2)にて、メモリーリークを軽減させる効果 this.$el.find("figure").css("background-image", "none"); // this.$el は再利用するため破棄しない this.$el.children().remove(); this.$el.off(); this.$el = null; this.stopListening(); this._lineProfile = null; return this; }; Object.defineProperty(ListItemView.prototype, "owner", { /////////////////////////////////////////////////////////////////////// // short cut methods //! Owner 取得 get: function () { return this._owner; }, enumerable: true, configurable: true }); return ListItemView; }(Backbone.View)); UI.ListItemView = ListItemView; })(UI = CDP.UI || (CDP.UI = {})); })(CDP || (CDP = {})); //# sourceMappingURL=data:application/json;base64,