Big initialization rework in order to be able to facilitate preloaded backend settings
This commit is contained in:
@@ -3,9 +3,25 @@ import config from 'ember-get-config'
|
||||
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin'
|
||||
|
||||
export default Ember.Mixin.create ApplicationRouteMixin,
|
||||
current_user_loaded: (user) ->
|
||||
current_user_loaded: (user) -> @get('initial_resources_resolve')(user)
|
||||
beforeModel: (transition) ->
|
||||
@_loadCurrentUser arguments... unless transition?.targetName is 'login'
|
||||
@set 'router.globals.initial_resources_fulfilled', false
|
||||
time_now = new Date()
|
||||
console.log "Application beforeModel"
|
||||
initial_resources_loaded = new Ember.RSVP.Promise((resolve, reject) =>
|
||||
@set 'initial_resources_resolve', resolve
|
||||
@set 'initial_resources_reject', reject
|
||||
).then((resources) =>
|
||||
console.log "Initial resources loaded (#{Math.round((new Date() - time_now) / 100) / 10}s)" # rounded devide by 1000
|
||||
@set 'router.globals.initial_resources_fulfilled', true
|
||||
).catch((reason) =>
|
||||
console.log "No initial resource loading (#{Math.round((new Date() - time_now) / 100) / 10}s)" # rounded devide by 1000
|
||||
@set('router.globals.flash_message', reason) if reason
|
||||
).finally -> Ember.$('#initial-loader').remove()
|
||||
|
||||
@set 'initial_resources_loaded_promise', initial_resources_loaded
|
||||
@_loadCurrentUser arguments...
|
||||
initial_resources_loaded
|
||||
|
||||
sessionAuthenticated: ->
|
||||
@_super arguments...
|
||||
@@ -13,13 +29,15 @@ export default Ember.Mixin.create ApplicationRouteMixin,
|
||||
|
||||
_loadCurrentUser: (transition) ->
|
||||
#if userId = @get('session.data.authenticated.user_id')
|
||||
return if transition?.targetName is 'login'
|
||||
if transition?.targetName is 'login' # don't load current user on login page
|
||||
@get('initial_resources_reject')('Please login')
|
||||
return
|
||||
@get('store').queryRecord('user', me: true).then (user) =>
|
||||
@set 'router.globals.current_user', user
|
||||
@current_user_loaded user # overloadable
|
||||
, =>
|
||||
@set 'router.globals.current_user', null
|
||||
#@transitionTo('login').then (loginRoute) -> loginRoute.set('router.globals.flash.notice', 'Please login')
|
||||
#@get('initial_resources_reject')('Unauthenticated user')
|
||||
@transitionTo('login')
|
||||
|
||||
actions:
|
||||
|
||||
@@ -7,8 +7,10 @@ export default PagedRemoteArray.extend
|
||||
#params: {}
|
||||
session: Ember.inject.service()
|
||||
filters: {}
|
||||
scope_key: null
|
||||
init: ->
|
||||
query = @get('filters')?.toProperties() || {}
|
||||
@set 'scope_key', get(@, 'modelName') unless get(@, 'scope_key')
|
||||
@otherParams ||= {}
|
||||
@otherParams['q'] = query
|
||||
#@setOtherParam('q', query) # explicitly not, init does not trigger operational callbacks
|
||||
@@ -29,9 +31,9 @@ export default PagedRemoteArray.extend
|
||||
|
||||
postRequest: (action_name, data = {}) ->
|
||||
container = Ember.getOwner(@store)
|
||||
adapter = @store.adapterFor(@modelName)
|
||||
adapter = @store.adapterFor(get(@, 'modelName'))
|
||||
session = container.lookup('service:session')
|
||||
base_url = adapter.buildURL(@modelName)
|
||||
base_url = adapter.buildURL(get(@, 'modelName'))
|
||||
url = "#{base_url}/#{action_name}"
|
||||
request_data = data
|
||||
request_data = JSON.stringify(data) if typeof data is 'object'
|
||||
|
||||
@@ -4,14 +4,15 @@ export default Ember.Component.extend
|
||||
#filter_calls: 0
|
||||
tagName: 'tr'
|
||||
classNames: ['table-filters-row', 'ui', 'form']
|
||||
filters: Ember.Object.create()
|
||||
filters: null
|
||||
content: null # PagedRemoteArray from ember-cli-pagination
|
||||
key: 'name_eq'
|
||||
apply_filters: null # allow custom apply filters with application logic
|
||||
|
||||
init: ->
|
||||
@_super arguments...
|
||||
@set 'filters', @get('content.filters') unless @get('filters')
|
||||
Ember.defineProperty @, 'filter_calls', Ember.computed.alias("filters.filter_calls")
|
||||
@_super arguments...
|
||||
|
||||
actions:
|
||||
apply_filters: ->
|
||||
|
||||
@@ -4,6 +4,7 @@ export default Ember.Component.extend
|
||||
tagName: 'th'
|
||||
classNames: ['filter', 'filter-dropdown-select-multiple']
|
||||
classNameBindings: ['has_active_filter_value:active-filter', 'key']
|
||||
filters: null
|
||||
apply_filters: ->
|
||||
eager_filter: false # filter on single select
|
||||
has_active_filter_value: Ember.computed.bool 'selected.length'
|
||||
|
||||
@@ -14,15 +14,14 @@
|
||||
.ui.floating.info.message
|
||||
i.close.icon{action (mut globals.flash.notice) ''}
|
||||
= globals.flash.notice
|
||||
= outlet
|
||||
/if globals.preload_resources_fulfilled
|
||||
/ = outlet
|
||||
/else
|
||||
/ .ui.icon.message
|
||||
/ i.notched.circle.loading.icon
|
||||
/ .content
|
||||
/ .header Preloading resources...
|
||||
/ p Loading resources globally required before continuing with the application.
|
||||
if globals.initial_resources_fulfilled
|
||||
= outlet
|
||||
else
|
||||
.ui.icon.message
|
||||
i.notched.circle.loading.icon
|
||||
.content
|
||||
.header Initial resources not loaded...
|
||||
p Loading resources globally required before continuing with the application.
|
||||
/button.basic.button{ action 'debug'} debug
|
||||
= outlet 'modal'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user