muruca_widgets 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +20 -0
- data/README.rdoc +12 -0
- data/generators/colorbox/colorbox_generator.rb +21 -0
- data/generators/colorbox/templates/README +10 -0
- data/generators/colorbox/templates/_colorbox.html.erb +10 -0
- data/generators/colorbox/templates/colorbox/colorbox.css +62 -0
- data/generators/colorbox/templates/colorbox/images/border.png +0 -0
- data/generators/colorbox/templates/colorbox/images/controls.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomCenter.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopCenter.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopLeft.png +0 -0
- data/generators/colorbox/templates/colorbox/images/internet_explorer/borderTopRight.png +0 -0
- data/generators/colorbox/templates/colorbox/images/loading.gif +0 -0
- data/generators/colorbox/templates/colorbox/images/loading_background.png +0 -0
- data/generators/colorbox/templates/colorbox/images/overlay.png +0 -0
- data/generators/colorbox/templates/jquery-1.3.2.min.js +19 -0
- data/generators/colorbox/templates/jquery.colorbox.js +698 -0
- data/generators/generator_helpers.rb +17 -0
- data/generators/iip_viewer/iip_viewer_generator.rb +18 -0
- data/generators/iip_viewer/templates/README +8 -0
- data/generators/iip_viewer/templates/_iip_flash_viewer.html.erb +14 -0
- data/generators/iip_viewer/templates/fliipish.swf +0 -0
- data/generators/iip_viewer/templates/iip_flashclient.js +24 -0
- data/generators/iip_viewer/templates/iip_helper.rb +24 -0
- data/generators/iip_viewer/templates/swfobject.js +8 -0
- data/generators/ipod_dropdown/ipod_dropdown_generator.rb +24 -0
- data/generators/ipod_dropdown/templates/README +8 -0
- data/generators/ipod_dropdown/templates/_ipod_dropdown.html.erb +25 -0
- data/generators/ipod_dropdown/templates/fg.menu.js +645 -0
- data/generators/ipod_dropdown/templates/ipod-menu/fg.menu.css +129 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_217bc0_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_2e83ff_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_469bdd_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_6da8d5_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_f9bd01_256x240.png +0 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.accordion.css +9 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.all.css +2 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.base.css +1 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.core.css +37 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.datepicker.css +62 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.dialog.css +13 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.progressbar.css +4 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.resizable.css +13 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.slider.css +17 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.tabs.css +11 -0
- data/generators/ipod_dropdown/templates/ipod-menu/theme/ui.theme.css +247 -0
- data/generators/ipod_dropdown/templates/ipod_dropdown_helper.rb +52 -0
- data/generators/ipod_dropdown/templates/jquery-1.3.2.min.js +19 -0
- data/generators/simile_timeline/simile_timeline_generator.rb +24 -0
- data/generators/simile_timeline/templates/README +8 -0
- data/generators/simile_timeline/templates/_timeline.html.erb +7 -0
- data/generators/simile_timeline/templates/_timeline_include.html.erb +6 -0
- data/generators/simile_timeline/templates/timeline.js +82 -0
- data/generators/simile_timeline/templates/timeline_ajax/content/history.html +7 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-down.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-up.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/bubble-top.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/close-button.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/copy.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/images/message-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_ajax/scripts/signal.js +43 -0
- data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-api.js +212 -0
- data/generators/simile_timeline/templates/timeline_ajax/simile-ajax-bundle.js +2623 -0
- data/generators/simile_timeline/templates/timeline_ajax/styles/graphics-ie6.css +77 -0
- data/generators/simile_timeline/templates/timeline_ajax/styles/graphics.css +171 -0
- data/generators/simile_timeline/templates/timeline_helper.rb +36 -0
- data/generators/simile_timeline/templates/timeline_js/images/blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-bottom.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-left-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-right-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-arrow.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/bubble-top.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/close-button.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/copyright-vertical.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/copyright.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dark-red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-blue-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/dull-red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/gray-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/green-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-bottom-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-bottom-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-top-left.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/message-top-right.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/progress-running.gif +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/red-circle.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/images/top-bubble.png +0 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/labellers.js +30 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/labellers.js +27 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/de/timeline.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/labellers.js +12 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/en/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/es/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/it/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/labellers.js +11 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/labellers.js +10 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/labellers.js +12 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/se/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/labellers.js +8 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/labellers.js +26 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/labellers.js +27 -0
- data/generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/timeline.js +9 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-api.js +280 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-bundle.css +229 -0
- data/generators/simile_timeline/templates/timeline_js/timeline-bundle.js +2835 -0
- data/lib/muruca_widgets.rb +1 -0
- data/lib/timeline.rb +63 -0
- data/lib/timeline_source.rb +211 -0
- data/test/muruca_widgets_test.rb +8 -0
- data/test/test_helper.rb +3 -0
- metadata +213 -0
@@ -0,0 +1 @@
|
|
1
|
+
# MurucaWidgets
|
data/lib/timeline.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'timeline_source'
|
3
|
+
|
4
|
+
# Contains all the data and settings for a single Simile timeline
|
5
|
+
class Timeline
|
6
|
+
|
7
|
+
# The main options that can be given to the timeline are
|
8
|
+
#
|
9
|
+
# [*config*] - The configuration for timeline, including the bands configuration.
|
10
|
+
# This will be directly passed on to timline.js, see there for more
|
11
|
+
# documentation. If no :bands option is given, a default band
|
12
|
+
# is created for the timeline.
|
13
|
+
# [*data*] - A TimelineSource object containing the data for this timeline OR a
|
14
|
+
# hash with the options to create the TimelineSource
|
15
|
+
def initialize(options)
|
16
|
+
raise(ArgumentError, 'Expecting an option hash here.') unless(options.is_a?(Hash))
|
17
|
+
options.to_options!
|
18
|
+
raise(ArgumentError, 'Expecting some data here') unless(options[:data])
|
19
|
+
raise(ArgumentError, 'Expecting the configuration here') unless(options[:config])
|
20
|
+
|
21
|
+
if(options[:data].is_a?(TimelineSource))
|
22
|
+
@data = options[:data]
|
23
|
+
else
|
24
|
+
@data = TimelineSource.new(options[:data])
|
25
|
+
end
|
26
|
+
|
27
|
+
@config = options[:config].to_options
|
28
|
+
@config[:startDate] ||= year_to_iso8601(@data.first_year) if(@data.first_year)
|
29
|
+
@config[:stopDate] ||= year_to_iso8601(@data.last_year) if(@data.last_year)
|
30
|
+
@default_date ||= year_to_iso8601(@data.first_year + ((@data.last_year - @data.first_year) / 2)) if(@data.first_year && @data.last_year)
|
31
|
+
@config[:bands] ||= default_band
|
32
|
+
end
|
33
|
+
|
34
|
+
def timeline_config
|
35
|
+
@config.to_json
|
36
|
+
end
|
37
|
+
|
38
|
+
def timeline_data
|
39
|
+
@data.timeline_data
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def year_to_iso8601(year)
|
45
|
+
year = year.to_i
|
46
|
+
to_iso8601(Date.ordinal(year))
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_iso8601(date)
|
50
|
+
TimelineSource.to_iso8601(date)
|
51
|
+
end
|
52
|
+
|
53
|
+
def default_band
|
54
|
+
[{
|
55
|
+
:width => 70,
|
56
|
+
:intervalUnit => 'DECADE',
|
57
|
+
:intervalPixels => 100,
|
58
|
+
:date => @default_date || '1900-01-01',
|
59
|
+
:layout => 'original'
|
60
|
+
}]
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,211 @@
|
|
1
|
+
require 'talia_core'
|
2
|
+
|
3
|
+
# Creates the json data for a Simile timeline.
|
4
|
+
class TimelineSource
|
5
|
+
|
6
|
+
|
7
|
+
# Create a new timeline source. There are several ways to fill this with data:
|
8
|
+
#
|
9
|
+
# [*raw_data*] The most straightforward method is to pass the :raw_data option which
|
10
|
+
# must contain an array containing each
|
11
|
+
# event on the timeline as a hash. Each event must at least contain the
|
12
|
+
# :start (start date), :title (Event title). Other than that, all,
|
13
|
+
# options that are valid for the simile timeline events will be accepted.
|
14
|
+
#
|
15
|
+
# [*sources*] The :sources option must contain a list of ActiveSource objects.
|
16
|
+
# By default this will try to take the dcns:date property from all objects.
|
17
|
+
#
|
18
|
+
# [*source_finder*] Alternatively, you may pass the :source_finder option. This option should
|
19
|
+
# contain a hash that will be passed into ActiveSource.find(:all)
|
20
|
+
#
|
21
|
+
# Other options that can be used to configure the working of the timeline
|
22
|
+
# data source are:
|
23
|
+
#
|
24
|
+
# [*start_property*] - Only valid with the :sources or :source_finder option.
|
25
|
+
# The class will try to retrieve the start date from this property. If an
|
26
|
+
# ISO 8601 duration is found in the field a duration event is created (unless
|
27
|
+
# an :end_property had been explicitly set). [default: dcns:date]
|
28
|
+
#
|
29
|
+
# [*end_property*] - Take the end date of each event from this property. This will disable the
|
30
|
+
# automatic handling of ISO 8601 durations (see :start_property)
|
31
|
+
#
|
32
|
+
# [*title_property*] - Take the event title from this property. If the title is not found, the
|
33
|
+
# system will try the dcns:label property and if that fails use the
|
34
|
+
# local part of the source URL. This is only valid with the :sources or
|
35
|
+
# :source_finder options. [default: dcns:title]
|
36
|
+
#
|
37
|
+
# [*description_property*] - Take the description of the event from this field. If not found,
|
38
|
+
# the title value is used. This is only valid with the :sources or
|
39
|
+
# :source_finder options. [default: dcns:abstract]
|
40
|
+
#
|
41
|
+
# [*link_property*] - Property to take the link from. By default a link to the element's own URL is created.
|
42
|
+
# This is only valid with the :sources or :source_finder options.
|
43
|
+
#
|
44
|
+
# [*color*] - Default color entry for the events. [default: 'blue']
|
45
|
+
#
|
46
|
+
# [*text_color] - Default text color for the events [default: 'black']
|
47
|
+
#
|
48
|
+
# [*start_year*] - Year that the timeline starts in. If not given, this will automatically be
|
49
|
+
# calculated from the dataset
|
50
|
+
#
|
51
|
+
# [*final_year*] - Last year of the timeline. See :start_year
|
52
|
+
def initialize(options)
|
53
|
+
@events = []
|
54
|
+
@options = process_options(options)
|
55
|
+
|
56
|
+
if(@options[:sources])
|
57
|
+
initialize_from_sources(options[:sources])
|
58
|
+
elsif(@options[:source_finder])
|
59
|
+
sources = TaliaCore::ActiveSource.find(:all, @options[:source_finder])
|
60
|
+
initialize_from_sources(sources)
|
61
|
+
else
|
62
|
+
initialize_from_data(@options[:raw_data])
|
63
|
+
end
|
64
|
+
@first_year = @options[:start_year] if(@options[:start_year])
|
65
|
+
@last_year = @options[:final_year] if(@options[:final_year])
|
66
|
+
end
|
67
|
+
|
68
|
+
def first_year
|
69
|
+
(@first_year || '1900').to_i
|
70
|
+
end
|
71
|
+
|
72
|
+
def last_year
|
73
|
+
(@last_year || '2000').to_i
|
74
|
+
end
|
75
|
+
|
76
|
+
def timeline_data
|
77
|
+
{
|
78
|
+
:dateTimeFormat => 'iso8601',
|
79
|
+
:events => @events
|
80
|
+
}.to_json
|
81
|
+
end
|
82
|
+
|
83
|
+
# Get the iso8601 string for the date
|
84
|
+
def self.to_iso8601(date)
|
85
|
+
return nil unless(date)
|
86
|
+
date.strftime('%Y-%m-%dT%H:%M:%SZ')
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
# Check the options and set them to the default values if necessary
|
92
|
+
def process_options(options)
|
93
|
+
options.to_options!
|
94
|
+
options[:dateTimeFormat] ||= 'iso8601'
|
95
|
+
# Check if we have one data source option given
|
96
|
+
exactly_one_source = options[:sources] ^ options[:source_finder] ^ options[:raw_data]
|
97
|
+
# We could also all three options given - there should be at least one false, d'oh
|
98
|
+
exactly_one_source = (exactly_one_source && (!options[:sources] || !options[:source_finder]))
|
99
|
+
raise(ArgumentError, "Must give exactly one of :raw_data, :sources or :source_finder") unless(exactly_one_source)
|
100
|
+
# Check - we don't want those options for :raw_data
|
101
|
+
if(options[:raw_data])
|
102
|
+
illegal_properties = (options[:start_property] || options[:end_property] || options[:title_property] || options[:description_property] || options[:link_property])
|
103
|
+
raise(ArgumentError, "Illegal options: Must not set property options for :raw_data") if(illegal_properties)
|
104
|
+
else
|
105
|
+
# Otherwise we go with the default if necessary
|
106
|
+
options[:start_property] ||= N::DCNS.date
|
107
|
+
options[:title_property] ||= N::DCNS.title
|
108
|
+
options[:description_property] ||= N::DCNS.abstract
|
109
|
+
end
|
110
|
+
# More defaults
|
111
|
+
options[:color] = 'blue'
|
112
|
+
options[:text_color] = 'black'
|
113
|
+
options
|
114
|
+
end
|
115
|
+
|
116
|
+
# Initializes the data from a pre-existing data array. This mainly converts the dates
|
117
|
+
# and fills in some fields automatically if they don't exist
|
118
|
+
def initialize_from_data(data)
|
119
|
+
data.each do |data_item|
|
120
|
+
raise(ArgumentError, "Illegal element in data #{data_item.inspect}") unless(data.is_a?(Hash))
|
121
|
+
data_item.to_options!
|
122
|
+
raise(ArgumetnError, "Incomplete data element #{data_item.inspect}") unless(data_item[:start] && data_item[:title])
|
123
|
+
# Fill the start and end dates with a normlized iso8106 version of the existing date(s)
|
124
|
+
start_date, end_date = process_timestamp(data_item[:start])
|
125
|
+
end_date = process_timestamp(data_item[:end]).first if(data_item[:end])
|
126
|
+
data_item[:start], data_item[:end] = to_iso8601(start_date), to_iso8601(end_date)
|
127
|
+
update_first_last_year([start_date, end_date]) # Also set the first/last year to a new value
|
128
|
+
data_item[:duration_event] ||= true unless(data_item[:end]) # We have a duration if we have an end date
|
129
|
+
# Auto-fill some other data elements if necessary
|
130
|
+
data_item[:description] ||= data_item[:title]
|
131
|
+
data_item[:color] ||= @options[:color]
|
132
|
+
data_item[:text_color] ||= @options[:text_color]
|
133
|
+
@items << data_item
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
# Reads the data properties from the sources and converts them into a hash that
|
138
|
+
# can be fed into the timeline widget
|
139
|
+
def initialize_from_sources(sources)
|
140
|
+
sources = [sources] unless(sources.is_a?(Array))
|
141
|
+
|
142
|
+
start_predicate = @options[:start_property]
|
143
|
+
end_predicate = @options[:end_property]
|
144
|
+
|
145
|
+
|
146
|
+
first_year = nil
|
147
|
+
last_year = nil
|
148
|
+
|
149
|
+
# Cycle through the sources
|
150
|
+
sources.each do |src|
|
151
|
+
# Ignore all sources that do not have a timestamp
|
152
|
+
next if((stamp = src[start_predicate].first).blank?)
|
153
|
+
new_event = {}
|
154
|
+
|
155
|
+
# Fill the start and end date fields
|
156
|
+
dates = process_timestamp(stamp)
|
157
|
+
# Overwrite the second date if we have a predefined "end" field
|
158
|
+
dates[1] = process_timestamp(src[end_predicate]).first if(end_predicate)
|
159
|
+
new_event[:start], new_event[:end] = dates.collect { |d| to_iso8601(d) }
|
160
|
+
|
161
|
+
update_first_last_year(dates)
|
162
|
+
|
163
|
+
# Fill the title/description fields
|
164
|
+
new_event[:title] = src[@options[:title_property]].first || src[N::RDFS.label].first || N::URI.new(src.uri).to_name_s
|
165
|
+
new_event[:description] = src[@options[:description_property]].first || new_event[:title]
|
166
|
+
# new_event['image'] = ''
|
167
|
+
# The link field may either be filled from a property, or with a link to the element itself (default)
|
168
|
+
new_event[:link] = if(@options[:link_property])
|
169
|
+
src[@options[:link_property]].first || ''
|
170
|
+
else
|
171
|
+
(N::LOCAL + N::URI.new(src.uri).local_name).to_s
|
172
|
+
end
|
173
|
+
# We have a duration event if we have a non-nil end date
|
174
|
+
new_event[:duration_event] = true unless(new_event[:end])
|
175
|
+
# new_event[:icon] = 'red_circle.png'
|
176
|
+
# Colors as defined in the options
|
177
|
+
new_event[:color] = @options[:color]
|
178
|
+
new_event[:textColor] = @options[:text_color]
|
179
|
+
|
180
|
+
new_event.delete(:end) unless(new_event[:end])
|
181
|
+
@events << new_event
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
# Update the first/last year count on this data source
|
186
|
+
def update_first_last_year(dates)
|
187
|
+
first_year = dates.first.year
|
188
|
+
last_year = (dates.last ? dates.last : dates.first).year
|
189
|
+
|
190
|
+
@first_year ||= first_year
|
191
|
+
@last_year ||= (last_year || first_year)
|
192
|
+
@first_year = first_year if(first_year && first_year < @first_year)
|
193
|
+
@last_year = last_year if(last_year && last_year > @last_year)
|
194
|
+
end
|
195
|
+
|
196
|
+
# This processes the given timestamp value and returns an array
|
197
|
+
# of either one or two formatted fields, depending
|
198
|
+
def process_timestamp(value)
|
199
|
+
return nil unless(value)
|
200
|
+
values = value.split('/')
|
201
|
+
result = [ Date.parse(values.first) ]
|
202
|
+
result << Date.parse(values.last) if(values.size > 1)
|
203
|
+
result
|
204
|
+
end
|
205
|
+
|
206
|
+
def to_iso8601(date)
|
207
|
+
TimelineSource.to_iso8601(date)
|
208
|
+
end
|
209
|
+
|
210
|
+
|
211
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
extensions: []
|
3
|
+
|
4
|
+
homepage: http://net7.github.com/muruca_widgets
|
5
|
+
executables: []
|
6
|
+
|
7
|
+
version: !ruby/object:Gem::Version
|
8
|
+
version: 0.1.0
|
9
|
+
post_install_message:
|
10
|
+
date: 2009-11-17 23:00:00 +00:00
|
11
|
+
files:
|
12
|
+
- generators/colorbox/colorbox_generator.rb
|
13
|
+
- generators/colorbox/templates/README
|
14
|
+
- generators/colorbox/templates/_colorbox.html.erb
|
15
|
+
- generators/colorbox/templates/colorbox/colorbox.css
|
16
|
+
- generators/colorbox/templates/colorbox/images/border.png
|
17
|
+
- generators/colorbox/templates/colorbox/images/controls.png
|
18
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomCenter.png
|
19
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomLeft.png
|
20
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderBottomRight.png
|
21
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleLeft.png
|
22
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderMiddleRight.png
|
23
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderTopCenter.png
|
24
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderTopLeft.png
|
25
|
+
- generators/colorbox/templates/colorbox/images/internet_explorer/borderTopRight.png
|
26
|
+
- generators/colorbox/templates/colorbox/images/loading.gif
|
27
|
+
- generators/colorbox/templates/colorbox/images/loading_background.png
|
28
|
+
- generators/colorbox/templates/colorbox/images/overlay.png
|
29
|
+
- generators/colorbox/templates/jquery-1.3.2.min.js
|
30
|
+
- generators/colorbox/templates/jquery.colorbox.js
|
31
|
+
- generators/generator_helpers.rb
|
32
|
+
- generators/iip_viewer/iip_viewer_generator.rb
|
33
|
+
- generators/iip_viewer/templates/README
|
34
|
+
- generators/iip_viewer/templates/_iip_flash_viewer.html.erb
|
35
|
+
- generators/iip_viewer/templates/fliipish.swf
|
36
|
+
- generators/iip_viewer/templates/iip_flashclient.js
|
37
|
+
- generators/iip_viewer/templates/iip_helper.rb
|
38
|
+
- generators/iip_viewer/templates/swfobject.js
|
39
|
+
- generators/ipod_dropdown/ipod_dropdown_generator.rb
|
40
|
+
- generators/ipod_dropdown/templates/README
|
41
|
+
- generators/ipod_dropdown/templates/_ipod_dropdown.html.erb
|
42
|
+
- generators/ipod_dropdown/templates/fg.menu.js
|
43
|
+
- generators/ipod_dropdown/templates/ipod-menu/fg.menu.css
|
44
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_0_aaaaaa_40x100.png
|
45
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_flat_55_fbec88_40x100.png
|
46
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_75_d0e5f5_1x400.png
|
47
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_85_dfeffc_1x400.png
|
48
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_glass_95_fef1ec_1x400.png
|
49
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
|
50
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
|
51
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
|
52
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_217bc0_256x240.png
|
53
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_2e83ff_256x240.png
|
54
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_469bdd_256x240.png
|
55
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_6da8d5_256x240.png
|
56
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_cd0a0a_256x240.png
|
57
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_d8e7f3_256x240.png
|
58
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/images/ui-icons_f9bd01_256x240.png
|
59
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.accordion.css
|
60
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.all.css
|
61
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.base.css
|
62
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.core.css
|
63
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.datepicker.css
|
64
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.dialog.css
|
65
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.progressbar.css
|
66
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.resizable.css
|
67
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.slider.css
|
68
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.tabs.css
|
69
|
+
- generators/ipod_dropdown/templates/ipod-menu/theme/ui.theme.css
|
70
|
+
- generators/ipod_dropdown/templates/ipod_dropdown_helper.rb
|
71
|
+
- generators/ipod_dropdown/templates/jquery-1.3.2.min.js
|
72
|
+
- generators/simile_timeline/simile_timeline_generator.rb
|
73
|
+
- generators/simile_timeline/templates/README
|
74
|
+
- generators/simile_timeline/templates/_timeline.html.erb
|
75
|
+
- generators/simile_timeline/templates/_timeline_include.html.erb
|
76
|
+
- generators/simile_timeline/templates/timeline.js
|
77
|
+
- generators/simile_timeline/templates/timeline_ajax/content/history.html
|
78
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-down.png
|
79
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-left.png
|
80
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-right.png
|
81
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-arrow-point-up.png
|
82
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-left.png
|
83
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom-right.png
|
84
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-bottom.png
|
85
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-left.png
|
86
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-right.png
|
87
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-top-left.png
|
88
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-top-right.png
|
89
|
+
- generators/simile_timeline/templates/timeline_ajax/images/bubble-top.png
|
90
|
+
- generators/simile_timeline/templates/timeline_ajax/images/close-button.png
|
91
|
+
- generators/simile_timeline/templates/timeline_ajax/images/copy.png
|
92
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-bottom-left.png
|
93
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-bottom-right.png
|
94
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-left.png
|
95
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-right.png
|
96
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-top-left.png
|
97
|
+
- generators/simile_timeline/templates/timeline_ajax/images/message-top-right.png
|
98
|
+
- generators/simile_timeline/templates/timeline_ajax/scripts/signal.js
|
99
|
+
- generators/simile_timeline/templates/timeline_ajax/simile-ajax-api.js
|
100
|
+
- generators/simile_timeline/templates/timeline_ajax/simile-ajax-bundle.js
|
101
|
+
- generators/simile_timeline/templates/timeline_ajax/styles/graphics-ie6.css
|
102
|
+
- generators/simile_timeline/templates/timeline_ajax/styles/graphics.css
|
103
|
+
- generators/simile_timeline/templates/timeline_helper.rb
|
104
|
+
- generators/simile_timeline/templates/timeline_js/images/blue-circle.png
|
105
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-bottom-arrow.png
|
106
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-bottom-left.png
|
107
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-bottom-right.png
|
108
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-bottom.png
|
109
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-left-arrow.png
|
110
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-left.png
|
111
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-right-arrow.png
|
112
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-right.png
|
113
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-top-arrow.png
|
114
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-top-left.png
|
115
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-top-right.png
|
116
|
+
- generators/simile_timeline/templates/timeline_js/images/bubble-top.png
|
117
|
+
- generators/simile_timeline/templates/timeline_js/images/close-button.png
|
118
|
+
- generators/simile_timeline/templates/timeline_js/images/copyright-vertical.png
|
119
|
+
- generators/simile_timeline/templates/timeline_js/images/copyright.png
|
120
|
+
- generators/simile_timeline/templates/timeline_js/images/dark-blue-circle.png
|
121
|
+
- generators/simile_timeline/templates/timeline_js/images/dark-green-circle.png
|
122
|
+
- generators/simile_timeline/templates/timeline_js/images/dark-red-circle.png
|
123
|
+
- generators/simile_timeline/templates/timeline_js/images/dull-blue-circle.png
|
124
|
+
- generators/simile_timeline/templates/timeline_js/images/dull-green-circle.png
|
125
|
+
- generators/simile_timeline/templates/timeline_js/images/dull-red-circle.png
|
126
|
+
- generators/simile_timeline/templates/timeline_js/images/gray-circle.png
|
127
|
+
- generators/simile_timeline/templates/timeline_js/images/green-circle.png
|
128
|
+
- generators/simile_timeline/templates/timeline_js/images/message-bottom-left.png
|
129
|
+
- generators/simile_timeline/templates/timeline_js/images/message-bottom-right.png
|
130
|
+
- generators/simile_timeline/templates/timeline_js/images/message-left.png
|
131
|
+
- generators/simile_timeline/templates/timeline_js/images/message-right.png
|
132
|
+
- generators/simile_timeline/templates/timeline_js/images/message-top-left.png
|
133
|
+
- generators/simile_timeline/templates/timeline_js/images/message-top-right.png
|
134
|
+
- generators/simile_timeline/templates/timeline_js/images/progress-running.gif
|
135
|
+
- generators/simile_timeline/templates/timeline_js/images/red-circle.png
|
136
|
+
- generators/simile_timeline/templates/timeline_js/images/top-bubble.png
|
137
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/labellers.js
|
138
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/cs/timeline.js
|
139
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/de/labellers.js
|
140
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/de/timeline.js
|
141
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/en/labellers.js
|
142
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/en/timeline.js
|
143
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/es/labellers.js
|
144
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/es/timeline.js
|
145
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/labellers.js
|
146
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/fr/timeline.js
|
147
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/it/labellers.js
|
148
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/it/timeline.js
|
149
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/labellers.js
|
150
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/nl/timeline.js
|
151
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/labellers.js
|
152
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/ru/timeline.js
|
153
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/se/labellers.js
|
154
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/se/timeline.js
|
155
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/labellers.js
|
156
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/tr/timeline.js
|
157
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/labellers.js
|
158
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/vi/timeline.js
|
159
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/labellers.js
|
160
|
+
- generators/simile_timeline/templates/timeline_js/scripts/l10n/zh/timeline.js
|
161
|
+
- generators/simile_timeline/templates/timeline_js/timeline-api.js
|
162
|
+
- generators/simile_timeline/templates/timeline_js/timeline-bundle.css
|
163
|
+
- generators/simile_timeline/templates/timeline_js/timeline-bundle.js
|
164
|
+
- lib/muruca_widgets.rb
|
165
|
+
- lib/timeline.rb
|
166
|
+
- lib/timeline_source.rb
|
167
|
+
- LICENSE
|
168
|
+
- README.rdoc
|
169
|
+
rubygems_version: 1.3.5
|
170
|
+
rdoc_options:
|
171
|
+
- --charset=UTF-8
|
172
|
+
signing_key:
|
173
|
+
cert_chain: []
|
174
|
+
|
175
|
+
name: muruca_widgets
|
176
|
+
has_rdoc: true
|
177
|
+
platform: ruby
|
178
|
+
summary: Additional interface elements for Muruca Sites.
|
179
|
+
default_executable:
|
180
|
+
bindir: bin
|
181
|
+
licenses: []
|
182
|
+
|
183
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
|
+
version:
|
185
|
+
requirements:
|
186
|
+
- - '>='
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: "0"
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
+
version:
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: "0"
|
195
|
+
require_paths:
|
196
|
+
- lib
|
197
|
+
specification_version: 3
|
198
|
+
test_files:
|
199
|
+
- test/muruca_widgets_test.rb
|
200
|
+
- test/test_helper.rb
|
201
|
+
dependencies: []
|
202
|
+
|
203
|
+
description: Some additional interface elements to be used on Muruca sites.
|
204
|
+
email: ghub@limitedcreativity.org
|
205
|
+
authors:
|
206
|
+
- Daniel Hahn
|
207
|
+
extra_rdoc_files:
|
208
|
+
- LICENSE
|
209
|
+
- README.rdoc
|
210
|
+
requirements: []
|
211
|
+
|
212
|
+
rubyforge_project:
|
213
|
+
autorequire:
|