//= require ./pettanr
//= require ./routes
//= require ./views
+//= require ./editor
+//= require ./editor/panel_editor
+//= require ./editor/panel_editor/dock
//= require ./i18n/translations
//= require_directory ./controllers
//= require_directory ./models
\r
new: () ->\r
@redraw_title(@params)\r
- @form_new()\r
+ @set_new()\r
+ editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
+ $("#pettanr").html(editor.render().el)\r
\r
edit: () ->\r
@redraw_title(@params)\r
- @form_edit()\r
+ _this = this\r
+ @set_model()\r
+ @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true})\r
+ @item.fetch({cache: false}).done ->\r
+ editor = new Editor.PanelEditor({root_item: _this.item, operators: _this.operators})\r
+ $("#pettanr").html(editor.render().el)\r
\r
create: () ->\r
\r
--- /dev/null
+class Editor\r
+@Editor = Editor\r
+class Editor.EditorModule\r
+class Editor.EditorModule.DockBase extends Backbone.View\r
+ \r
+ initialize: (options) ->\r
+ @parent = options.parent\r
+ @tabs = []\r
+ \r
+ add_tab: (tab, label, body) ->\r
+ @tabs.push tab\r
+ tab.label = label\r
+ tab.body = body\r
+ tab\r
+ \r
+ root_item: () ->\r
+ @parent.root_item()\r
+ \r
+class Editor.EditorModule.DockModule\r
+ \r
+class Editor.EditorModule.DockModule.Tab extends Editor.EditorModule.DockBase\r
+ initialize: (options) ->\r
+ super(options)\r
+ @index = options.index\r
+ @name = options.name\r
+ @label = null\r
+ @body = null\r
+ \r
+ dom_id: () ->\r
+ console.log "no dom_id"\r
+ \r
+ dom_class: () ->\r
+ console.log "no dom_class"\r
+ \r
+class Editor.EditorModule.DockModule.Bay extends Editor.EditorModule.DockModule.Tab\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
+ dock: () ->\r
+ @parent\r
+ \r
+ root_item: () ->\r
+ @parent.root_item()\r
+ \r
+ dom_id: () ->\r
+ @parent.dom_id() + '-bay-' + @name\r
+ \r
+ dom_class: () ->\r
+ @parent.dom_class() + '-bay'\r
+ \r
+ dom_labels_class: () ->\r
+ @dom_class() + '-labels'\r
+ \r
+class Editor.EditorModule.DockModule.SimpleBay extends Editor.EditorModule.DockModule.Bay\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
+class Editor.EditorModule.DockModule.BoardBay extends Editor.EditorModule.DockModule.Bay\r
+ tagName: 'div'\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @boards = null\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ @el.className = @body.dom_class()\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ this\r
+ \r
+ dom_labels_class: () ->\r
+ @dom_class() + "-labels"\r
+ \r
+ dom_bodys_class: () ->\r
+ @dom_class() + "-bodys"\r
+ \r
+class Editor.EditorModule.DockModule.Board extends Editor.EditorModule.DockModule.Tab\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
+ root_item: () ->\r
+ @parent.root_item()\r
+ \r
+ bay: () ->\r
+ @parent\r
+ \r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ bay_index: () ->\r
+ @bay().index\r
+ \r
+ dom_id: () ->\r
+ @bay().dom_id() + '-board-' + @name\r
+ \r
+ dom_class: () ->\r
+ @bay().dom_class() + '-board'\r
+ \r
+ header_class: () ->\r
+ ""\r
+ \r
+class Editor.EditorModule.DockModule.Bucket extends Backbone.View\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @parent = options.parent\r
+ \r
+class Editor.EditorModule.DockModule.FormBucket extends Editor.EditorModule.DockModule.Bucket\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @form = options.form\r
+ \r
+ render: () ->\r
+ @form.render()\r
+ \r
+class Editor.EditorModule.DockModule.PriorityBucket extends Editor.EditorModule.DockModule.Bucket\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
+ board: () ->\r
+ @parent.board()\r
+ \r
+ bay: () ->\r
+ @board().bay()\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBucket extends Editor.EditorModule.DockModule.Bucket\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @element = options.element\r
+ \r
+ board: () ->\r
+ @parent.board()\r
+ \r
+ bay: () ->\r
+ @board().bay()\r
+ \r
+class Editor.EditorModule.DockModule.TabModule\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.Label extends Backbone.View\r
+ \r
+ initialize: (options) ->\r
+ @parent = options.parent\r
+ @caption = options.caption\r
+ \r
+ root_item: () ->\r
+ @parent.root_item()\r
+ \r
+ index: () ->\r
+ @parent.index\r
+ \r
+ name: () ->\r
+ @parent.name\r
+ \r
+ dom_id: () ->\r
+ console.log "no dom_id"\r
+ \r
+ dom_class: () ->\r
+ console.log "no dom_class"\r
+ \r
+ body: () ->\r
+ @parent.body\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.Body extends Backbone.View\r
+ \r
+ initialize: (options) ->\r
+ @parent = options.parent\r
+ \r
+ root_item: () ->\r
+ @parent.root_item()\r
+ \r
+ index: () ->\r
+ @parent.index\r
+ \r
+ name: () ->\r
+ @parent.name\r
+ \r
+ label: () ->\r
+ @parent.label\r
+ \r
+ dom_id: () ->\r
+ console.log "no dom_id"\r
+ \r
+ dom_class: () ->\r
+ console.log "no dom_class"\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.BayLabel extends Editor.EditorModule.DockModule.TabModule.Label\r
+ tagName: 'li'\r
+ \r
+ bay: () ->\r
+ @parent\r
+ \r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ dom_id: () ->\r
+ @bay().dom_id() + '-label'\r
+ \r
+ dom_class: () ->\r
+ @bay().dom_class() + '-label'\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ @el.className = @dom_class()\r
+ a = new Tag.A({attr: {href: '/#' + @body().dom_id()}, content: @caption})\r
+ this.$el.html(a.render().el)\r
+ this\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.BayBody extends Editor.EditorModule.DockModule.TabModule.Body\r
+ bay: () ->\r
+ @parent\r
+ \r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ dom_id: () ->\r
+ @bay().dom_id() + '-body'\r
+ \r
+ dom_class: () ->\r
+ @bay().dom_class() + '-body'\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.BoardLabel extends Editor.EditorModule.DockModule.TabModule.Label\r
+ tagName: 'li'\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
+ board: () ->\r
+ @parent\r
+ \r
+ bay: () ->\r
+ @board().bay()\r
+ \r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ element: () ->\r
+ @parent.element\r
+ \r
+ bay_name: () ->\r
+ bay().name\r
+ \r
+ dom_id: () ->\r
+ @board().dom_id() + '-label'\r
+ \r
+ dom_class: () ->\r
+ @board().dom_class() + '-label'\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ @el.className = @dom_class()\r
+ this.$el.html(@element().element_face().render().el)\r
+ this\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.BoardBody extends Editor.EditorModule.DockModule.TabModule.Body\r
+ board: () ->\r
+ @parent\r
+ \r
+ bay: () ->\r
+ @board().bay()\r
+ \r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ dom_id: () ->\r
+ @board().dom_id() + '-body'\r
+ \r
+ dom_class: () ->\r
+ @board().dom_class() + '-body'\r
+ \r
--- /dev/null
+class Editor.PanelEditor extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'panel-editor'\r
+ \r
+ initialize: (options) ->\r
+ @panel = options.root_item\r
+ @operators = options.operators\r
+ @body = new Pettanr.Views.Panel.Body({\r
+ panel: @root_item(),\r
+ operators: @operators,\r
+ spot: null\r
+ })\r
+ @dock = new Editor.PanelEditor.Dock({parent: this})\r
+ @credits = new Pettanr.Views.Panel.Show.Credits({panel: @root_item()})\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ this.$el.append(@body.render().el)\r
+ this.$el.append(@dock.render().el)\r
+ this.$el.append(@credits.render().el)\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ this\r
+ \r
+ root_item: () ->\r
+ @panel\r
+ \r
+ dom_id: () ->\r
+ 'editor-' + Pettanr.to_s(@root_item().get('id'))\r
+ \r
+ dom_class: () ->\r
+ 'editor'\r
+\r
--- /dev/null
+class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase\r
+ tagName: 'div'\r
+ className: 'dock'\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ tab = new Editor.EditorModule.DockModule.RootBay({\r
+ parent: this, index: 0, name: 'panel'\r
+ })\r
+ @add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.RootBayLabel({\r
+ parent: tab, caption: 'panel'\r
+ }), \r
+ new Editor.EditorModule.DockModule.TabModule.RootBayBody({\r
+ parent: tab\r
+ })\r
+ )\r
+ tab = new Editor.EditorModule.DockModule.ElementBay({\r
+ parent: this, index: 1, name: 'elements'\r
+ })\r
+ @add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({\r
+ parent: tab, caption: 'elements'\r
+ }), \r
+ new Editor.EditorModule.DockModule.TabModule.ElementBayBody({\r
+ parent: tab\r
+ })\r
+ )\r
+ tab = new Editor.EditorModule.DockModule.ScenarioBay({\r
+ parent: this, index: 2, name: 'scenario'\r
+ })\r
+ @add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({\r
+ parent: tab, caption: 'scenario'\r
+ }), \r
+ new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({\r
+ parent: tab\r
+ })\r
+ )\r
+ tab = new Editor.EditorModule.DockModule.PriorityBay({\r
+ parent: this, index: 3, name: 'priority'\r
+ })\r
+ @add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.PriorityBayLabel({\r
+ parent: tab, caption: 'priority'\r
+ }), \r
+ new Editor.EditorModule.DockModule.TabModule.PriorityBayBody({\r
+ parent: tab\r
+ })\r
+ )\r
+ tab = new Editor.EditorModule.DockModule.NewBay({\r
+ parent: this, index: 4, name: 'new'\r
+ })\r
+ @add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.NewBayLabel({\r
+ parent: tab, caption: 'new'\r
+ }), \r
+ new Editor.EditorModule.DockModule.TabModule.NewBayBody({\r
+ parent: tab\r
+ })\r
+ )\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ l = _.map @tabs, (tab) ->\r
+ tab.label\r
+ labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})\r
+ this.$el.append(labels.render().el)\r
+ _this = this\r
+ _.each @tabs, (tab) ->\r
+ _this.$el.append(tab.render().el)\r
+ this\r
+ \r
+ editor: () ->\r
+ @parent\r
+ \r
+ dom_id: () ->\r
+ @editor().dom_id() + '-dock'\r
+ \r
+ dom_class: () ->\r
+ @editor().dom_class() + '-dock'\r
+ \r
+ dom_labels_class: () ->\r
+ @dom_class() + '-labels'\r
+ \r
+class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
+ \r
+ render: () ->\r
+ @body.render()\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @form = new Locmare.Form({\r
+ form_name: @root_item().item_name(), \r
+ item: @root_item(), \r
+ mounted: @mounted(), \r
+ submit: 'default', \r
+ operators: @operators\r
+ })\r
+ @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
+ parent: this, form: @form\r
+ })\r
+ \r
+ render: () ->\r
+ @el.className = @bay().body.dom_class()\r
+ this.$el.html(@bucket.render().el)\r
+ this\r
+ \r
+ mounted: () ->\r
+ true\r
+ \r
+ dock: () ->\r
+ @parent.dock()\r
+ \r
+ root_item: () ->\r
+ @dock().root_item()\r
+ \r
+class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ _this = this\r
+ i = 0\r
+ _.each @elements(), (element) ->\r
+ tab = new Editor.EditorModule.DockModule.ElementBoard({\r
+ parent: _this, index: i, name: element.item_name(), element: element\r
+ })\r
+ _this.add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
+ new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
+ )\r
+ i++\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ _this = this\r
+ _.each @tabs, (tab) ->\r
+ _this.$el.append(tab.label.render().el)\r
+ this.$el.append('bdy')\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
+ this\r
+ \r
+ elements: () ->\r
+ @root_item().scenario_elements()\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ \r
+class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @element = options.element\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @form = new Locmare.Bucket({\r
+ bucket_name: @element().item_name(), \r
+ item: @element(), \r
+ mounted: @mounted(), \r
+ submit: null, \r
+ operators: @operators\r
+ })\r
+ @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
+ parent: this, form: @form\r
+ })\r
+ \r
+ mounted: () ->\r
+ true\r
+ \r
+ element: () ->\r
+ @parent.element\r
+ \r
+class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ _this = this\r
+ i = 0\r
+ _.each @elements(), (element) ->\r
+ tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
+ parent: this, index: i, name: element.item_name(), element: element\r
+ })\r
+ _this.add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
+ new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
+ )\r
+ i++\r
+ \r
+ elements: () ->\r
+ @root_item().scenario_elements()\r
+ \r
+ class_name: () ->\r
+ "zsort-box"\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ \r
+class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @element = options.element\r
+ \r
+ mounted: () ->\r
+ false\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
+ parent: this\r
+ })\r
+ \r
+# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
+# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
+# bucket = Bucket.new self,form\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ _this = this\r
+ i = 0\r
+ _.each @elements(), (element) ->\r
+ tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
+ parent: this, index: i, name: element.item_name(), element: element\r
+ })\r
+ _this.add_tab(\r
+ tab, \r
+ new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
+ new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
+ )\r
+ i++\r
+ \r
+ elements: () ->\r
+ @root_item().scenario_elements()\r
+ \r
+ class_name: () ->\r
+ "tsort-box"\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @element = options.element\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
+ parent: this\r
+ })\r
+ \r
+class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
+ \r
+\r
+class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+\r
+class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ \r
+class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
+# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
+# bucket = Bucket.new self,form\r
+ \r
_this = this\r
_.each man.members, (member_manifest, member_name) ->\r
form_name = member_name # write exchange function if you want\r
- member_item = item[form_name]\r
+ member_item = item.get(form_name)\r
new_key = key + '.' + form_name\r
_this.forms[new_key] = new Locmare.Form({\r
form_name: new_key, \r
panel: () ->\r
new Pettanr.Panel({id: @get('panel_id')})\r
\r
+ element_face: () ->\r
+ new Pettanr.Views.GroundColor.ElementFace({element: this})\r
+ \r
initialize: () ->\r
if @id\r
@url = @url + @id\r
repeat_text: () ->\r
Pettanr.GroundPicture.repeat_texts()[@get('repeat')]\r
\r
+ element_face: () ->\r
+ new Pettanr.Views.GroundPicture.ElementFace({element: this})\r
+ \r
initialize: () ->\r
if @id\r
@url = @url + @id\r
i.fetch({cache: true}).done ->\r
cb(_this.tmb_opt_img_tag(i))\r
\r
+ element_face: () ->\r
+ new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
+ \r
initialize: () ->\r
if @id\r
@url = @url + @id\r
plain_scenario: () ->\r
@get('caption')\r
\r
+ element_face: () ->\r
+ new Pettanr.Views.SpeechBalloon.ElementFace({element: this})\r
+ \r
initialize: () ->\r
if @id\r
@url = @url + @id\r
class Peta.ElementNestableContent extends Peta.Content\r
element_items: (element_model) ->\r
n = @my_class().my_manifest().associations.child_element_name(element_model)\r
- attrs = @get(n)\r
- if attrs\r
- if @my_class().my_manifest().associations.is_has_one(element_model)\r
- new element_model(attrs)\r
- else\r
- _.map attrs, (attr) ->\r
- new element_model(attr)\r
+ @get(n)\r
\r
elements_items: () ->\r
_this = this\r
_.each @elements_items(), (item) ->\r
item.boosts(level)\r
\r
+ get: (name) ->\r
+ val = super(name)\r
+ return val if !(typeof val == 'object')\r
+ _this = this\r
+ attrs = val\r
+ r = null\r
+ _.each @my_class().child_models(), (element_model) ->\r
+ n = _this.my_class().my_manifest().associations.child_element_name(element_model)\r
+ if n == name\r
+ if _this.my_class().my_manifest().associations.is_has_one(element_model)\r
+ r = new element_model(attrs)\r
+ else\r
+ r = _.map attrs, (attr) ->\r
+ new element_model(attr)\r
+ r\r
+ \r
+ \r
class Tag.Span extends Tag.Div\r
tagName: 'span'\r
\r
+class Tag.Ul extends Backbone.View\r
+ tagName: 'ul'\r
+ \r
+ initialize: (options) ->\r
+ @attr = options.attr || {}\r
+ @contents = options.contents\r
+ @class_name = options.class_name\r
+ \r
+ render: () ->\r
+ @el.className = @class_name if @class_name\r
+ _this = this\r
+ this.$el.attr(@attr)\r
+ this.$el.html('')\r
+ _.each @contents, (content) ->\r
+ _this.$el.append(content.render().el)\r
+ this\r
+ \r
class Tag.RowBreak extends Tag.Div\r
initialize: (options) ->\r
@attr = {}\r
--- /dev/null
+class Pettanr.Views.GroundColor.ElementFace extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ symbol = new Pettanr.Views.GroundColor.Symbol({item: @element, class_name: 'elements-tab-face-icon'})\r
+ this.$el.append(symbol.render().el)\r
+ name = Pettanr.truncate(@element.get('caption'), 15)\r
+ caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+ this.$el.append(caption.render().el)\r
+ fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+ this.$el.append(fe.render().el)\r
+ this\r
class Pettanr.Views.GroundColor.Symbol extends Backbone.View\r
tagName: 'div'\r
- className: 'face'\r
\r
initialize: (options) ->\r
@item = options.item\r
+ @class_name = options.class_name || 'face'\r
\r
render: () ->\r
+ this.$el.addClass(@class_name)\r
this.$el.html(@fore_color())\r
attr = {\r
style: Pettanr.to_style(@style())\r
--- /dev/null
+class Pettanr.Views.GroundPicture.ElementSymbol extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab-face-icon'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ picture = @element.picture()\r
+ _this = this\r
+ picture.fetch({cache: true}).done ->\r
+ img = _this.element.tmb_opt_img_tag(picture)\r
+ _this.$el.html(img.render().el)\r
+ this\r
+ \r
+class Pettanr.Views.GroundPicture.ElementFace extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ symbol = new Pettanr.Views.GroundPicture.ElementSymbol({element: @element})\r
+ this.$el.append(symbol.render().el)\r
+ name = Pettanr.truncate(@element.get('caption'), 15)\r
+ caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+ this.$el.append(caption.render().el)\r
+ fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+ this.$el.append(fe.render().el)\r
+ this\r
+ \r
--- /dev/null
+class Pettanr.Views.PanelPicture.ElementSymbol extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab-face-icon'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ picture = @element.picture()\r
+ _this = this\r
+ picture.fetch({cache: true}).done ->\r
+ img = _this.element.tmb_opt_img_tag(picture)\r
+ _this.$el.html(img.render().el)\r
+ this\r
+ \r
+class Pettanr.Views.PanelPicture.ElementFace extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ symbol = new Pettanr.Views.PanelPicture.ElementSymbol({element: @element})\r
+ this.$el.append(symbol.render().el)\r
+ name = Pettanr.truncate(@element.get('caption'), 15)\r
+ caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+ this.$el.append(caption.render().el)\r
+ fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+ this.$el.append(fe.render().el)\r
+ this\r
+ \r
--- /dev/null
+class Pettanr.Views.SpeechBalloon.Icon extends Pettanr.Views.Common.Icon\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ \r
@element = options.element\r
@root = options.root\r
@spot = options.spot\r
- @balloon = new Pettanr.Balloon(@element.get('balloon'))\r
- @speech = new Pettanr.Speech(@element.get('speech'))\r
+ @balloon = @element.get('balloon')\r
+ @speech = @element.get('speech')\r
\r
render: () ->\r
@attr = {style: Pettanr.to_style(@style())}\r
--- /dev/null
+class Pettanr.Views.SpeechBalloon.ElementSymbol extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab-face-icon'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ speech_balloon_template = @element.speech_balloon_template()\r
+ _this = this\r
+ speech_balloon_template.fetch({cache: true}).done ->\r
+ system_picture = speech_balloon_template.system_picture()\r
+ system_picture.fetch({cache: true}).done ->\r
+ img = system_picture.tmb_opt_img_tag()\r
+ _this.$el.html(img.render().el)\r
+ this\r
+ \r
+class Pettanr.Views.SpeechBalloon.ElementFace extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'elements-tab'\r
+ \r
+ initialize: (options) ->\r
+ @element = options.element\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ symbol = new Pettanr.Views.SpeechBalloon.ElementSymbol({element: @element})\r
+ this.$el.append(symbol.render().el)\r
+ speech = @element.get('speech')\r
+ name = Pettanr.truncate(speech.get('content'), 15)\r
+ caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+ this.$el.append(caption.render().el)\r
+ fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+ this.$el.append(fe.render().el)\r
+ this\r
+ \r
\r
initialize: (options) ->\r
@operators = options.operators\r
+ @title = Manifest.manifest().magic_numbers.profile.users.caption\r
\r
render: () ->\r
this.$el.html('')\r
t = _.template($("#header_template").html())\r
- this.$el.append(t())\r
- @delegateEvents({'click .sign_in': 'click_sign_in'})\r
+ this.$el.append(t({title: @title}))\r
+ @delegateEvents({\r
+ 'click .logo': 'click_logo', \r
+ 'click .sign_in': 'click_sign_in'\r
+ })\r
this\r
\r
+ click_logo: () ->\r
+ window.router.navigate('', true)\r
+ return false\r
+ \r
click_sign_in: () ->\r
window.router.navigate('users/sign_in', true)\r
return false\r
.filer-item-speech_balloon_template .filer-item-caption {
}
+.logo{
+ float: left;
+}
+
ul.pagination {
list-style-type: none;
}
<div id="footer">\r
</div>\r
<script type="text/template" id="header_template">\r
- <div id="account">\r
+ <span id="logo">\r
+ <a class="logo" href="/"><&= title &></a>\r
+ </span>\r
+ <span id="account">\r
<a class="sign_in" href="/users/sign_in">sign_in</a>\r
- </div>\r
+ </span>\r
+ <span class="row_break">\r
+ </span>\r
</script>\r
<script type="text/template" id="sign_in">\r
<h3><&= 'title' &></h3>\r
+++ /dev/null
-<% if pager.paginate %>
- <%= paginate(pager.paginate) %>
-<% end %>
+++ /dev/null
-<div>
- <%= link_to 'more', pager.api_path %>
-</div>
<% end %>
<% pager.range.each do |page| %>
<li class="page">
- <%= link_to page.to_s, pager.url(page) %>
+ <%= link_to_if (page != pager.current_page), page.to_s, pager.url(page) %>
</li>
<% end %>
<% if pager.has_next_page_gap %>
--- /dev/null
+<ul class="pagination">
+ <% if pager.has_previous_page %>
+ <li class="first">
+ <%= link_to '<<', pager.url(pager.diff_offset(-pager.current_page + 1)) %>
+ </li>
+ <% end %>
+ <% if pager.has_previous_page %>
+ <li class="prev">
+ <%= link_to '<', pager.url(pager.diff_offset(-1)) %>
+ </li>
+ <% end %>
+ <% if pager.has_previous_page_gap %>
+ <li class="page-gap">
+ ...
+ </li>
+ <% end %>
+ <% pager.ranges.each do |range| %>
+ <li class="page">
+ <%= link_to_if (range['page'] != pager.current_page), range['page'].to_s, pager.url(pager.diff_offset(range['distance'])) %>
+ </li>
+ <% end %>
+ <% if pager.has_next_page_gap %>
+ <li class="page-gap">
+ ...
+ </li>
+ <% end %>
+ <% if pager.has_next_page %>
+ <li class="next">
+ <%= link_to '>', pager.url(pager.diff_offset(+1)) %>
+ </li>
+ <% end %>
+ <% if pager.has_next_page %>
+ <li class="last">
+ <%= link_to '>>', pager.url(pager.diff_offset(pager.total_page - pager.current_page)) %>
+ </li>
+ <% end %>
+</ul>
+<div class="row_break"></div>
@tabs = []
end
- def root_item
- @parent.root_item
- end
-
def add_tab tab, label, body
@tabs << tab
tab.label = label
}
end
- def paginate
- c = @total ? @total.to_i : 0
+ def pager
+ @pager ||= ::Locmare::ListGroupModule::LibModule::Pager::Offset.new(self, @options)
end
def offset
return @offset if @offset
@offset = PageStatus.offset(@options).to_i
- @offset = self.count - 1 if @offset >= self.count
- @offset = self.count - @offset.abs if @offset < 0
+ @offset = @total - 1 if @offset >= @total
+ @offset = @total - @offset.abs if @offset < 0
@offset = 0 if @offset < 0
@offset
end
def limit
return @limit if @limit
@limit = self.count || self.default_page_size
+ @limit = self.default_page_size if @limit == 0
if @list.limited?
@limit = self.default_page_size if @limit < 0
@limit = self.max_page_size if @limit > self.max_page_size
@count ||= PageStatus.count(@options)
end
+ def mod
+ self.offset % self.limit
+ end
+
+ def adjust
+ self.mod == 0 ? 0 : 1
+ end
+
+ def page
+ return 1 if self.limit < 0
+ self.offset / self.limit + 1 + self.adjust
+ end
+
+ def default_page_size
+ @list.default_page_size
+ end
+
+ def max_page_size
+ @list.max_page_size
+ end
+
+ def total_page
+ return 1 if self.limit < 0
+ round = (@total % self.limit) == 0 ? 0 : 1
+ @total / self.limit + round + self.adjust
+ end
+
+ def pageable?
+ self.total_page > 1
+ end
+
end
class Unlimited
def to_hash
{
- :type => :none
+ :type => :unlimited
}
end
- def paginate
+ def pager
nil
end
-1
end
+ def pageable?
+ false
+ end
+
end
def self.load list, total, options
@page_status = page_status
@options = options
@total = @page_status.total
- @current_page = @page_status.page
- @per_page = @page_status.limit
- @total_page = @page_status.total_page
+
@window_size = 3
@template_dir = 'templates/r/pager/'
@template_name = @template_dir + 'default'
@controller = Manifest.manifest.controllers[@options['controller'].to_s]
@action = @controller.actions[@options['action'].to_s]
+
+ @current_page = @page_status.page
+ @per_page = @page_status.limit
+ @total_page = @page_status.total_page
end
def range
end
end
+
+ class Offset
+
+ attr :page_status, :options, :window_size,
+ :total, :current_page, :per_page, :total_page,
+ :template_dir, :template_name
+
+ def initialize page_status, options
+ @page_status = page_status
+ @options = options
+ @total = @page_status.total
+
+ @window_size = 3
+ @template_dir = 'templates/r/pager/'
+ @template_name = @template_dir + 'offset'
+ @controller = Manifest.manifest.controllers[@options['controller'].to_s]
+ @action = @controller.actions[@options['action'].to_s]
+
+ @current_page = @page_status.page
+ @per_page = @page_status.limit
+ @total_page = @page_status.total_page
+ end
+
+ def ranges
+ ranges = []
+ (-@window_size..@window_size).each do |d|
+ next unless r = self.diff_offset(d)
+ ranges << r
+ end
+ ranges
+ end
+
+ def has_previous_page
+ @current_page > 1
+ end
+
+ def has_next_page
+ @current_page < @total_page
+ end
+
+ def has_previous_page_gap
+ @current_page > @window_size + 1
+ end
+
+ def has_next_page_gap
+ @total_page - @current_page > @window_size
+ end
+
+ def diff_offset d
+ f = @page_status.offset + d * @per_page
+ t = f + @per_page - 1
+ return nil if t < 0 or f >= @total
+ f = 0 if f < 0
+ t = @total - 1 if t >= @total
+ {
+ 'offset' => f, 'count' => t - f + 1,
+ 'page' => @current_page + d, 'distance' => d
+ }
+ end
+
+ def url range
+ params = {}
+ @options.each do |k, v| # deep copy
+ params[k] = v
+ end
+ params['offset'] = range['offset']
+ params['count'] = range['count']
+ @action.url params
+ end
+
+ end
end
-
end
end
end
q = []
q.push('page=' + params['page'].to_s) if params['page']
q.push('page_size=' + params['page_size'].to_s) if params['page_size']
+ q.push('offset=' + params['offset'].to_s) if params['offset']
+ q.push('count=' + params['count'].to_s) if params['count']
if q.length > 0
'?' + q.join('&')
else