/* * Copyright (c) 2012-2014 Kaarle Ritvanen * See LICENSE file for license details */ define(["acf2/dom", "jquery", "underscore"], function(dom, $, _) { return { extend: function(spec) { var res = Object.create(this); for (key in spec) res[key] = spec[key]; return res; }, new: function(data, name, meta, level, editable, removable) { return Object.create(this).init( data, name, meta, level, editable, removable ); }, init: function(data, name, meta, level, editable, removable) { this.data = data; this.name = name; this.meta = meta; this.level = level; var value = data.get(name); var status = data.status(name); if (!editable || !meta.editable) { var el = this.staticRender(value, meta); if (el) { dom.setStatus(el, status); return el; } } this.makeEl(); this.dynamic = meta.dynamic; var self = this; var request; function handleRequest(req) { request = req; req.done(function(value, meta) { if (req != request) return; self.render(value, meta); self.setStatus(status); }); } this.wrapped = this.wrap(); this.visible = true; if (removable) { var link = dom.href().click(function() { data.delete(name).done(function(txnValid) { $("#content").trigger("reload", [txnValid]); }) }).text("Delete"); this.wrapped = dom.makeRow(this.wrapped); if (this.wrapped.is("tr")) link = $("