active_scaffold 3.5.2 → 3.6.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{CHANGELOG → CHANGELOG.rdoc} +66 -0
- data/README.md +17 -7
- data/app/assets/javascripts/active_scaffold.js.erb +0 -1
- data/app/assets/javascripts/jquery/active_scaffold.js +63 -6
- data/app/assets/stylesheets/active_scaffold_colors.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_layout.css +52 -29
- data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +3 -2
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list_header.html.erb +5 -7
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_list_record.html.erb +4 -5
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +4 -0
- data/app/views/active_scaffold_overrides/_render_field.js.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_association_horizontal.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_show_horizontal_record.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_column.js.erb +2 -2
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +2 -2
- data/app/views/active_scaffold_overrides/delete.html.erb +2 -2
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +16 -6
- data/app/views/active_scaffold_overrides/on_update.js.erb +1 -1
- data/app/views/active_scaffold_overrides/row.js.erb +1 -1
- data/app/views/active_scaffold_overrides/update_column.js.erb +1 -1
- data/config/locales/de.yml +2 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/hu.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/lib/active_scaffold.rb +19 -16
- data/lib/active_scaffold/actions/common_search.rb +11 -8
- data/lib/active_scaffold/actions/core.rb +89 -71
- data/lib/active_scaffold/actions/create.rb +28 -28
- data/lib/active_scaffold/actions/delete.rb +3 -3
- data/lib/active_scaffold/actions/field_search.rb +53 -43
- data/lib/active_scaffold/actions/list.rb +111 -27
- data/lib/active_scaffold/actions/nested.rb +65 -48
- data/lib/active_scaffold/actions/search.rb +1 -1
- data/lib/active_scaffold/actions/show.rb +4 -4
- data/lib/active_scaffold/actions/subform.rb +12 -17
- data/lib/active_scaffold/actions/update.rb +96 -77
- data/lib/active_scaffold/active_record_permissions.rb +2 -11
- data/lib/active_scaffold/attribute_params.rb +104 -86
- data/lib/active_scaffold/bridges.rb +8 -8
- data/lib/active_scaffold/bridges/active_storage.rb +6 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_bridge.rb +33 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +54 -0
- data/lib/active_scaffold/bridges/active_storage/form_ui.rb +22 -0
- data/lib/active_scaffold/bridges/active_storage/list_ui.rb +36 -0
- data/lib/active_scaffold/bridges/bitfields.rb +1 -0
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +12 -15
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +9 -12
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +2 -2
- data/lib/active_scaffold/bridges/chosen/helpers.rb +11 -9
- data/lib/active_scaffold/bridges/date_picker/ext.rb +0 -13
- data/lib/active_scaffold/bridges/date_picker/helper.rb +49 -44
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +10 -7
- data/lib/active_scaffold/bridges/paper_trail.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +2 -2
- data/lib/active_scaffold/bridges/record_select/helpers.rb +12 -16
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -19
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -1
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +21 -4
- data/lib/active_scaffold/config/base.rb +133 -41
- data/lib/active_scaffold/config/core.rb +146 -18
- data/lib/active_scaffold/config/delete.rb +14 -1
- data/lib/active_scaffold/config/field_search.rb +7 -1
- data/lib/active_scaffold/config/form.rb +10 -1
- data/lib/active_scaffold/config/list.rb +39 -13
- data/lib/active_scaffold/config/mark.rb +4 -2
- data/lib/active_scaffold/config/nested.rb +16 -17
- data/lib/active_scaffold/config/search.rb +9 -0
- data/lib/active_scaffold/config/show.rb +4 -0
- data/lib/active_scaffold/config/update.rb +4 -0
- data/lib/active_scaffold/configurable.rb +14 -7
- data/lib/active_scaffold/constraints.rb +22 -20
- data/lib/active_scaffold/core.rb +68 -29
- data/lib/active_scaffold/data_structures/action_columns.rb +50 -59
- data/lib/active_scaffold/data_structures/action_link.rb +50 -20
- data/lib/active_scaffold/data_structures/action_links.rb +15 -13
- data/lib/active_scaffold/data_structures/association/abstract.rb +41 -15
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +2 -6
- data/lib/active_scaffold/data_structures/association/active_record.rb +6 -2
- data/lib/active_scaffold/data_structures/association/mongoid.rb +0 -3
- data/lib/active_scaffold/data_structures/column.rb +75 -66
- data/lib/active_scaffold/data_structures/columns.rb +3 -2
- data/lib/active_scaffold/data_structures/nested_info.rb +21 -19
- data/lib/active_scaffold/data_structures/set.rb +8 -0
- data/lib/active_scaffold/data_structures/sorting.rb +10 -2
- data/lib/active_scaffold/delayed_setup.rb +16 -5
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +3 -2
- data/lib/active_scaffold/extensions/action_view_rendering.rb +34 -14
- data/lib/active_scaffold/extensions/cow_proxy.rb +91 -0
- data/lib/active_scaffold/extensions/ice_nine.rb +36 -0
- data/lib/active_scaffold/extensions/left_outer_joins.rb +8 -33
- data/lib/active_scaffold/extensions/localize.rb +3 -1
- data/lib/active_scaffold/extensions/routing_mapper.rb +6 -45
- data/lib/active_scaffold/extensions/to_label.rb +3 -2
- data/lib/active_scaffold/extensions/unsaved_record.rb +2 -4
- data/lib/active_scaffold/finder.rb +104 -73
- data/lib/active_scaffold/helpers/action_link_helpers.rb +62 -36
- data/lib/active_scaffold/helpers/association_helpers.rb +21 -19
- data/lib/active_scaffold/helpers/controller_helpers.rb +23 -10
- data/lib/active_scaffold/helpers/form_column_helpers.rb +157 -121
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/id_helpers.rb +6 -2
- data/lib/active_scaffold/helpers/list_column_helpers.rb +82 -53
- data/lib/active_scaffold/helpers/pagination_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/search_column_helpers.rb +29 -34
- data/lib/active_scaffold/helpers/show_column_helpers.rb +3 -5
- data/lib/active_scaffold/helpers/view_helpers.rb +38 -35
- data/lib/active_scaffold/marked_model.rb +2 -2
- data/lib/active_scaffold/orm_checks.rb +3 -7
- data/lib/active_scaffold/paginator.rb +7 -7
- data/lib/active_scaffold/registry.rb +33 -0
- data/lib/active_scaffold/responds_to_parent.rb +8 -11
- data/lib/active_scaffold/tableless.rb +67 -65
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/generators/active_scaffold/controller_generator.rb +2 -2
- data/lib/generators/active_scaffold/install_generator.rb +1 -1
- data/lib/generators/active_scaffold/resource_generator.rb +2 -2
- data/shoulda_macros/macros.rb +3 -1
- data/test/bridges/date_picker_test.rb +1 -2
- data/test/bridges/paperclip_test.rb +6 -6
- data/test/class_with_finder.rb +2 -2
- data/test/company.rb +4 -4
- data/test/config/create_test.rb +4 -2
- data/test/config/nested_test.rb +1 -1
- data/test/config/show_test.rb +1 -1
- data/test/config/update_test.rb +7 -6
- data/test/data_structures/action_columns_test.rb +2 -2
- data/test/data_structures/action_links_test.rb +1 -1
- data/test/data_structures/column_test.rb +3 -6
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/sorting_test.rb +7 -0
- data/test/extensions/active_record_test.rb +4 -4
- data/test/extensions/routing_mapper_test.rb +2 -2
- data/test/helpers/list_column_helpers_test.rb +3 -1
- data/test/misc/active_record_permissions_test.rb +3 -11
- data/test/misc/attribute_params_test.rb +12 -8
- data/test/misc/calculation_test.rb +1 -1
- data/test/misc/configurable_test.rb +10 -10
- data/test/misc/constraints_test.rb +2 -2
- data/test/misc/convert_numbers_format_test.rb +7 -3
- data/test/misc/lang_test.rb +1 -1
- data/test/misc/parse_datetime_test.rb +3 -4
- data/test/misc/tableless_test.rb +6 -0
- data/test/mock_app/Rakefile +1 -1
- data/test/mock_app/app/assets/config/manifest.js +0 -0
- data/test/mock_app/app/controllers/cars_controller.rb +1 -0
- data/test/mock_app/app/controllers/people_controller.rb +3 -1
- data/test/mock_app/config/application.rb +2 -1
- data/test/mock_app/config/boot.rb +1 -1
- data/test/mock_app/config/environment.rb +2 -2
- data/test/mock_app/config/routes.rb +4 -1
- data/test/mock_app/db/schema.rb +2 -0
- data/test/performance/list_cars_performance_test.rb +34 -0
- data/test/performance/list_people_performance_test.rb +31 -0
- data/test/performance_test_help.rb +3 -0
- data/test/test_helper.rb +10 -2
- metadata +56 -15
- data/app/assets/javascripts/prototype/rico_corner.js +0 -370
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +0 -7
@@ -1,370 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
*
|
3
|
-
* Copyright 2005 Sabre Airline Solutions
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
6
|
-
* file except in compliance with the License. You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software distributed under the
|
11
|
-
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
12
|
-
* either express or implied. See the License for the specific language governing permissions
|
13
|
-
* and limitations under the License.
|
14
|
-
**/
|
15
|
-
|
16
|
-
|
17
|
-
//-------------------- rico.js
|
18
|
-
var Rico = {
|
19
|
-
Version: '1.1.0',
|
20
|
-
prototypeVersion: parseFloat(Prototype.Version.split(".")[0] + "." + Prototype.Version.split(".")[1])
|
21
|
-
}
|
22
|
-
|
23
|
-
//-------------------- ricoColor.js
|
24
|
-
Rico.Color = Class.create();
|
25
|
-
|
26
|
-
Rico.Color.prototype = {
|
27
|
-
|
28
|
-
initialize: function(red, green, blue) {
|
29
|
-
this.rgb = { r: red, g : green, b : blue };
|
30
|
-
},
|
31
|
-
|
32
|
-
blend: function(other) {
|
33
|
-
this.rgb.r = Math.floor((this.rgb.r + other.rgb.r)/2);
|
34
|
-
this.rgb.g = Math.floor((this.rgb.g + other.rgb.g)/2);
|
35
|
-
this.rgb.b = Math.floor((this.rgb.b + other.rgb.b)/2);
|
36
|
-
},
|
37
|
-
|
38
|
-
asRGB: function() {
|
39
|
-
return "rgb(" + this.rgb.r + "," + this.rgb.g + "," + this.rgb.b + ")";
|
40
|
-
},
|
41
|
-
|
42
|
-
asHex: function() {
|
43
|
-
return "#" + this.rgb.r.toColorPart() + this.rgb.g.toColorPart() + this.rgb.b.toColorPart();
|
44
|
-
},
|
45
|
-
|
46
|
-
asHSB: function() {
|
47
|
-
return Rico.Color.RGBtoHSB(this.rgb.r, this.rgb.g, this.rgb.b);
|
48
|
-
},
|
49
|
-
|
50
|
-
toString: function() {
|
51
|
-
return this.asHex();
|
52
|
-
}
|
53
|
-
|
54
|
-
};
|
55
|
-
|
56
|
-
Rico.Color.createFromHex = function(hexCode) {
|
57
|
-
if(hexCode.length==4) {
|
58
|
-
var shortHexCode = hexCode;
|
59
|
-
var hexCode = '#';
|
60
|
-
for(var i=1;i<4;i++) hexCode += (shortHexCode.charAt(i) + shortHexCode.charAt(i));
|
61
|
-
}
|
62
|
-
if ( hexCode.indexOf('#') == 0 )
|
63
|
-
hexCode = hexCode.substring(1);
|
64
|
-
var red = hexCode.substring(0,2);
|
65
|
-
var green = hexCode.substring(2,4);
|
66
|
-
var blue = hexCode.substring(4,6);
|
67
|
-
return new Rico.Color( parseInt(red,16), parseInt(green,16), parseInt(blue,16) );
|
68
|
-
}
|
69
|
-
|
70
|
-
/**
|
71
|
-
* Factory method for creating a color from the background of
|
72
|
-
* an HTML element.
|
73
|
-
*/
|
74
|
-
Rico.Color.createColorFromBackground = function(elem) {
|
75
|
-
|
76
|
-
//var actualColor = RicoUtil.getElementsComputedStyle($(elem), "backgroundColor", "background-color"); // Changed to prototype style
|
77
|
-
var actualColor = $(elem).getStyle('backgroundColor');
|
78
|
-
|
79
|
-
if ( actualColor == "transparent" && elem.parentNode )
|
80
|
-
return Rico.Color.createColorFromBackground(elem.parentNode);
|
81
|
-
|
82
|
-
if ( actualColor == null )
|
83
|
-
return new Rico.Color(255,255,255);
|
84
|
-
|
85
|
-
if ( actualColor.indexOf("rgb(") == 0 ) {
|
86
|
-
var colors = actualColor.substring(4, actualColor.length - 1 );
|
87
|
-
var colorArray = colors.split(",");
|
88
|
-
return new Rico.Color( parseInt( colorArray[0] ),
|
89
|
-
parseInt( colorArray[1] ),
|
90
|
-
parseInt( colorArray[2] ) );
|
91
|
-
|
92
|
-
}
|
93
|
-
else if ( actualColor.indexOf("#") == 0 ) {
|
94
|
-
return Rico.Color.createFromHex(actualColor);
|
95
|
-
}
|
96
|
-
else
|
97
|
-
return new Rico.Color(255,255,255);
|
98
|
-
}
|
99
|
-
|
100
|
-
/* next two functions changed to mootools color.js functions */
|
101
|
-
Rico.Color.HSBtoRGB = function(hue, saturation, brightness) {
|
102
|
-
|
103
|
-
var br = Math.round(brightness / 100 * 255);
|
104
|
-
if (this[1] == 0){
|
105
|
-
return [br, br, br];
|
106
|
-
} else {
|
107
|
-
var hue = this[0] % 360;
|
108
|
-
var f = hue % 60;
|
109
|
-
var p = Math.round((brightness * (100 - saturation)) / 10000 * 255);
|
110
|
-
var q = Math.round((brightness * (6000 - saturation * f)) / 600000 * 255);
|
111
|
-
var t = Math.round((brightness * (6000 - saturation * (60 - f))) / 600000 * 255);
|
112
|
-
switch(Math.floor(hue / 60)){
|
113
|
-
case 0: return { r : br, g : t, b : p };
|
114
|
-
case 1: return { r : q, g : br, b : p };
|
115
|
-
case 2: return { r : p, g : br, b : t };
|
116
|
-
case 3: return { r : p, g : q, b : br };
|
117
|
-
case 4: return { r : t, g : p, b : br };
|
118
|
-
case 5: return { r : br, g : p, b : q };
|
119
|
-
}
|
120
|
-
}
|
121
|
-
return false;
|
122
|
-
}
|
123
|
-
|
124
|
-
Rico.Color.RGBtoHSB = function(red, green, blue) {
|
125
|
-
var hue, saturation, brightness;
|
126
|
-
var max = Math.max(red, green, blue), min = Math.min(red, green, blue);
|
127
|
-
var delta = max - min;
|
128
|
-
brightness = max / 255;
|
129
|
-
saturation = (max != 0) ? delta / max : 0;
|
130
|
-
if (saturation == 0){
|
131
|
-
hue = 0;
|
132
|
-
} else {
|
133
|
-
var rr = (max - red) / delta;
|
134
|
-
var gr = (max - green) / delta;
|
135
|
-
var br = (max - blue) / delta;
|
136
|
-
if (red == max) hue = br - gr;
|
137
|
-
else if (green == max) hue = 2 + rr - br;
|
138
|
-
else hue = 4 + gr - rr;
|
139
|
-
hue /= 6;
|
140
|
-
if (hue < 0) hue++;
|
141
|
-
}
|
142
|
-
return { h : Math.round(hue * 360), s : Math.round(saturation * 100), b : Math.round(brightness * 100)};
|
143
|
-
}
|
144
|
-
|
145
|
-
|
146
|
-
//-------------------- ricoCorner.js
|
147
|
-
Rico.Corner = {
|
148
|
-
|
149
|
-
round: function(e, options) {
|
150
|
-
var e = $(e);
|
151
|
-
this._setOptions(options);
|
152
|
-
|
153
|
-
var color = this.options.color;
|
154
|
-
if ( this.options.color == "fromElement" )
|
155
|
-
color = this._background(e);
|
156
|
-
|
157
|
-
var bgColor = this.options.bgColor;
|
158
|
-
if ( this.options.bgColor == "fromParent" )
|
159
|
-
bgColor = this._background(e.offsetParent);
|
160
|
-
|
161
|
-
this._roundCornersImpl(e, color, bgColor);
|
162
|
-
},
|
163
|
-
|
164
|
-
_roundCornersImpl: function(e, color, bgColor) {
|
165
|
-
if(this.options.border)
|
166
|
-
this._renderBorder(e,bgColor);
|
167
|
-
if(this._isTopRounded())
|
168
|
-
this._roundTopCorners(e,color,bgColor);
|
169
|
-
if(this._isBottomRounded())
|
170
|
-
this._roundBottomCorners(e,color,bgColor);
|
171
|
-
},
|
172
|
-
|
173
|
-
_renderBorder: function(el,bgColor) {
|
174
|
-
var borderValue = "1px solid " + this._borderColor(bgColor);
|
175
|
-
var borderL = "border-left: " + borderValue;
|
176
|
-
var borderR = "border-right: " + borderValue;
|
177
|
-
var style = "style='" + borderL + ";" + borderR + "'";
|
178
|
-
el.innerHTML = "<div " + style + ">" + el.innerHTML + "</div>"
|
179
|
-
},
|
180
|
-
|
181
|
-
_roundTopCorners: function(el, color, bgColor) {
|
182
|
-
var corner = this._createCorner(bgColor);
|
183
|
-
for(var i=0 ; i < this.options.numSlices ; i++ )
|
184
|
-
corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));
|
185
|
-
el.style.paddingTop = 0;
|
186
|
-
el.insertBefore(corner,el.firstChild);
|
187
|
-
},
|
188
|
-
|
189
|
-
_roundBottomCorners: function(el, color, bgColor) {
|
190
|
-
var corner = this._createCorner(bgColor);
|
191
|
-
for(var i=(this.options.numSlices-1) ; i >= 0 ; i-- )
|
192
|
-
corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));
|
193
|
-
el.style.paddingBottom = 0;
|
194
|
-
el.appendChild(corner);
|
195
|
-
},
|
196
|
-
|
197
|
-
_createCorner: function(bgColor) {
|
198
|
-
var corner = document.createElement("div");
|
199
|
-
corner.style.backgroundColor = (this._isTransparent() ? "transparent" : bgColor);
|
200
|
-
return corner;
|
201
|
-
},
|
202
|
-
|
203
|
-
_createCornerSlice: function(color,bgColor, n, position) {
|
204
|
-
var slice = document.createElement("span");
|
205
|
-
|
206
|
-
var inStyle = slice.style;
|
207
|
-
inStyle.backgroundColor = color;
|
208
|
-
inStyle.display = "block";
|
209
|
-
inStyle.height = "1px";
|
210
|
-
inStyle.overflow = "hidden";
|
211
|
-
inStyle.fontSize = "1px";
|
212
|
-
|
213
|
-
var borderColor = this._borderColor(color,bgColor);
|
214
|
-
if ( this.options.border && n == 0 ) {
|
215
|
-
inStyle.borderTopStyle = "solid";
|
216
|
-
inStyle.borderTopWidth = "1px";
|
217
|
-
inStyle.borderLeftWidth = "0px";
|
218
|
-
inStyle.borderRightWidth = "0px";
|
219
|
-
inStyle.borderBottomWidth = "0px";
|
220
|
-
inStyle.height = "0px"; // assumes css compliant box model
|
221
|
-
inStyle.borderColor = borderColor;
|
222
|
-
}
|
223
|
-
else if(borderColor) {
|
224
|
-
inStyle.borderColor = borderColor;
|
225
|
-
inStyle.borderStyle = "solid";
|
226
|
-
inStyle.borderWidth = "0px 1px";
|
227
|
-
}
|
228
|
-
|
229
|
-
if ( !this.options.compact && (n == (this.options.numSlices-1)) )
|
230
|
-
inStyle.height = "2px";
|
231
|
-
|
232
|
-
this._setMargin(slice, n, position);
|
233
|
-
this._setBorder(slice, n, position);
|
234
|
-
return slice;
|
235
|
-
},
|
236
|
-
|
237
|
-
_setOptions: function(options) {
|
238
|
-
this.options = {
|
239
|
-
corners : "all",
|
240
|
-
color : "fromElement",
|
241
|
-
bgColor : "fromParent",
|
242
|
-
blend : true,
|
243
|
-
border : false,
|
244
|
-
compact : false
|
245
|
-
}
|
246
|
-
Object.extend(this.options, options || {});
|
247
|
-
|
248
|
-
this.options.numSlices = this.options.compact ? 2 : 4;
|
249
|
-
if ( this._isTransparent() )
|
250
|
-
this.options.blend = false;
|
251
|
-
},
|
252
|
-
|
253
|
-
_whichSideTop: function() {
|
254
|
-
if ( this._hasString(this.options.corners, "all", "top") )
|
255
|
-
return "";
|
256
|
-
|
257
|
-
if ( this.options.corners.indexOf("tl") >= 0 && this.options.corners.indexOf("tr") >= 0 )
|
258
|
-
return "";
|
259
|
-
|
260
|
-
if (this.options.corners.indexOf("tl") >= 0)
|
261
|
-
return "left";
|
262
|
-
else if (this.options.corners.indexOf("tr") >= 0)
|
263
|
-
return "right";
|
264
|
-
return "";
|
265
|
-
},
|
266
|
-
|
267
|
-
_whichSideBottom: function() {
|
268
|
-
if ( this._hasString(this.options.corners, "all", "bottom") )
|
269
|
-
return "";
|
270
|
-
|
271
|
-
if ( this.options.corners.indexOf("bl")>=0 && this.options.corners.indexOf("br")>=0 )
|
272
|
-
return "";
|
273
|
-
|
274
|
-
if(this.options.corners.indexOf("bl") >=0)
|
275
|
-
return "left";
|
276
|
-
else if(this.options.corners.indexOf("br")>=0)
|
277
|
-
return "right";
|
278
|
-
return "";
|
279
|
-
},
|
280
|
-
|
281
|
-
_borderColor : function(color,bgColor) {
|
282
|
-
if ( color == "transparent" )
|
283
|
-
return bgColor;
|
284
|
-
else if ( this.options.border )
|
285
|
-
return this.options.border;
|
286
|
-
else if ( this.options.blend )
|
287
|
-
return this._blend( bgColor, color );
|
288
|
-
else
|
289
|
-
return "";
|
290
|
-
},
|
291
|
-
|
292
|
-
|
293
|
-
_setMargin: function(el, n, corners) {
|
294
|
-
var marginSize = this._marginSize(n);
|
295
|
-
var whichSide = corners == "top" ? this._whichSideTop() : this._whichSideBottom();
|
296
|
-
|
297
|
-
if ( whichSide == "left" ) {
|
298
|
-
el.style.marginLeft = marginSize + "px"; el.style.marginRight = "0px";
|
299
|
-
}
|
300
|
-
else if ( whichSide == "right" ) {
|
301
|
-
el.style.marginRight = marginSize + "px"; el.style.marginLeft = "0px";
|
302
|
-
}
|
303
|
-
else {
|
304
|
-
el.style.marginLeft = marginSize + "px"; el.style.marginRight = marginSize + "px";
|
305
|
-
}
|
306
|
-
},
|
307
|
-
|
308
|
-
_setBorder: function(el,n,corners) {
|
309
|
-
var borderSize = this._borderSize(n);
|
310
|
-
var whichSide = corners == "top" ? this._whichSideTop() : this._whichSideBottom();
|
311
|
-
if ( whichSide == "left" ) {
|
312
|
-
el.style.borderLeftWidth = borderSize + "px"; el.style.borderRightWidth = "0px";
|
313
|
-
}
|
314
|
-
else if ( whichSide == "right" ) {
|
315
|
-
el.style.borderRightWidth = borderSize + "px"; el.style.borderLeftWidth = "0px";
|
316
|
-
}
|
317
|
-
else {
|
318
|
-
el.style.borderLeftWidth = borderSize + "px"; el.style.borderRightWidth = borderSize + "px";
|
319
|
-
}
|
320
|
-
if (this.options.border != false)
|
321
|
-
el.style.borderLeftWidth = borderSize + "px"; el.style.borderRightWidth = borderSize + "px";
|
322
|
-
},
|
323
|
-
|
324
|
-
_marginSize: function(n) {
|
325
|
-
if ( this._isTransparent() )
|
326
|
-
return 0;
|
327
|
-
|
328
|
-
var marginSizes = [ 5, 3, 2, 1 ];
|
329
|
-
var blendedMarginSizes = [ 3, 2, 1, 0 ];
|
330
|
-
var compactMarginSizes = [ 2, 1 ];
|
331
|
-
var smBlendedMarginSizes = [ 1, 0 ];
|
332
|
-
|
333
|
-
if ( this.options.compact && this.options.blend )
|
334
|
-
return smBlendedMarginSizes[n];
|
335
|
-
else if ( this.options.compact )
|
336
|
-
return compactMarginSizes[n];
|
337
|
-
else if ( this.options.blend )
|
338
|
-
return blendedMarginSizes[n];
|
339
|
-
else
|
340
|
-
return marginSizes[n];
|
341
|
-
},
|
342
|
-
|
343
|
-
_borderSize: function(n) {
|
344
|
-
var transparentBorderSizes = [ 5, 3, 2, 1 ];
|
345
|
-
var blendedBorderSizes = [ 2, 1, 1, 1 ];
|
346
|
-
var compactBorderSizes = [ 1, 0 ];
|
347
|
-
var actualBorderSizes = [ 0, 2, 0, 0 ];
|
348
|
-
|
349
|
-
if ( this.options.compact && (this.options.blend || this._isTransparent()) )
|
350
|
-
return 1;
|
351
|
-
else if ( this.options.compact )
|
352
|
-
return compactBorderSizes[n];
|
353
|
-
else if ( this.options.blend )
|
354
|
-
return blendedBorderSizes[n];
|
355
|
-
else if ( this.options.border )
|
356
|
-
return actualBorderSizes[n];
|
357
|
-
else if ( this._isTransparent() )
|
358
|
-
return transparentBorderSizes[n];
|
359
|
-
return 0;
|
360
|
-
},
|
361
|
-
|
362
|
-
_hasString: function(str) { for(var i=1 ; i<arguments.length ; i++) if (str.indexOf(arguments[i]) >= 0) return true; return false; },
|
363
|
-
_blend: function(c1, c2) { var cc1 = Rico.Color.createFromHex(c1); cc1.blend(Rico.Color.createFromHex(c2)); return cc1; },
|
364
|
-
_background: function(el) { try { return Rico.Color.createColorFromBackground(el).asHex(); } catch(err) { return "#ffffff"; } },
|
365
|
-
_isTransparent: function() { return this.options.color == "transparent"; },
|
366
|
-
_isTopRounded: function() { return this._hasString(this.options.corners, "all", "top", "tl", "tr"); },
|
367
|
-
_isBottomRounded: function() { return this._hasString(this.options.corners, "all", "bottom", "bl", "br"); },
|
368
|
-
_hasSingleTextChild: function(el) { return el.childNodes.length == 1 && el.childNodes[0].nodeType == 3; }
|
369
|
-
}
|
370
|
-
|