luca 0.8.3 → 0.8.06
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -14
- data/Guardfile +9 -14
- data/lib/luca/rails/version.rb +1 -1
- data/src/components/collection_loader_view.coffee +1 -2
- data/src/components/form_view.coffee +2 -12
- data/src/core/container.coffee +0 -1
- data/src/core/view.coffee +1 -1
- data/src/framework.coffee +13 -19
- data/src/managers/collection_manager.coffee +1 -1
- data/vendor/assets/javascripts/luca-ui-base.js +14 -26
- data/vendor/assets/javascripts/luca-ui-spec.js +19 -134
- data/vendor/assets/javascripts/luca-ui.js +19 -134
- data/vendor/assets/javascripts/luca-ui.min.js +3 -3
- metadata +2 -5
- data/src/components/fields/checkbox_array.coffee +0 -64
- data/src/templates/fields/checkbox_array.luca +0 -5
- data/src/templates/fields/checkbox_array_item.luca +0 -4
@@ -1,20 +1,22 @@
|
|
1
1
|
(function() {
|
2
2
|
|
3
|
+
_.mixin(_.string);
|
4
|
+
|
3
5
|
window.Luca = {
|
4
|
-
VERSION: "0.8.
|
6
|
+
VERSION: "0.8.06",
|
5
7
|
core: {},
|
6
8
|
containers: {},
|
7
9
|
components: {},
|
8
10
|
modules: {},
|
9
|
-
util: {},
|
10
11
|
fields: {},
|
11
|
-
|
12
|
-
cid_index: {},
|
13
|
-
name_index: {}
|
14
|
-
},
|
12
|
+
util: {},
|
15
13
|
registry: {
|
16
14
|
classes: {},
|
17
15
|
namespaces: ["Luca.containers", "Luca.components"]
|
16
|
+
},
|
17
|
+
component_cache: {
|
18
|
+
cid_index: {},
|
19
|
+
name_index: {}
|
18
20
|
}
|
19
21
|
};
|
20
22
|
|
@@ -57,16 +59,11 @@
|
|
57
59
|
}, source_object);
|
58
60
|
};
|
59
61
|
|
60
|
-
Luca.util.classify = function(string) {
|
61
|
-
if (string == null) string = "";
|
62
|
-
return _.string.camelize(_.string.capitalize(string));
|
63
|
-
};
|
64
|
-
|
65
62
|
Luca.registry.lookup = function(ctype) {
|
66
63
|
var c, className, parents;
|
67
64
|
c = Luca.registry.classes[ctype];
|
68
65
|
if (c != null) return c;
|
69
|
-
className =
|
66
|
+
className = _.camelize(_.capitalize(ctype));
|
70
67
|
parents = _(Luca.registry.namespaces).map(function(namespace) {
|
71
68
|
return Luca.util.nestedValue(namespace, window || global);
|
72
69
|
});
|
@@ -77,7 +74,7 @@
|
|
77
74
|
|
78
75
|
Luca.util.lazyComponent = function(config) {
|
79
76
|
var componentClass, constructor, ctype;
|
80
|
-
ctype = config.ctype
|
77
|
+
ctype = config.ctype;
|
81
78
|
componentClass = Luca.registry.lookup(ctype);
|
82
79
|
if (!componentClass) {
|
83
80
|
throw "Invalid Component Type: " + ctype + ". Did you forget to register it?";
|
@@ -90,7 +87,7 @@
|
|
90
87
|
var exists;
|
91
88
|
exists = Luca.registry.classes[component];
|
92
89
|
if (exists != null) {
|
93
|
-
|
90
|
+
throw "Can not register component with the signature " + component + ". Already exists";
|
94
91
|
} else {
|
95
92
|
return Luca.registry.classes[component] = constructor_class;
|
96
93
|
}
|
@@ -269,14 +266,6 @@
|
|
269
266
|
Luca.templates || (Luca.templates = {});
|
270
267
|
Luca.templates["fields/button_field_link"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('<a class=\'btn ', input_class ,'\'>\n '); if(icon_class.length) { __p.push('\n <i class=\'', icon_class ,'\'></i>\n '); } __p.push('\n ', input_value ,'\n</a>\n');}return __p.join('');};
|
271
268
|
}).call(this);
|
272
|
-
(function() {
|
273
|
-
Luca.templates || (Luca.templates = {});
|
274
|
-
Luca.templates["fields/checkbox_array"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('<div class=\'form-horizontal\'>\n <div class=\'control-group\'>\n <label for=\'', input_id ,'\'>\n ', label ,'\n </label>\n <div class=\'controls\'></div>\n </div>\n</div>\n');}return __p.join('');};
|
275
|
-
}).call(this);
|
276
|
-
(function() {
|
277
|
-
Luca.templates || (Luca.templates = {});
|
278
|
-
Luca.templates["fields/checkbox_array_item"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('<label for=\'', input_id ,'\'>\n <input id=\'', input_id ,'\' name=\'', input_name ,'\' type=\'checkbox\' value=\'', value ,'\' />\n ', label ,'\n</label>\n');}return __p.join('');};
|
279
|
-
}).call(this);
|
280
269
|
(function() {
|
281
270
|
Luca.templates || (Luca.templates = {});
|
282
271
|
Luca.templates["fields/checkbox_field"] = function(obj){var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('<label for=\'', input_id ,'\'>\n ', label ,'\n <input name=\'', input_name ,'\' style=\'', inputStyles ,'\' type=\'checkbox\' value=\'', input_value ,'\' />\n</label>\n'); if(helperText) { __p.push('\n<p class=\'helper-text help-block\'>\n ', helperText ,'\n</p>\n'); } __p.push('\n');}return __p.join('');};
|
@@ -447,7 +436,7 @@
|
|
447
436
|
parts = eventId.split(':');
|
448
437
|
prefix = parts.shift();
|
449
438
|
parts = _(parts).map(function(p) {
|
450
|
-
return _.
|
439
|
+
return _.capitalize(p);
|
451
440
|
});
|
452
441
|
fn = prefix + parts.join('');
|
453
442
|
return _this.bind(eventId, function() {
|
@@ -924,8 +913,7 @@
|
|
924
913
|
} catch (e) {
|
925
914
|
console.log("Error Rendering Component " + (component.name || component.cid), component);
|
926
915
|
console.log(e.message);
|
927
|
-
console.log(e.stack);
|
928
|
-
if ((Luca.silenceRenderErrors != null) !== true) throw e;
|
916
|
+
return console.log(e.stack);
|
929
917
|
}
|
930
918
|
});
|
931
919
|
},
|
@@ -1107,7 +1095,7 @@
|
|
1107
1095
|
|
1108
1096
|
CollectionManager.prototype.guessCollectionClass = function(key) {
|
1109
1097
|
var classified, guess;
|
1110
|
-
classified =
|
1098
|
+
classified = _(key).chain().capitalize().camelize().value();
|
1111
1099
|
guess = (this.collectionNamespace || (window || global))[classified];
|
1112
1100
|
guess || (guess = (this.collectionNamespace || (window || global))["" + classified + "Collection"]);
|
1113
1101
|
return guess;
|
@@ -1775,13 +1763,12 @@
|
|
1775
1763
|
setupBindings: function() {
|
1776
1764
|
var _this = this;
|
1777
1765
|
this.manager.bind("collection_loaded", function(name) {
|
1778
|
-
var
|
1766
|
+
var loaded, progress, total;
|
1779
1767
|
loaded = _this.manager.loadedCollectionsCount();
|
1780
1768
|
total = _this.manager.totalCollectionsCount();
|
1781
1769
|
progress = parseInt((loaded / total) * 100);
|
1782
|
-
collectionName = _.string.titleize(_.string.humanize(name));
|
1783
1770
|
_this.modalContainer().find('.progress .bar').attr("style", "width: " + progress + "%;");
|
1784
|
-
return _this.modalContainer().find('.message').html("Loaded " +
|
1771
|
+
return _this.modalContainer().find('.message').html("Loaded " + (_(name).chain().humanize().titleize().value()) + "...");
|
1785
1772
|
});
|
1786
1773
|
return this.manager.bind("all_collections_loaded", function() {
|
1787
1774
|
_this.modalContainer().find('.message').html("All done!");
|
@@ -1941,89 +1928,6 @@
|
|
1941
1928
|
|
1942
1929
|
Luca.register("button_field", "Luca.fields.ButtonField");
|
1943
1930
|
|
1944
|
-
}).call(this);
|
1945
|
-
(function() {
|
1946
|
-
|
1947
|
-
Luca.fields.CheckboxArray = Luca.core.Field.extend({
|
1948
|
-
template: "fields/checkbox_array",
|
1949
|
-
events: {
|
1950
|
-
"click input": "clickHandler"
|
1951
|
-
},
|
1952
|
-
initialize: function(options) {
|
1953
|
-
this.options = options != null ? options : {};
|
1954
|
-
_.extend(this, this.options);
|
1955
|
-
_.extend(this, Luca.modules.Deferrable);
|
1956
|
-
_.bindAll(this, "populateCheckboxes", "clickHandler", "_updateModel");
|
1957
|
-
Luca.core.Field.prototype.initialize.apply(this, arguments);
|
1958
|
-
this.input_id || (this.input_id = _.uniqueId('field'));
|
1959
|
-
this.input_name || (this.input_name = this.name);
|
1960
|
-
this.label || (this.label = this.name);
|
1961
|
-
this.valueField || (this.valueField = "id");
|
1962
|
-
this.displayField || (this.displayField = "name");
|
1963
|
-
return this.selectedItems = [];
|
1964
|
-
},
|
1965
|
-
afterInitialize: function(options) {
|
1966
|
-
this.options = options != null ? options : {};
|
1967
|
-
try {
|
1968
|
-
this.configure_collection();
|
1969
|
-
} catch (e) {
|
1970
|
-
console.log("Error Configuring Collection", this, e.message);
|
1971
|
-
}
|
1972
|
-
return this.collection.bind("reset", this.populateCheckboxes);
|
1973
|
-
},
|
1974
|
-
afterRender: function() {
|
1975
|
-
var _ref, _ref2;
|
1976
|
-
if (((_ref = this.collection) != null ? (_ref2 = _ref.models) != null ? _ref2.length : void 0 : void 0) > 0) {
|
1977
|
-
return this.populateCheckboxes();
|
1978
|
-
} else {
|
1979
|
-
return this.collection.trigger("reset");
|
1980
|
-
}
|
1981
|
-
},
|
1982
|
-
clickHandler: function(event) {
|
1983
|
-
var checkbox;
|
1984
|
-
checkbox = event.target;
|
1985
|
-
if (checkbox.checked) {
|
1986
|
-
this.selectedItems.push(checkbox.value);
|
1987
|
-
} else {
|
1988
|
-
if (this.selectedItems.indexOf(checkbox.value) !== -1) {
|
1989
|
-
this.selectedItems = _.without(this.selectedItems, [checkbox.value]);
|
1990
|
-
}
|
1991
|
-
}
|
1992
|
-
return this._updateModel();
|
1993
|
-
},
|
1994
|
-
populateCheckboxes: function() {
|
1995
|
-
var controls,
|
1996
|
-
_this = this;
|
1997
|
-
controls = $(this.el).find('.controls');
|
1998
|
-
controls.empty();
|
1999
|
-
this.selectedItems = this.getModel().get(this.name);
|
2000
|
-
this.collection.each(function(model) {
|
2001
|
-
var input_id, label, value;
|
2002
|
-
value = model.get(_this.valueField);
|
2003
|
-
label = model.get(_this.displayField);
|
2004
|
-
input_id = _.uniqueId('field');
|
2005
|
-
controls.append(Luca.templates["fields/checkbox_array_item"]({
|
2006
|
-
label: label,
|
2007
|
-
value: value,
|
2008
|
-
input_id: input_id,
|
2009
|
-
input_name: _this.input_name
|
2010
|
-
}));
|
2011
|
-
if (_this.selectedItems.indexOf(value) !== -1) {
|
2012
|
-
return _this.$("#" + input_id).attr("checked", "checked");
|
2013
|
-
}
|
2014
|
-
});
|
2015
|
-
return $(this.container).append(this.$el);
|
2016
|
-
},
|
2017
|
-
_updateModel: function() {
|
2018
|
-
var attributes;
|
2019
|
-
attributes = {};
|
2020
|
-
attributes[this.name] = this.selectedItems;
|
2021
|
-
return this.getModel().set(attributes);
|
2022
|
-
}
|
2023
|
-
});
|
2024
|
-
|
2025
|
-
Luca.register("checkbox_array", "Luca.fields.CheckboxArray");
|
2026
|
-
|
2027
1931
|
}).call(this);
|
2028
1932
|
(function() {
|
2029
1933
|
|
@@ -2431,24 +2335,8 @@
|
|
2431
2335
|
return component.container = container;
|
2432
2336
|
});
|
2433
2337
|
},
|
2434
|
-
afterComponents: function() {
|
2435
|
-
var _ref,
|
2436
|
-
_this = this;
|
2437
|
-
if ((_ref = Luca.core.Container.prototype.afterComponents) != null) {
|
2438
|
-
_ref.apply(this, arguments);
|
2439
|
-
}
|
2440
|
-
return this.eachField(function(field) {
|
2441
|
-
field.getForm = function() {
|
2442
|
-
return _this;
|
2443
|
-
};
|
2444
|
-
return field.getModel = function() {
|
2445
|
-
return _this.currentModel();
|
2446
|
-
};
|
2447
|
-
});
|
2448
|
-
},
|
2449
2338
|
render: function() {
|
2450
|
-
$(this.container).append(this.$el);
|
2451
|
-
return this;
|
2339
|
+
return $(this.container).append(this.$el);
|
2452
2340
|
},
|
2453
2341
|
wrapper: function() {
|
2454
2342
|
return this.$el.parents('.luca-ui-form-view-wrapper');
|
@@ -2465,9 +2353,6 @@
|
|
2465
2353
|
return toolbar.render();
|
2466
2354
|
});
|
2467
2355
|
},
|
2468
|
-
eachField: function(iterator) {
|
2469
|
-
return _(this.getFields()).map(iterator);
|
2470
|
-
},
|
2471
2356
|
getField: function(name) {
|
2472
2357
|
return _(this.getFields('name', name)).first();
|
2473
2358
|
},
|
@@ -2547,8 +2432,8 @@
|
|
2547
2432
|
key = field.input_name || field.name;
|
2548
2433
|
skip = false;
|
2549
2434
|
if (options.skip_buttons && field.ctype === "button_field") skip = true;
|
2550
|
-
if (options.reject_blank === true && _.
|
2551
|
-
if (field.input_name === "id" && _.
|
2435
|
+
if (options.reject_blank === true && _.isBlank(value)) skip = true;
|
2436
|
+
if (field.input_name === "id" && _.isBlank(value)) skip = true;
|
2552
2437
|
if (skip !== true) memo[key] = value;
|
2553
2438
|
return memo;
|
2554
2439
|
}, {});
|