Improved loading content performance (reduced count of http requests).

This commit is contained in:
Martin Edenhofer 2014-09-22 17:47:33 +02:00
parent 8ba9cc98e9
commit 12fc2adc3e
5 changed files with 48 additions and 3 deletions

View file

@ -110,6 +110,12 @@ class App.TicketZoom extends App.Controller
# remember article ids
@ticket_article_ids = data.ticket_article_ids
# remember link
@links = data.links
# remember tags
@tags = data.tags
# get edit form attributes
@form_meta = data.form_meta
@ -263,7 +269,8 @@ class TicketInfo extends App.ControllerDrox
new App.WidgetTag(
el: @el.find('.tag_info')
object_type: 'Ticket'
object: ticket
object: ticket
tags: @tags
)
release: =>
@ -283,6 +290,7 @@ class Widgets extends App.Controller
new TicketInfo(
ticket: ticket
el: @el.find('.ticket_info')
tags: @ui.tags
)
# start customer info controller
@ -299,6 +307,7 @@ class Widgets extends App.Controller
el: @el.find('.link_info')
object_type: 'Ticket'
object: ticket
links: @ui.links
)
# show frontend times

View file

@ -6,7 +6,12 @@ class App.WidgetLink extends App.ControllerDrox
constructor: ->
super
@fetch()
# if links are given, do not init fetch
if @links
@render()
else
@fetch()
fetch: =>
# fetch item on demand

View file

@ -3,6 +3,11 @@ class App.WidgetTag extends App.Controller
super
@attribute_id = 'tags_' + @object.id + '_' + @object_type
if @tags
@render(@tags)
return
tags = App.Store.get( "tags::#{@attribute_id}" )
if tags
@render( tags )

View file

@ -162,6 +162,7 @@ class App.Model extends Spine.Model
attribute[item] = value
attributesNew[ attribute.name ] = attribute
# if no screen is given or no attribute has this screen - use default attributes
if !screen || _.isEmpty( attributesNew )
console.log(attributesNew)
for attribute in attributes
@ -327,8 +328,11 @@ class App.Model extends Spine.Model
# fetch init collection
if param.initFetch is true
@one 'refresh', (collection) =>
@initFetchActive = false
callback(collection)
@fetch( {}, { clear: true } )
if !@initFetchActive
@initFetchActive = true
@fetch( {}, { clear: true } )
# return key
key

View file

@ -279,12 +279,34 @@ class TicketsController < ApplicationController
assets = article.assets(assets)
}
# get links
links = Link.list(
:link_object => 'Ticket',
:link_object_value => ticket.id,
)
link_list = []
links.each { |item|
link_list.push item
if item['link_object'] == 'Ticket'
ticket = Ticket.lookup( :id => item['link_object_value'] )
assets = ticket.assets(assets)
end
}
# get tags
tags = Tag.tag_list(
:object => 'Ticket',
:o_id => ticket.id,
)
# return result
render :json => {
:ticket_id => ticket.id,
:ticket_article_ids => article_ids,
:signature => signature,
:assets => assets,
:links => link_list,
:tags => tags,
:form_meta => attributes_to_change,
:edit_form => attributes_to_change,
}