sproutcore 1.5.0.pre.4.1 → 1.5.0.pre.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +7 -0
- data/VERSION.yml +1 -1
- data/lib/buildtasks/manifest.rake +4 -3
- data/lib/frameworks/sproutcore/Buildfile +1 -2
- data/lib/frameworks/sproutcore/CHANGELOG.md +8 -3
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/app-selector.css +19 -23
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/button.css +139 -135
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/dock.css +5 -0
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/general.css +0 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/menu.css +10 -13
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/modal.css +9 -8
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/picker.css +19 -12
- data/lib/frameworks/sproutcore/apps/greenhouse/models/design.js +2 -2
- data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +1 -1
- data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +2 -2
- data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +31 -20
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +15 -9
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +23 -45
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +60 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +32 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +5 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +8 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +51 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +261 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +2 -19
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +96 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +8 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +179 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +51 -114
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +84 -36
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +4 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +244 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +38 -35
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +4 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/system/datetime.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/datetime/tests/system/datetime.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/designer/ext/binding.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/designer/ext/object.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/designer/ext/page.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -27
- data/lib/frameworks/sproutcore/frameworks/designer/tests/coders/page.js +54 -0
- data/lib/frameworks/sproutcore/frameworks/designer/tests/designers/view_designer.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/designer/views/drawing.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +133 -39
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +15 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +1 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +10 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +17 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +60 -27
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +29 -18
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +18 -18
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +62 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +8 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/cookie.js +20 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +235 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +8 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +19 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +6 -13
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +23 -117
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/bind.js +136 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/collection.js +75 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/localization.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/view.js +115 -0
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +143 -80
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +25 -17
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +18 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +30 -16
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +27 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +5 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +8 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +25 -16
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +21 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/imagebutton/ace/imagebutton.css +11 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +41 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
- data/lib/sproutcore.rb +2 -0
- data/lib/sproutcore/buildfile.rb +17 -17
- data/lib/sproutcore/buildfile/task.rb +4 -12
- data/lib/sproutcore/buildfile/task_manager.rb +13 -4
- data/lib/sproutcore/models/manifest.rb +3 -3
- data/lib/sproutcore/models/target.rb +1 -1
- data/spec/fixtures/real_world/Buildfile +1 -1
- data/vendor/chance/lib/chance/imagers/data_url.rb +38 -19
- data/vendor/chance/lib/chance/instance.rb +4 -7
- data/vendor/chance/lib/chance/slicing.rb +6 -10
- metadata +18 -5
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/tabbed.css +0 -68
- data/lib/frameworks/sproutcore/frameworks/designer/coders/localization.js +0 -19
- data/lib/sproutcore/buildfile/cloneable.rb +0 -34
@@ -8,6 +8,8 @@
|
|
8
8
|
var parent, store, child, storeKey, json;
|
9
9
|
module("SC.NestedStore#commitChangesFromNestedStore", {
|
10
10
|
setup: function() {
|
11
|
+
SC.RunLoop.begin();
|
12
|
+
|
11
13
|
parent = SC.Store.create();
|
12
14
|
|
13
15
|
json = {
|
@@ -26,6 +28,8 @@ module("SC.NestedStore#commitChangesFromNestedStore", {
|
|
26
28
|
child.dataHashDidChange(storeKey);
|
27
29
|
child.changelog = SC.Set.create();
|
28
30
|
child.changelog.add(storeKey);
|
31
|
+
|
32
|
+
SC.RunLoop.end();
|
29
33
|
}
|
30
34
|
});
|
31
35
|
|
data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js
CHANGED
@@ -11,6 +11,8 @@
|
|
11
11
|
var parent, store, child, storeKey, json, args;
|
12
12
|
module("SC.NestedStore#discardChanges", {
|
13
13
|
setup: function() {
|
14
|
+
SC.RunLoop.begin();
|
15
|
+
|
14
16
|
parent = SC.Store.create();
|
15
17
|
|
16
18
|
json = {
|
@@ -41,7 +43,8 @@ module("SC.NestedStore#discardChanges", {
|
|
41
43
|
force: force
|
42
44
|
});
|
43
45
|
};
|
44
|
-
|
46
|
+
|
47
|
+
SC.RunLoop.end();
|
45
48
|
}
|
46
49
|
});
|
47
50
|
|
@@ -9,6 +9,8 @@
|
|
9
9
|
var rec, q;
|
10
10
|
module("SC.Query comparison of record types", {
|
11
11
|
setup: function() {
|
12
|
+
SC.RunLoop.begin();
|
13
|
+
|
12
14
|
// setup dummy app and store
|
13
15
|
window.MyApp = SC.Object.create({
|
14
16
|
store: SC.Store.create()
|
@@ -25,6 +27,8 @@ module("SC.Query comparison of record types", {
|
|
25
27
|
rec = window.MyApp.store.find(window.MyApp.Foo,1);
|
26
28
|
|
27
29
|
q = SC.Query.create();
|
30
|
+
|
31
|
+
SC.RunLoop.end();
|
28
32
|
}
|
29
33
|
});
|
30
34
|
|
data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js
CHANGED
@@ -10,6 +10,8 @@ var store, storeKey, rec1, rec2, rec3, rec4, rec5, MyApp, q;
|
|
10
10
|
|
11
11
|
module("SC.Query comparison of records", {
|
12
12
|
setup: function() {
|
13
|
+
SC.RunLoop.begin();
|
14
|
+
|
13
15
|
// setup dummy app and store
|
14
16
|
MyApp = SC.Object.create({
|
15
17
|
store: SC.Store.create()
|
@@ -35,6 +37,8 @@ module("SC.Query comparison of records", {
|
|
35
37
|
|
36
38
|
|
37
39
|
q = SC.Query.create();
|
40
|
+
|
41
|
+
SC.RunLoop.end();
|
38
42
|
},
|
39
43
|
|
40
44
|
teardown: function() {
|
@@ -8,6 +8,8 @@
|
|
8
8
|
var store, storeKey, rec1, rec2, rec3, rec4, rec5, MyApp, q;
|
9
9
|
module("SC.Query registered query extensions", {
|
10
10
|
setup: function() {
|
11
|
+
SC.RunLoop.begin();
|
12
|
+
|
11
13
|
// setup dummy app and store
|
12
14
|
MyApp = SC.Object.create({
|
13
15
|
store: SC.Store.create()
|
@@ -33,6 +35,8 @@ module("SC.Query registered query extensions", {
|
|
33
35
|
|
34
36
|
|
35
37
|
q = SC.Query.create();
|
38
|
+
|
39
|
+
SC.RunLoop.end();
|
36
40
|
}
|
37
41
|
});
|
38
42
|
|
@@ -8,6 +8,8 @@
|
|
8
8
|
var store, child, storeKey, json;
|
9
9
|
module("SC.Store#commitChangesFromNestedStore", {
|
10
10
|
setup: function() {
|
11
|
+
SC.RunLoop.begin();
|
12
|
+
|
11
13
|
store = SC.Store.create();
|
12
14
|
|
13
15
|
json = {
|
@@ -25,6 +27,8 @@ module("SC.Store#commitChangesFromNestedStore", {
|
|
25
27
|
child.dataHashDidChange(storeKey);
|
26
28
|
child.changelog = SC.Set.create();
|
27
29
|
child.changelog.add(storeKey);
|
30
|
+
|
31
|
+
SC.RunLoop.end();
|
28
32
|
}
|
29
33
|
});
|
30
34
|
|
@@ -15,7 +15,9 @@ module("SC.Store#createRecord", {
|
|
15
15
|
number: SC.Record.attr(Number, { defaultValue: 5 }),
|
16
16
|
bool: SC.Record.attr(Boolean, { defaultValue: YES })
|
17
17
|
});
|
18
|
-
|
18
|
+
|
19
|
+
SC.RunLoop.begin();
|
20
|
+
|
19
21
|
store = SC.Store.create();
|
20
22
|
|
21
23
|
json = {
|
@@ -27,6 +29,8 @@ module("SC.Store#createRecord", {
|
|
27
29
|
storeKey = SC.Store.generateStoreKey();
|
28
30
|
|
29
31
|
store.writeDataHash(storeKey, json, SC.Record.READY_CLEAN);
|
32
|
+
|
33
|
+
SC.RunLoop.end();
|
30
34
|
}
|
31
35
|
});
|
32
36
|
|
@@ -10,7 +10,9 @@ var json1, json2, json3, json4, json5, json6;
|
|
10
10
|
|
11
11
|
module("SC.Store#destroyRecord", {
|
12
12
|
setup: function() {
|
13
|
-
|
13
|
+
|
14
|
+
SC.RunLoop.begin();
|
15
|
+
|
14
16
|
store = SC.Store.create();
|
15
17
|
|
16
18
|
json1 = {
|
@@ -62,6 +64,8 @@ module("SC.Store#destroyRecord", {
|
|
62
64
|
store.writeDataHash(storeKey5, json5, SC.Record.READY_NEW);
|
63
65
|
storeKey6 = SC.Store.generateStoreKey();
|
64
66
|
store.writeDataHash(storeKey6, json6, SC.Record.READY_CLEAN);
|
67
|
+
|
68
|
+
SC.RunLoop.end();
|
65
69
|
}
|
66
70
|
});
|
67
71
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2011 Apple Inc. and contributors.
|
4
|
+
// License: Licensed under MIT license (see license.js)
|
5
|
+
// ==========================================================================
|
6
|
+
/*globals module ok equals same test MyApp */
|
7
|
+
|
8
|
+
var store, dataHashes;
|
9
|
+
var Person;
|
10
|
+
|
11
|
+
|
12
|
+
module("SC.Store#loadRecord", {
|
13
|
+
setup: function() {
|
14
|
+
|
15
|
+
Person = SC.Record.extend({
|
16
|
+
first: SC.Record.attr(String, { isRequired: YES}),
|
17
|
+
last: SC.Record.attr(String),
|
18
|
+
age: SC.Record.attr(Number),
|
19
|
+
isAlive: SC.Record.attr(Boolean)
|
20
|
+
});
|
21
|
+
|
22
|
+
SC.RunLoop.begin();
|
23
|
+
|
24
|
+
store = SC.Store.create();
|
25
|
+
|
26
|
+
dataHashes = [
|
27
|
+
|
28
|
+
Person.create({
|
29
|
+
guid: 1,
|
30
|
+
first: "John",
|
31
|
+
last: "Sproutish",
|
32
|
+
age: 35,
|
33
|
+
isAlive: YES}),
|
34
|
+
|
35
|
+
Person.create({
|
36
|
+
guid: 2,
|
37
|
+
first: "Sarah",
|
38
|
+
last: "Coop",
|
39
|
+
age: 28,
|
40
|
+
isAlive: YES })];
|
41
|
+
|
42
|
+
SC.RunLoop.end();
|
43
|
+
}
|
44
|
+
});
|
45
|
+
|
46
|
+
test("loadRecord loads new / update existing record in store", function() {
|
47
|
+
var aDataHash = dataHashes[0];
|
48
|
+
var storeKey = store.loadRecord(Person, aDataHash);
|
49
|
+
ok(storeKey, "A store key is generated for a new record.");
|
50
|
+
|
51
|
+
var doesStoreKeyResolveToPK = aDataHash.get('guid') === store.idFor(storeKey);
|
52
|
+
ok(doesStoreKeyResolveToPK, "The storeKey resolves to the correct Primary Key");
|
53
|
+
|
54
|
+
var isStatusCorrect = store.peekStatus(storeKey) & SC.Record.READY_CLEAN;
|
55
|
+
ok(isStatusCorrect, "Record is in SC.Record.READY_CLEAN state after loading into store.");
|
56
|
+
|
57
|
+
// Change the record
|
58
|
+
aDataHash['age'] = 40;
|
59
|
+
var storeKeyAfterUpdate = store.loadRecord(Person, aDataHash);
|
60
|
+
ok(storeKey === storeKeyAfterUpdate, "When the same record is loaded a second time its store key remains unchanged.");
|
61
|
+
|
62
|
+
var record = store.materializeRecord(storeKey);
|
63
|
+
ok(record.get('age') === 40, "Record in store is updated with new values from data hash.");
|
64
|
+
});
|
@@ -8,44 +8,47 @@
|
|
8
8
|
var store, storeKey, json;
|
9
9
|
module("SC.Store#recordDidChange", {
|
10
10
|
setup: function() {
|
11
|
+
SC.RunLoop.begin();
|
12
|
+
|
13
|
+
store = SC.Store.create();
|
14
|
+
|
15
|
+
json1 = {
|
16
|
+
guid: "commitGUID1",
|
17
|
+
string: "string",
|
18
|
+
number: 23,
|
19
|
+
bool: YES
|
20
|
+
};
|
21
|
+
json2 = {
|
22
|
+
guid: "commitGUID2",
|
23
|
+
string: "string",
|
24
|
+
number: 23,
|
25
|
+
bool: YES
|
26
|
+
};
|
27
|
+
json3 = {
|
28
|
+
guid: "commitGUID3",
|
29
|
+
string: "string",
|
30
|
+
number: 23,
|
31
|
+
bool: YES
|
32
|
+
};
|
33
|
+
json4 = {
|
34
|
+
guid: "commitGUID4",
|
35
|
+
string: "string",
|
36
|
+
number: 23,
|
37
|
+
bool: YES
|
38
|
+
};
|
11
39
|
|
12
|
-
store = SC.Store.create();
|
13
40
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
string: "string",
|
23
|
-
number: 23,
|
24
|
-
bool: YES
|
25
|
-
};
|
26
|
-
json3 = {
|
27
|
-
guid: "commitGUID3",
|
28
|
-
string: "string",
|
29
|
-
number: 23,
|
30
|
-
bool: YES
|
31
|
-
};
|
32
|
-
json4 = {
|
33
|
-
guid: "commitGUID4",
|
34
|
-
string: "string",
|
35
|
-
number: 23,
|
36
|
-
bool: YES
|
37
|
-
};
|
38
|
-
|
41
|
+
storeKey1 = SC.Store.generateStoreKey();
|
42
|
+
store.writeDataHash(storeKey1, json1, SC.Record.BUSY_LOADING);
|
43
|
+
storeKey2 = SC.Store.generateStoreKey();
|
44
|
+
store.writeDataHash(storeKey2, json2, SC.Record.EMPTY);
|
45
|
+
storeKey3 = SC.Store.generateStoreKey();
|
46
|
+
store.writeDataHash(storeKey3, json3, SC.Record.READY_NEW);
|
47
|
+
storeKey4 = SC.Store.generateStoreKey();
|
48
|
+
store.writeDataHash(storeKey4, json4, SC.Record.READY_CLEAN);
|
39
49
|
|
40
|
-
|
41
|
-
|
42
|
-
storeKey2 = SC.Store.generateStoreKey();
|
43
|
-
store.writeDataHash(storeKey2, json2, SC.Record.EMPTY);
|
44
|
-
storeKey3 = SC.Store.generateStoreKey();
|
45
|
-
store.writeDataHash(storeKey3, json3, SC.Record.READY_NEW);
|
46
|
-
storeKey4 = SC.Store.generateStoreKey();
|
47
|
-
store.writeDataHash(storeKey4, json4, SC.Record.READY_CLEAN);
|
48
|
-
}
|
50
|
+
SC.RunLoop.end();
|
51
|
+
}
|
49
52
|
});
|
50
53
|
|
51
54
|
test("recordDidChange", function() {
|
@@ -12,6 +12,8 @@ module("SC.Store#unloadRecords", {
|
|
12
12
|
name: SC.Record.attr(String)
|
13
13
|
});
|
14
14
|
|
15
|
+
SC.RunLoop.begin();
|
16
|
+
|
15
17
|
store = SC.Store.create();
|
16
18
|
|
17
19
|
store.createRecord(TestRecord, {
|
@@ -25,6 +27,8 @@ module("SC.Store#unloadRecords", {
|
|
25
27
|
store.createRecord(TestRecord, {
|
26
28
|
name: 'Baz'
|
27
29
|
});
|
30
|
+
|
31
|
+
SC.RunLoop.end();
|
28
32
|
}
|
29
33
|
});
|
30
34
|
|
@@ -301,6 +301,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
|
|
301
301
|
- %B - The full month name (``January'')
|
302
302
|
- %c - The preferred local date and time representation
|
303
303
|
- %d - Day of the month (01..31)
|
304
|
+
- %D - Day of the month (0..31)
|
304
305
|
- %h - Hour of the day, 24-hour clock (0..23)
|
305
306
|
- %H - Hour of the day, 24-hour clock (00..23)
|
306
307
|
- %i - Hour of the day, 12-hour clock (1..12)
|
@@ -902,7 +903,7 @@ SC.DateTime.mixin(SC.Comparable,
|
|
902
903
|
parse: function(str, fmt) {
|
903
904
|
// Declared as an object not a literal since in some browsers the literal
|
904
905
|
// retains state across function calls
|
905
|
-
var re = new RegExp('(?:%([
|
906
|
+
var re = new RegExp('(?:%([aAbBcdDhHIjmMpsSUWwxXyYZ%])|(.))', "g");
|
906
907
|
var d, parts, opts = {}, check = {}, scanner = SC.Scanner.create({string: str});
|
907
908
|
|
908
909
|
if (SC.none(fmt)) fmt = SC.DATETIME_ISO8601;
|
@@ -915,7 +916,9 @@ SC.DateTime.mixin(SC.Comparable,
|
|
915
916
|
case 'b': opts.month = scanner.scanArray(this.abbreviatedMonthNames) + 1; break;
|
916
917
|
case 'B': opts.month = scanner.scanArray(this.monthNames) + 1; break;
|
917
918
|
case 'c': throw "%c is not implemented";
|
918
|
-
case 'd':
|
919
|
+
case 'd':
|
920
|
+
case 'D': opts.day = scanner.scanInt(1, 2); break;
|
921
|
+
case 'h':
|
919
922
|
case 'H': opts.hour = scanner.scanInt(1, 2); break;
|
920
923
|
case 'I': opts.hour = scanner.scanInt(1, 2); break;
|
921
924
|
case 'j': throw "%j is not implemented";
|
@@ -947,7 +950,7 @@ SC.DateTime.mixin(SC.Comparable,
|
|
947
950
|
}
|
948
951
|
}
|
949
952
|
} catch (e) {
|
950
|
-
|
953
|
+
SC.Logger.log('SC.DateTime.createFromString ' + e.toString());
|
951
954
|
return null;
|
952
955
|
}
|
953
956
|
|
@@ -1044,7 +1047,7 @@ SC.DateTime.mixin(SC.Comparable,
|
|
1044
1047
|
// need to move into local time zone for these calculations
|
1045
1048
|
this._setCalcState(start - (timezone * 60000), 0); // so simulate a shifted 'UTC' time
|
1046
1049
|
|
1047
|
-
return format.replace(/\%([
|
1050
|
+
return format.replace(/\%([aAbBcdDhHiIjmMpsSUWwxXyYZ\%])/g, function() {
|
1048
1051
|
var v = that.__toFormattedString.call(that, arguments, start, timezone);
|
1049
1052
|
return v;
|
1050
1053
|
});
|
@@ -229,8 +229,8 @@ test('compare', function() {
|
|
229
229
|
|
230
230
|
test('Format', function() {
|
231
231
|
equals(
|
232
|
-
dt.toFormattedString('%a %A %b %B %d %H %I %j %m %M %p %S %w %y %Y %%a'),
|
233
|
-
'Sat Saturday Jun June 08 04 04 159 06 00 AM 22 6 85 1985 %a');
|
232
|
+
dt.toFormattedString('%a %A %b %B %d %D %h %H %I %j %m %M %p %S %w %y %Y %%a'),
|
233
|
+
'Sat Saturday Jun June 08 8 4 04 04 159 06 00 AM 22 6 85 1985 %a');
|
234
234
|
|
235
235
|
equals(dt.toFormattedString('%Z'), formatTimezone(dt.get('timezone')));
|
236
236
|
equals(dt.adjust({ timezone: 0 }).toFormattedString('%Y-%m-%d %H:%M:%S %Z'), '1985-06-08 05:00:22 +00:00');
|
@@ -9,7 +9,7 @@
|
|
9
9
|
// invokeOnce and invokeLast) to record which code scheduled the
|
10
10
|
// invokeOnce/invokeLast targets/methods.
|
11
11
|
|
12
|
-
|
12
|
+
window.SC = window.SC || {};
|
13
13
|
|
14
14
|
|
15
15
|
// Declaring the variable will make it easier for people who want to enter it
|
@@ -100,7 +100,7 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
|
|
100
100
|
// If we didn't capture information for this invocation, just
|
101
101
|
// report what we can. (We assume we'll always have all three
|
102
102
|
// hashes or none.)
|
103
|
-
|
103
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@, but we didn’t capture information about who scheduled it…".fmt(mName, target));
|
104
104
|
}
|
105
105
|
else {
|
106
106
|
originatingTargets = originatingTargets[originatingKey]; // Could be one target or an array of them
|
@@ -111,7 +111,7 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
|
|
111
111
|
// scheduled this target/method? If so, display them all nicely.
|
112
112
|
// Otherwise, optimize our output for only one.
|
113
113
|
if (originatingMethods && SC.typeOf(originatingMethods) === SC.T_ARRAY) {
|
114
|
-
|
114
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@, which was scheduled by multiple target/method pairs:".fmt(mName, target));
|
115
115
|
|
116
116
|
var i, len,
|
117
117
|
originatingTarget,
|
@@ -123,13 +123,13 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
|
|
123
123
|
originatingMethod = originatingMethod.displayName || originatingMethod;
|
124
124
|
originatingStack = originatingStacks[i];
|
125
125
|
|
126
|
-
|
126
|
+
SC.Logger.log("[%@] originated by target %@, method %@, stack:".fmt(i, originatingTarget, originatingMethod), originatingStack);
|
127
127
|
}
|
128
128
|
}
|
129
129
|
else {
|
130
130
|
var originatingMethodName = originatingMethods.displayName || originatingMethods;
|
131
131
|
|
132
|
-
|
132
|
+
SC.Logger.log("Invoking runloop-scheduled method %@ on %@. Originated by target %@, method %@, stack: ".fmt(mName, target, originatingTargets, originatingMethodName), originatingStacks);
|
133
133
|
}
|
134
134
|
}
|
135
135
|
}
|
@@ -135,7 +135,7 @@ SC.ObjectCoder = SC.Object.extend({
|
|
135
135
|
@returns {SC.ObjectCoder} receiver
|
136
136
|
*/
|
137
137
|
bool: function(key, val) {
|
138
|
-
return this.js(key, val, function(x) { return x ? "
|
138
|
+
return this.js(key, val, function(x) { return x ? "true" : "false"; });
|
139
139
|
},
|
140
140
|
|
141
141
|
/**
|
@@ -316,8 +316,15 @@ SC.ViewDesigner = SC.Object.extend(
|
|
316
316
|
var view = this.get('view'), proto = this.get('viewClass').prototype ;
|
317
317
|
props.forEach(function(prop) {
|
318
318
|
var val = view[prop] ; // avoid get() since we don't want to exec props
|
319
|
-
|
320
|
-
|
319
|
+
|
320
|
+
//handle bindings
|
321
|
+
if (prop.length > 7 && prop.slice(-7) === "Binding" && val !== undefined){
|
322
|
+
coder.js(prop,val.encodeDesign());
|
323
|
+
}
|
324
|
+
else{
|
325
|
+
if (val !== undefined && (val !== proto[prop])) {
|
326
|
+
coder.encode(prop, val) ;
|
327
|
+
}
|
321
328
|
}
|
322
329
|
}, this);
|
323
330
|
},
|
@@ -377,7 +384,8 @@ SC.ViewDesigner = SC.Object.extend(
|
|
377
384
|
*/
|
378
385
|
encodeDesign: function(coder) {
|
379
386
|
coder.set('className', SC._object_className(this.get('viewClass')));
|
380
|
-
this.encodeDesignProperties(coder);
|
387
|
+
this.encodeDesignProperties(coder);
|
388
|
+
this.encodeDesignAttributeProperties(coder);
|
381
389
|
this.encodeChildViewsDesign(coder);
|
382
390
|
return YES ;
|
383
391
|
},
|