mirror of
https://github.com/wassname/side-by-side.git
synced 2026-09-20 13:20:48 +08:00
44 lines
896 B
CoffeeScript
44 lines
896 B
CoffeeScript
angular.module("sideBySide").service "poems", ['fetch', (fetch) ->
|
|
@all = [{
|
|
meta: {
|
|
Active: true
|
|
Loading: "Loading"
|
|
}
|
|
content: [{
|
|
section: 'Loading...'
|
|
text: 'Please be patient!'
|
|
}]
|
|
}]
|
|
@heading = undefined
|
|
|
|
# Get active poems
|
|
#
|
|
# @return [Array] Active poems
|
|
@getActive = () ->
|
|
(poem for poem in @all when poem.meta.Active is true)
|
|
|
|
# Activize poem based on passed rules
|
|
#
|
|
# @param poem [Object]
|
|
# @param active [Object] { meta: [ 'active', 'values' ] }
|
|
# @return poem
|
|
activize = (poem, active) ->
|
|
poem.meta.Active = true if !active
|
|
|
|
for metaKey,values of active
|
|
poem.meta.Active = true if poem.meta[metaKey] in values
|
|
|
|
poem
|
|
|
|
# Load poems
|
|
#
|
|
# @param base [String]
|
|
@load = (base) =>
|
|
fetch(base).then (config) =>
|
|
config.fetchPoems.then (poems) =>
|
|
@all = (activize(poem, config.active) for poem in poems)
|
|
@heading = config.heading
|
|
|
|
@
|
|
]
|