//= require ./locmare/filer/body/file_body/file_item/edit/account
//= require ./locmare/filer/body/file_body/file_item/edit/template
//= require ./locmare/filer/pager
+//= require ./locmare/profiler
+//= require ./locmare/profiler/header
+//= require ./locmare/profiler/column
+//= require ./locmare/profiler/column/base
+//= require ./locmare/profiler/column/default
+//= require ./locmare/profiler/column/date
+//= require ./locmare/profiler/column/source
+//= require ./locmare/profiler/column/extend
+//= require ./locmare/profiler/column/extend/extend_column
+//= require ./locmare/profiler/column/json
+//= require ./locmare/profiler/association
+//= require ./locmare/profiler/association/belongs_to
+//= require ./locmare/profiler/association/has_many
+//= require ./locmare/profiler/association/has_one
//= require ./peta/peta
//= require ./peta/item
//= require ./peta/owner
n = @name.split '.'\r
if n.length > 1\r
@table_name = n[0]\r
- @model_name = @table_name.singularize\r
+ @item_name = Manifest.manifest().controllers[@table_name].item_name\r
+ @model_name = @item_name\r
@list_name = n[1]\r
else\r
- ManifestBase::alert_undefined_message 'list', this.module_message\r
-\r
- list: () ->\r
- Locmare::ListGroup.list @model_name, @list_name\r
+ ManifestBase.alert_undefined_message 'list', this.module_message\r
+ \r
+ list_options: (id) ->\r
+ params = {controller: @table_name, action: @list_name, id: id, page: 1, page_size: 3}\r
+ {model: @model(), params: params}\r
\r
model: () ->\r
Manifest.item_name_to_model @model_name\r
@model_name = n[0]\r
@list_name = n[1]\r
else\r
- ManifestBase::alert_undefined_message 'list', self.module_message\r
+ ManifestBase.alert_undefined_message 'list', @module_message\r
\r
- list: () ->\r
- Locmare::ListGroup.list @model_name, @list_name\r
+ list_options: (id) ->\r
+ params = {controller: @model().table_name(), action: @list_name, id: id, page: 1, page_size: 3}\r
+ {model: @model(), params: params}\r
\r
model: () ->\r
Manifest.item_name_to_model @model_name\r
class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base extends Backbone.View\r
tagName: 'div'\r
+ events: {\r
+ 'click .face': 'show'\r
+ }\r
\r
initialize: (options) ->\r
@file_item = options.file_item\r
this.$el.html(template(args))\r
this\r
\r
+ show: () ->\r
+ item = new Pettanr.Artist({id: 1})\r
+ item.fetch().done ->\r
+ profiler = new Locmare.Profiler({item_name: item.item_name(), item: item, operators: window.operators})\r
+ \r
filer: () ->\r
@file_item.filer()\r
\r
--- /dev/null
+class Locmare.Profiler extends Backbone.View\r
+ tagName: 'div'\r
+ initialize: (options) ->\r
+ @item_name = options.item_name\r
+ @item = options.item\r
+ # feasible show parsed extend data\r
+ @item.boosts 'post'\r
+ @operators = options.operators\r
+ \r
+ @profiler_manifest = LocalManifest.manifest().profilers[@item_name]\r
+ @template_dir = 'templates-profiler-'\r
+ @header = new Locmare.ProfilerModule.Header({profiler: this})\r
+ @columns = new Locmare.ProfilerModule.Column({profiler: this})\r
+ @associations = new Locmare.ProfilerModule.Association({'profiler': this, association_manifest: @profiler_manifest.associations})\r
+ @render()\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@header.render().el)\r
+ this.$el.append(@columns.render().el)\r
+ this.$el.append(@associations.render().el)\r
+ $("#pettanr").html(this.el)\r
+ this\r
+ \r
+ peta: () ->\r
+ Manifest.manifest().items[@item_name]\r
+ \r
+ model: () ->\r
+ Manifest.item_name_to_model @item_name\r
+ \r
+ image_dir: () ->\r
+ '/images/'\r
+ \r
+class Locmare.ProfilerModule\r
+\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.Association extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @profiler = options.profiler\r
+ @association_manifest = options.association_manifest\r
+ @belongs_to = _.map @association_manifest.belongs_to, (belongs_to_manifest) =>\r
+ new Locmare.ProfilerModule.AssociationModule.BelongsTo({association: this, belongs_to_manifest: belongs_to_manifest})\r
+ @has_many = _.map @association_manifest.has_many, (list_manifest) =>\r
+ new Locmare.ProfilerModule.AssociationModule.HasMany({association: this, has_many_manifest: list_manifest})\r
+ @has_one = _.map @association_manifest.has_one, (list_manifest) =>\r
+ new Locmare.ProfilerModule.AssociationModule.HasOne({association: this, has_one_manifest: list_manifestt})\r
+ @render\r
+ \r
+ render: () ->\r
+ _this = this\r
+ _.each @belongs_to, (f) ->\r
+ #_this.$el.append(f.render().el)\r
+ _.each @has_many, (f) ->\r
+ #_this.$el.append(f.render().el)\r
+ _.each @has_one, (f) ->\r
+ #_this.$el.append(f.render().el)\r
+ this\r
+ \r
+ item: () ->\r
+ @profiler.item\r
+ \r
+ model_manifest: () ->\r
+ Manifest.manifest().models[@profiler.item_name]\r
+ \r
+class Locmare.ProfilerModule.AssociationModule\r
+\r
--- /dev/null
+class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @association = options.association\r
+ @belongs_to_manifest = options.belongs_to_manifest\r
+ @filer = null\r
+ m = new @parent_model({id: @parent_id()})\r
+ _this = this\r
+ m.fetch().done ->\r
+ _this.filer = new Locmare.Filer(@parent_model.item_name, r, null, @profiler().operators)\r
+ _this.render()\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ if @filer\r
+ this.$el.html(@filer.render().el)\r
+ this\r
+ \r
+ item: () ->\r
+ @profiler.item\r
+ \r
+ parent_model: () ->\r
+ @belongs_to_manifest.model()\r
+ \r
+ parent_id: () ->\r
+ @item().get(@model_belongs_to_manifest().id_column)\r
+ \r
+ model_manifest: () ->\r
+ Manifest.manifest().models[@profiler.item_name]\r
+ \r
+ model_belongs_to_manifest: () ->\r
+ @model_manifest().associations.belongs_to[@belongs_to_manifest.model_name]\r
+ \r
+ profiler: () ->\r
+ @association.profiler()\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @association = options.association\r
+ @has_many_manifest = options.has_many_manifest\r
+ @filer = null\r
+ m = new Pettanr.FilerCollection({}, @has_many_manifest.list_options(@item().get('id')))\r
+ _this = this\r
+ m.fetch().done ->\r
+ items = m.models\r
+ #_this.filer = new Locmare.Filer(_this.has_many_model().item_name, items, @pager, _this.profiler().operators)\r
+ _this.render()\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ if @filer\r
+ this.$el.html(@filer.render().el)\r
+ this\r
+ \r
+ item: () ->\r
+ @profiler().item\r
+ \r
+ has_many_model: () ->\r
+ @has_many_manifest.model()\r
+ \r
+ profiler: () ->\r
+ @association.profiler\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @association = options.association\r
+ @has_one_manifest = options.has_one_manifest\r
+ @filer = null\r
+ m = new @parent_model(@parent_id())\r
+ m = new Pettanr.FilerCollection({}, @has_one_manifest.list_options(@item().get('id')))\r
+ _this = this\r
+ m.fetch().done ->\r
+ items = m.models\r
+ _this.filer = new Locmare.Filer(_this.has_one_model().item_name, items, null, _this.profiler().operators)\r
+ _this.render()\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ if @filer\r
+ this.$el.html(@filer.render().el)\r
+ this\r
+ \r
+ item: () ->\r
+ @profiler().item\r
+ \r
+ has_one_model: () ->\r
+ @has_one_manifest.model()\r
+ \r
+ profiler: () ->\r
+ @association.profiler\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.Column extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'columns'\r
+ \r
+ initialize: (options) ->\r
+ @profiler = options.profiler\r
+ @profiler_manifest = @profiler.profiler_manifest\r
+ @columns = {}\r
+ _this = this\r
+ _.each @profiler_manifest.columns, (column, name) ->\r
+ _this.columns[name] = _this.factory(_this.profiler, column)\r
+ \r
+ render: () ->\r
+ _this = this\r
+ this.$el.html('')\r
+ _.each @sorted_columns(), (column) ->\r
+ _this.$el.append(column.render().el)\r
+ this\r
+ \r
+ types: () ->\r
+ {\r
+ default: Locmare.ProfilerModule.ColumnModule.Default, \r
+ date: Locmare.ProfilerModule.ColumnModule.Date, \r
+ source: Locmare.ProfilerModule.ColumnModule.Source, \r
+ extend: Locmare.ProfilerModule.ColumnModule.Extend, \r
+ json: Locmare.ProfilerModule.ColumnModule.Json\r
+ }\r
+ \r
+ factory: (profiler, my_manifest) ->\r
+ type = my_manifest.type\r
+ console.log("undefined type for local view filers > #{profiler.item_name} > edit\n") if not type\r
+ my_class = @types()[type]\r
+ console.log("undefined class for local view filers > #{profiler.item_name} > edit > #{type}\n") if not my_class\r
+ new my_class({profiler: profiler, column_manifest: my_manifest})\r
+ \r
+ sorted_columns: () ->\r
+ _.map @profiler_manifest.column_names, (column_name) =>\r
+ _this.columns[column_name]\r
+ \r
+class Locmare.ProfilerModule.ColumnModule\r
+\r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Base extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'column'\r
+ \r
+ initialize: (options) ->\r
+ @profiler = options.profiler\r
+ @column_manifest = options.column_manifest\r
+ @column_name = @column_manifest.name\r
+ c = @label_class()\r
+ @label = new c({column: this})\r
+ c = @value_class()\r
+ @value = new c({column: this})\r
+ c = @note_class()\r
+ @note = new c({column: this})\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@label.render().el)\r
+ this.$el.append(@value.render().el)\r
+ this.$el.append(@note.render().el) if @note.is_visible()\r
+ this\r
+ \r
+ item: () ->\r
+ @profiler.item\r
+ \r
+ label_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.Label\r
+ \r
+ value_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.Value\r
+ \r
+ note_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.NoteNone\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.Label extends Backbone.View\r
+ tagName: 'span'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ \r
+ render: () ->\r
+ this.$el.html(@label())\r
+ this\r
+ \r
+ label: () ->\r
+ Pettanr.AppHelper.t_a(@column.item().item_name(), @column.column_name)\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.Value extends Backbone.View\r
+ tagName: 'span'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ \r
+ render: () ->\r
+ this.$el.html(@value())\r
+ this\r
+ \r
+ value: () ->\r
+ @column.item().get(@column.column_name)\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.DateValue extends Backbone.View\r
+ tagName: 'span'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ \r
+ render: () ->\r
+ this.$el.html(@value())\r
+ this\r
+ \r
+ value: () ->\r
+ l(@column.value())\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.JsonValue extends Backbone.View\r
+ tagName: 'pre'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ \r
+ render: () ->\r
+ this.$el.html(@value())\r
+ this\r
+ \r
+ value: () ->\r
+ JSON.pretty_generate(JSON.parse(@column.value()))\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.ExtendValue extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ @columns = {}\r
+ _this = this\r
+ _.each @extend_settings().column_names, (extend_column_name) ->\r
+ extend_column_manifest = _this.extend_settings().columns[extend_column_name] || {}\r
+ _this.columns[extend_column_name] = new Locmare.ProfilerModule.ColumnModule.ExtendModule.ExtendColumn({column: _this, extend_column_name: extend_column_name, extend_column_manifest: extend_column_manifest})\r
+ \r
+ render: () ->\r
+ _this = this\r
+ this.$el.html('')\r
+ _.each @sorted_columns(), (extend_column) ->\r
+ _this.$el.append(extend_column.render().el)\r
+ this\r
+ \r
+ \r
+ extend_columns: () ->\r
+ _.map @extend_settings().column_names, (column_name) ->\r
+ @columns[column_name]\r
+ \r
+ extend_settings: () ->\r
+ @template_model_profiler().extend_settings[self.booster.model_name]\r
+ \r
+ template_model_profiler: () ->\r
+ LocalManifest.manifest.profilers[@template_model().item_name]\r
+ \r
+ template_model: () ->\r
+ @booster().template_model\r
+ \r
+ extend_item: () ->\r
+ @booster.extend_item\r
+ \r
+ booster: () ->\r
+ @column.item().boosters[@column_manifest.boost_name]\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.NoteNone\r
+ \r
+ is_visible:() ->\r
+ false\r
+ \r
+class Locmare.ProfilerModule.ColumnModule.Note extends Backbone.View\r
+ tagName: 'span'\r
+ \r
+ initialize: (options) ->\r
+ @column = options.column\r
+ \r
+ render: () ->\r
+ this.$el.html(@note())\r
+ this\r
+ \r
+ note: () ->\r
+ Pettanr.AppHelper.t_selected_item(@select_item_name, @column.value())\r
+ \r
+ is_visible:() ->\r
+ true\r
+ \r
+ select_item_name: () ->\r
+ @model_attribute_source_manifest().select_item_name\r
+ \r
+ model_manifest: () ->\r
+ Manifest.manifest().models[@column.profiler().item_name]\r
+ \r
+ model_attribute_manifest: () ->\r
+ @model_manifest().attributes[@column.column_name]\r
+ \r
+ model_attribute_source_manifest: () ->\r
+ @model_attribute_manifest().source\r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Date extends Locmare.ProfilerModule.ColumnModule.Base\r
+ \r
+ value_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.DateValue\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Default extends Locmare.ProfilerModule.ColumnModule.Base\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Extend extends Locmare.ProfilerModule.ColumnModule.Base\r
+ \r
+ value_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.ExtendValue\r
+\r
+class Locmare.ProfilerModule.ColumnModule.ExtendModule\r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.ExtendModule.ExtendColumn extends Backbone.View\r
+ initialize: (options) ->\r
+ @column = options.column # extend_column\r
+ @extend_column_name = options.extend_column_name\r
+ @extend_column_manifest = options.extend_column_manifest\r
+ \r
+ label: () ->\r
+ Pettanr.AppHelper.t_a(@extend_item().singular(), @extend_column_name)\r
+ \r
+ value: () ->\r
+ @extend_item.get(@extend_column_name)\r
+ \r
+ extend_item: () ->\r
+ @column.extend_item()\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Json extends Locmare.ProfilerModule.ColumnModule.Base\r
+ \r
+ value_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.JsonValue\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.ColumnModule.Source extends Locmare.ProfilerModule.ColumnModule.Base\r
+ \r
+ note_class: () ->\r
+ Locmare.ProfilerModule.ColumnModule.Note\r
+ \r
--- /dev/null
+class Locmare.ProfilerModule.Header extends Backbone.View\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ @profiler = options.profiler\r
+ \r
+ render: () ->\r
+ #this.$el.append(@filer().render().el)\r
+ this\r
+ \r
+ filer: () ->\r
+ new Locmare.Filer(@profiler.item_name, [@profiler.item], null, @profiler.operators)\r
+ \r
artist.fetch({})\r
window.operators = new Pettanr.Operator([author, artist])\r
\r
- list_result = new Pettanr.Folder.Root({})\r
- new Pettanr.FilerRender('folder', list_result, 'default', window.operators)\r
+ #list_result = new Pettanr.Folder.Root({})\r
+ #new Pettanr.FilerRender('folder', list_result, 'default', window.operators)\r
window.router = new Pettanr.Router()\r
Backbone.history.start({pushState: true})\r
+ window.router.navigate('folders/root', true)\r
\r
test_router: () ->\r
window.router.navigate('folders/98', true)\r
class Pettanr.ResourcePicture extends Peta.Content\r
+ url: '/resource_pictures/'\r
+ \r
@singular: () ->\r
'ResourcePicture'\r
\r
\r
class Pettanr.ResourcePicture.Collection extends Backbone.Collection\r
model: Pettanr.ResourcePicture\r
- url: '/resource_pictures'\r
+ url: '/resource_pictures/'\r
class Pettanr.Scroll extends Peta.Binder\r
- url: ''\r
+ url: '/scrolls/'\r
\r
@singular: () ->\r
'Scroll'\r
\r
#InstanceMethods\r
\r
+ singular: () ->\r
+ Pettanr[@constructor.name].singular()\r
+ \r
+ plural: () ->\r
+ Pettanr[@constructor.name].plural()\r
+ \r
item_name: () ->\r
@my_class().item_name()\r
\r
class Pettanr\r
+ # Foo.class -> Pettanr[@constructor.name]\r
+\r
@is_blank: (str) ->\r
!str?.trim()\r
\r
if l.length == 1\r
I18n.t('activerecord.models.' + Pettanr[label].item_name())\r
else\r
- I18n.t('activerecord.models.attribtes.' + Pettanr[l.first].item_name() + '.' + l.last)\r
+ Pettanr.AppHelper.t_a(Pettanr[l.first].item_name(), l.last)\r
\r
+ @t_a: (item_name, attr_name) ->\r
+ I18n.t('activerecord.attributes.' + item_name + '.' + attr_name)\r
+ \r
@t_select_items: (items) ->\r
_.map items, (i) ->\r
[t(i[0]), i[1]]\r
'?' + q.join('&')\r
else\r
''\r
- @url = '/' + params['controller'] + i + a + qry\r
- @total = new Pettanr.CounterModel({}, {url: '/' + params['controller'] + i + 'count_' + a})\r
+ @url = '/' + params['controller'] + '/' + i + a + qry\r
+ @total = new Pettanr.CounterModel({}, {url: '/' + params['controller'] + '/' + i + 'count_' + a})\r
@model = options['model']\r
\r
class Pettanr.AppController\r
def show_prof_format format
format.prof {
self.formats = [:html]
- @profiler = Locmare::Profiler.new @my_model.model_name, @item, @operators
+ @profiler = Locmare::Profiler.new @my_model.item_name, @item, @operators
render @profiler.template_name, :locals => {
:profiler => @profiler
}