From a4838064801c37fddc101f493c654cf0b2c78db4 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Fri, 29 Aug 2014 16:36:44 +0900 Subject: [PATCH] add profiler --- app/assets/javascripts/ap.js | 14 ++ .../profiler/association/has_many.js.coffee | 12 +- .../profiler/association/has_one.js.coffee | 7 +- .../body/file_body/file_item/icon/base.js.coffee | 8 ++ app/assets/javascripts/locmare/profiler.js.coffee | 36 +++++ .../locmare/profiler/association.js.coffee | 32 +++++ .../profiler/association/belongs_to.js.coffee | 37 +++++ .../profiler/association/has_many.js.coffee | 29 ++++ .../locmare/profiler/association/has_one.js.coffee | 30 ++++ .../javascripts/locmare/profiler/column.js.coffee | 41 ++++++ .../locmare/profiler/column/base.js.coffee | 156 +++++++++++++++++++++ .../locmare/profiler/column/date.js.coffee | 5 + .../locmare/profiler/column/default.js.coffee | 2 + .../locmare/profiler/column/extend.js.coffee | 6 + .../profiler/column/extend/extend_column.js.coffee | 15 ++ .../locmare/profiler/column/json.js.coffee | 5 + .../locmare/profiler/column/source.js.coffee | 5 + .../javascripts/locmare/profiler/header.js.coffee | 13 ++ app/assets/javascripts/main.js.coffee | 5 +- .../javascripts/models/resource_picture.js.coffee | 4 +- app/assets/javascripts/models/scroll.js.coffee | 2 +- app/assets/javascripts/peta/item.js.coffee | 6 + app/assets/javascripts/pettanr.js.coffee | 11 +- app/controllers/application_controller.rb | 2 +- 24 files changed, 467 insertions(+), 16 deletions(-) create mode 100644 app/assets/javascripts/locmare/profiler.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/association.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/association/has_many.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/association/has_one.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/base.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/date.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/default.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/extend.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/extend/extend_column.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/json.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/column/source.js.coffee create mode 100644 app/assets/javascripts/locmare/profiler/header.js.coffee diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/ap.js index 905c87ce..b510fc20 100644 --- a/app/assets/javascripts/ap.js +++ b/app/assets/javascripts/ap.js @@ -210,6 +210,20 @@ //= 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 diff --git a/app/assets/javascripts/local_manifest/profiler/association/has_many.js.coffee b/app/assets/javascripts/local_manifest/profiler/association/has_many.js.coffee index 2f1c7bba..feab10d2 100644 --- a/app/assets/javascripts/local_manifest/profiler/association/has_many.js.coffee +++ b/app/assets/javascripts/local_manifest/profiler/association/has_many.js.coffee @@ -12,13 +12,15 @@ class LocalManifest.ProfilerModule.AssociationModule.HasMany extends ManifestBas n = @name.split '.' if n.length > 1 @table_name = n[0] - @model_name = @table_name.singularize + @item_name = Manifest.manifest().controllers[@table_name].item_name + @model_name = @item_name @list_name = n[1] else - ManifestBase::alert_undefined_message 'list', this.module_message - - list: () -> - Locmare::ListGroup.list @model_name, @list_name + ManifestBase.alert_undefined_message 'list', this.module_message + + list_options: (id) -> + params = {controller: @table_name, action: @list_name, id: id, page: 1, page_size: 3} + {model: @model(), params: params} model: () -> Manifest.item_name_to_model @model_name diff --git a/app/assets/javascripts/local_manifest/profiler/association/has_one.js.coffee b/app/assets/javascripts/local_manifest/profiler/association/has_one.js.coffee index 3372e7a1..930a7ce2 100644 --- a/app/assets/javascripts/local_manifest/profiler/association/has_one.js.coffee +++ b/app/assets/javascripts/local_manifest/profiler/association/has_one.js.coffee @@ -14,10 +14,11 @@ class LocalManifest.ProfilerModule.AssociationModule.HasOne extends ManifestBase @model_name = n[0] @list_name = n[1] else - ManifestBase::alert_undefined_message 'list', self.module_message + ManifestBase.alert_undefined_message 'list', @module_message - list: () -> - Locmare::ListGroup.list @model_name, @list_name + list_options: (id) -> + params = {controller: @model().table_name(), action: @list_name, id: id, page: 1, page_size: 3} + {model: @model(), params: params} model: () -> Manifest.item_name_to_model @model_name diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee index a6244efc..b1a9abdd 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee @@ -1,5 +1,8 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base extends Backbone.View tagName: 'div' + events: { + 'click .face': 'show' + } initialize: (options) -> @file_item = options.file_item @@ -20,6 +23,11 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum this.$el.html(template(args)) this + show: () -> + item = new Pettanr.Artist({id: 1}) + item.fetch().done -> + profiler = new Locmare.Profiler({item_name: item.item_name(), item: item, operators: window.operators}) + filer: () -> @file_item.filer() diff --git a/app/assets/javascripts/locmare/profiler.js.coffee b/app/assets/javascripts/locmare/profiler.js.coffee new file mode 100644 index 00000000..d4a6f1eb --- /dev/null +++ b/app/assets/javascripts/locmare/profiler.js.coffee @@ -0,0 +1,36 @@ +class Locmare.Profiler extends Backbone.View + tagName: 'div' + initialize: (options) -> + @item_name = options.item_name + @item = options.item + # feasible show parsed extend data + @item.boosts 'post' + @operators = options.operators + + @profiler_manifest = LocalManifest.manifest().profilers[@item_name] + @template_dir = 'templates-profiler-' + @header = new Locmare.ProfilerModule.Header({profiler: this}) + @columns = new Locmare.ProfilerModule.Column({profiler: this}) + @associations = new Locmare.ProfilerModule.Association({'profiler': this, association_manifest: @profiler_manifest.associations}) + @render() + + render: () -> + this.$el.html('') + this.$el.append(@header.render().el) + this.$el.append(@columns.render().el) + this.$el.append(@associations.render().el) + $("#pettanr").html(this.el) + this + + peta: () -> + Manifest.manifest().items[@item_name] + + model: () -> + Manifest.item_name_to_model @item_name + + image_dir: () -> + '/images/' + +class Locmare.ProfilerModule + + diff --git a/app/assets/javascripts/locmare/profiler/association.js.coffee b/app/assets/javascripts/locmare/profiler/association.js.coffee new file mode 100644 index 00000000..c9aa914a --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/association.js.coffee @@ -0,0 +1,32 @@ +class Locmare.ProfilerModule.Association extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @profiler = options.profiler + @association_manifest = options.association_manifest + @belongs_to = _.map @association_manifest.belongs_to, (belongs_to_manifest) => + new Locmare.ProfilerModule.AssociationModule.BelongsTo({association: this, belongs_to_manifest: belongs_to_manifest}) + @has_many = _.map @association_manifest.has_many, (list_manifest) => + new Locmare.ProfilerModule.AssociationModule.HasMany({association: this, has_many_manifest: list_manifest}) + @has_one = _.map @association_manifest.has_one, (list_manifest) => + new Locmare.ProfilerModule.AssociationModule.HasOne({association: this, has_one_manifest: list_manifestt}) + @render + + render: () -> + _this = this + _.each @belongs_to, (f) -> + #_this.$el.append(f.render().el) + _.each @has_many, (f) -> + #_this.$el.append(f.render().el) + _.each @has_one, (f) -> + #_this.$el.append(f.render().el) + this + + item: () -> + @profiler.item + + model_manifest: () -> + Manifest.manifest().models[@profiler.item_name] + +class Locmare.ProfilerModule.AssociationModule + diff --git a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee new file mode 100644 index 00000000..2eeb6978 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee @@ -0,0 +1,37 @@ +class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @association = options.association + @belongs_to_manifest = options.belongs_to_manifest + @filer = null + m = new @parent_model({id: @parent_id()}) + _this = this + m.fetch().done -> + _this.filer = new Locmare.Filer(@parent_model.item_name, r, null, @profiler().operators) + _this.render() + + render: () -> + this.$el.html('') + if @filer + this.$el.html(@filer.render().el) + this + + item: () -> + @profiler.item + + parent_model: () -> + @belongs_to_manifest.model() + + parent_id: () -> + @item().get(@model_belongs_to_manifest().id_column) + + model_manifest: () -> + Manifest.manifest().models[@profiler.item_name] + + model_belongs_to_manifest: () -> + @model_manifest().associations.belongs_to[@belongs_to_manifest.model_name] + + profiler: () -> + @association.profiler() + diff --git a/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee new file mode 100644 index 00000000..b6eef8b6 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee @@ -0,0 +1,29 @@ +class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @association = options.association + @has_many_manifest = options.has_many_manifest + @filer = null + m = new Pettanr.FilerCollection({}, @has_many_manifest.list_options(@item().get('id'))) + _this = this + m.fetch().done -> + items = m.models + #_this.filer = new Locmare.Filer(_this.has_many_model().item_name, items, @pager, _this.profiler().operators) + _this.render() + + render: () -> + this.$el.html('') + if @filer + this.$el.html(@filer.render().el) + this + + item: () -> + @profiler().item + + has_many_model: () -> + @has_many_manifest.model() + + profiler: () -> + @association.profiler + diff --git a/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee new file mode 100644 index 00000000..c2108e93 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee @@ -0,0 +1,30 @@ +class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @association = options.association + @has_one_manifest = options.has_one_manifest + @filer = null + m = new @parent_model(@parent_id()) + m = new Pettanr.FilerCollection({}, @has_one_manifest.list_options(@item().get('id'))) + _this = this + m.fetch().done -> + items = m.models + _this.filer = new Locmare.Filer(_this.has_one_model().item_name, items, null, _this.profiler().operators) + _this.render() + + render: () -> + this.$el.html('') + if @filer + this.$el.html(@filer.render().el) + this + + item: () -> + @profiler().item + + has_one_model: () -> + @has_one_manifest.model() + + profiler: () -> + @association.profiler + diff --git a/app/assets/javascripts/locmare/profiler/column.js.coffee b/app/assets/javascripts/locmare/profiler/column.js.coffee new file mode 100644 index 00000000..42c89bdf --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column.js.coffee @@ -0,0 +1,41 @@ +class Locmare.ProfilerModule.Column extends Backbone.View + tagName: 'div' + className: 'columns' + + initialize: (options) -> + @profiler = options.profiler + @profiler_manifest = @profiler.profiler_manifest + @columns = {} + _this = this + _.each @profiler_manifest.columns, (column, name) -> + _this.columns[name] = _this.factory(_this.profiler, column) + + render: () -> + _this = this + this.$el.html('') + _.each @sorted_columns(), (column) -> + _this.$el.append(column.render().el) + this + + types: () -> + { + default: Locmare.ProfilerModule.ColumnModule.Default, + date: Locmare.ProfilerModule.ColumnModule.Date, + source: Locmare.ProfilerModule.ColumnModule.Source, + extend: Locmare.ProfilerModule.ColumnModule.Extend, + json: Locmare.ProfilerModule.ColumnModule.Json + } + + factory: (profiler, my_manifest) -> + type = my_manifest.type + console.log("undefined type for local view filers > #{profiler.item_name} > edit\n") if not type + my_class = @types()[type] + console.log("undefined class for local view filers > #{profiler.item_name} > edit > #{type}\n") if not my_class + new my_class({profiler: profiler, column_manifest: my_manifest}) + + sorted_columns: () -> + _.map @profiler_manifest.column_names, (column_name) => + _this.columns[column_name] + +class Locmare.ProfilerModule.ColumnModule + diff --git a/app/assets/javascripts/locmare/profiler/column/base.js.coffee b/app/assets/javascripts/locmare/profiler/column/base.js.coffee new file mode 100644 index 00000000..f1781486 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/base.js.coffee @@ -0,0 +1,156 @@ +class Locmare.ProfilerModule.ColumnModule.Base extends Backbone.View + tagName: 'div' + className: 'column' + + initialize: (options) -> + @profiler = options.profiler + @column_manifest = options.column_manifest + @column_name = @column_manifest.name + c = @label_class() + @label = new c({column: this}) + c = @value_class() + @value = new c({column: this}) + c = @note_class() + @note = new c({column: this}) + + render: () -> + this.$el.html('') + this.$el.append(@label.render().el) + this.$el.append(@value.render().el) + this.$el.append(@note.render().el) if @note.is_visible() + this + + item: () -> + @profiler.item + + label_class: () -> + Locmare.ProfilerModule.ColumnModule.Label + + value_class: () -> + Locmare.ProfilerModule.ColumnModule.Value + + note_class: () -> + Locmare.ProfilerModule.ColumnModule.NoteNone + +class Locmare.ProfilerModule.ColumnModule.Label extends Backbone.View + tagName: 'span' + + initialize: (options) -> + @column = options.column + + render: () -> + this.$el.html(@label()) + this + + label: () -> + Pettanr.AppHelper.t_a(@column.item().item_name(), @column.column_name) + +class Locmare.ProfilerModule.ColumnModule.Value extends Backbone.View + tagName: 'span' + + initialize: (options) -> + @column = options.column + + render: () -> + this.$el.html(@value()) + this + + value: () -> + @column.item().get(@column.column_name) + +class Locmare.ProfilerModule.ColumnModule.DateValue extends Backbone.View + tagName: 'span' + + initialize: (options) -> + @column = options.column + + render: () -> + this.$el.html(@value()) + this + + value: () -> + l(@column.value()) + +class Locmare.ProfilerModule.ColumnModule.JsonValue extends Backbone.View + tagName: 'pre' + + initialize: (options) -> + @column = options.column + + render: () -> + this.$el.html(@value()) + this + + value: () -> + JSON.pretty_generate(JSON.parse(@column.value())) + +class Locmare.ProfilerModule.ColumnModule.ExtendValue extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @column = options.column + @columns = {} + _this = this + _.each @extend_settings().column_names, (extend_column_name) -> + extend_column_manifest = _this.extend_settings().columns[extend_column_name] || {} + _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}) + + render: () -> + _this = this + this.$el.html('') + _.each @sorted_columns(), (extend_column) -> + _this.$el.append(extend_column.render().el) + this + + + extend_columns: () -> + _.map @extend_settings().column_names, (column_name) -> + @columns[column_name] + + extend_settings: () -> + @template_model_profiler().extend_settings[self.booster.model_name] + + template_model_profiler: () -> + LocalManifest.manifest.profilers[@template_model().item_name] + + template_model: () -> + @booster().template_model + + extend_item: () -> + @booster.extend_item + + booster: () -> + @column.item().boosters[@column_manifest.boost_name] + +class Locmare.ProfilerModule.ColumnModule.NoteNone + + is_visible:() -> + false + +class Locmare.ProfilerModule.ColumnModule.Note extends Backbone.View + tagName: 'span' + + initialize: (options) -> + @column = options.column + + render: () -> + this.$el.html(@note()) + this + + note: () -> + Pettanr.AppHelper.t_selected_item(@select_item_name, @column.value()) + + is_visible:() -> + true + + select_item_name: () -> + @model_attribute_source_manifest().select_item_name + + model_manifest: () -> + Manifest.manifest().models[@column.profiler().item_name] + + model_attribute_manifest: () -> + @model_manifest().attributes[@column.column_name] + + model_attribute_source_manifest: () -> + @model_attribute_manifest().source diff --git a/app/assets/javascripts/locmare/profiler/column/date.js.coffee b/app/assets/javascripts/locmare/profiler/column/date.js.coffee new file mode 100644 index 00000000..3d53f909 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/date.js.coffee @@ -0,0 +1,5 @@ +class Locmare.ProfilerModule.ColumnModule.Date extends Locmare.ProfilerModule.ColumnModule.Base + + value_class: () -> + Locmare.ProfilerModule.ColumnModule.DateValue + diff --git a/app/assets/javascripts/locmare/profiler/column/default.js.coffee b/app/assets/javascripts/locmare/profiler/column/default.js.coffee new file mode 100644 index 00000000..c0ecc3a8 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/default.js.coffee @@ -0,0 +1,2 @@ +class Locmare.ProfilerModule.ColumnModule.Default extends Locmare.ProfilerModule.ColumnModule.Base + diff --git a/app/assets/javascripts/locmare/profiler/column/extend.js.coffee b/app/assets/javascripts/locmare/profiler/column/extend.js.coffee new file mode 100644 index 00000000..c954ac27 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/extend.js.coffee @@ -0,0 +1,6 @@ +class Locmare.ProfilerModule.ColumnModule.Extend extends Locmare.ProfilerModule.ColumnModule.Base + + value_class: () -> + Locmare.ProfilerModule.ColumnModule.ExtendValue + +class Locmare.ProfilerModule.ColumnModule.ExtendModule diff --git a/app/assets/javascripts/locmare/profiler/column/extend/extend_column.js.coffee b/app/assets/javascripts/locmare/profiler/column/extend/extend_column.js.coffee new file mode 100644 index 00000000..1a0a64ef --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/extend/extend_column.js.coffee @@ -0,0 +1,15 @@ +class Locmare.ProfilerModule.ColumnModule.ExtendModule.ExtendColumn extends Backbone.View + initialize: (options) -> + @column = options.column # extend_column + @extend_column_name = options.extend_column_name + @extend_column_manifest = options.extend_column_manifest + + label: () -> + Pettanr.AppHelper.t_a(@extend_item().singular(), @extend_column_name) + + value: () -> + @extend_item.get(@extend_column_name) + + extend_item: () -> + @column.extend_item() + diff --git a/app/assets/javascripts/locmare/profiler/column/json.js.coffee b/app/assets/javascripts/locmare/profiler/column/json.js.coffee new file mode 100644 index 00000000..3cb319c8 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/json.js.coffee @@ -0,0 +1,5 @@ +class Locmare.ProfilerModule.ColumnModule.Json extends Locmare.ProfilerModule.ColumnModule.Base + + value_class: () -> + Locmare.ProfilerModule.ColumnModule.JsonValue + diff --git a/app/assets/javascripts/locmare/profiler/column/source.js.coffee b/app/assets/javascripts/locmare/profiler/column/source.js.coffee new file mode 100644 index 00000000..95d41c27 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/column/source.js.coffee @@ -0,0 +1,5 @@ +class Locmare.ProfilerModule.ColumnModule.Source extends Locmare.ProfilerModule.ColumnModule.Base + + note_class: () -> + Locmare.ProfilerModule.ColumnModule.Note + diff --git a/app/assets/javascripts/locmare/profiler/header.js.coffee b/app/assets/javascripts/locmare/profiler/header.js.coffee new file mode 100644 index 00000000..9f0645d9 --- /dev/null +++ b/app/assets/javascripts/locmare/profiler/header.js.coffee @@ -0,0 +1,13 @@ +class Locmare.ProfilerModule.Header extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @profiler = options.profiler + + render: () -> + #this.$el.append(@filer().render().el) + this + + filer: () -> + new Locmare.Filer(@profiler.item_name, [@profiler.item], null, @profiler.operators) + diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee index 38d2c0ba..603e6dc5 100644 --- a/app/assets/javascripts/main.js.coffee +++ b/app/assets/javascripts/main.js.coffee @@ -22,10 +22,11 @@ $ -> artist.fetch({}) window.operators = new Pettanr.Operator([author, artist]) - list_result = new Pettanr.Folder.Root({}) - new Pettanr.FilerRender('folder', list_result, 'default', window.operators) + #list_result = new Pettanr.Folder.Root({}) + #new Pettanr.FilerRender('folder', list_result, 'default', window.operators) window.router = new Pettanr.Router() Backbone.history.start({pushState: true}) + window.router.navigate('folders/root', true) test_router: () -> window.router.navigate('folders/98', true) diff --git a/app/assets/javascripts/models/resource_picture.js.coffee b/app/assets/javascripts/models/resource_picture.js.coffee index 2d5b454e..fafa3dcb 100644 --- a/app/assets/javascripts/models/resource_picture.js.coffee +++ b/app/assets/javascripts/models/resource_picture.js.coffee @@ -1,4 +1,6 @@ class Pettanr.ResourcePicture extends Peta.Content + url: '/resource_pictures/' + @singular: () -> 'ResourcePicture' @@ -49,4 +51,4 @@ class Pettanr.ResourcePicture extends Peta.Content class Pettanr.ResourcePicture.Collection extends Backbone.Collection model: Pettanr.ResourcePicture - url: '/resource_pictures' + url: '/resource_pictures/' diff --git a/app/assets/javascripts/models/scroll.js.coffee b/app/assets/javascripts/models/scroll.js.coffee index 6d636bfc..9447642e 100644 --- a/app/assets/javascripts/models/scroll.js.coffee +++ b/app/assets/javascripts/models/scroll.js.coffee @@ -1,5 +1,5 @@ class Pettanr.Scroll extends Peta.Binder - url: '' + url: '/scrolls/' @singular: () -> 'Scroll' diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index 248c0e3f..294ee7aa 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -74,6 +74,12 @@ class Peta.Item extends Backbone.Model #InstanceMethods + singular: () -> + Pettanr[@constructor.name].singular() + + plural: () -> + Pettanr[@constructor.name].plural() + item_name: () -> @my_class().item_name() diff --git a/app/assets/javascripts/pettanr.js.coffee b/app/assets/javascripts/pettanr.js.coffee index 3c45a75d..c5ed2df3 100644 --- a/app/assets/javascripts/pettanr.js.coffee +++ b/app/assets/javascripts/pettanr.js.coffee @@ -1,4 +1,6 @@ class Pettanr + # Foo.class -> Pettanr[@constructor.name] + @is_blank: (str) -> !str?.trim() @@ -39,8 +41,11 @@ class Pettanr if l.length == 1 I18n.t('activerecord.models.' + Pettanr[label].item_name()) else - I18n.t('activerecord.models.attribtes.' + Pettanr[l.first].item_name() + '.' + l.last) + Pettanr.AppHelper.t_a(Pettanr[l.first].item_name(), l.last) + @t_a: (item_name, attr_name) -> + I18n.t('activerecord.attributes.' + item_name + '.' + attr_name) + @t_select_items: (items) -> _.map items, (i) -> [t(i[0]), i[1]] @@ -130,8 +135,8 @@ class Pettanr '?' + q.join('&') else '' - @url = '/' + params['controller'] + i + a + qry - @total = new Pettanr.CounterModel({}, {url: '/' + params['controller'] + i + 'count_' + a}) + @url = '/' + params['controller'] + '/' + i + a + qry + @total = new Pettanr.CounterModel({}, {url: '/' + params['controller'] + '/' + i + 'count_' + a}) @model = options['model'] class Pettanr.AppController diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f1da1ce2..42e87806 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -165,7 +165,7 @@ class ApplicationController < ActionController::Base 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 } -- 2.11.0