extjs-mvc 0.4.0.f → 0.4.0.g

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. data/Rakefile +2 -2
  2. data/VERSION +1 -1
  3. data/bin/extjs-mvc +0 -3
  4. data/lib/extjs-mvc.rb +10 -6
  5. data/lib/extjs-mvc/api.rb +0 -1
  6. metadata +8 -84
  7. data/lib/src/App.js +0 -219
  8. data/lib/src/MVC.js +0 -260
  9. data/lib/src/Presenter.js +0 -52
  10. data/lib/src/README.rdoc +0 -69
  11. data/lib/src/controller/Controller.js +0 -278
  12. data/lib/src/controller/CrudController.js +0 -460
  13. data/lib/src/lib/Array.js +0 -26
  14. data/lib/src/lib/Booter.js +0 -416
  15. data/lib/src/lib/ClassManager.js +0 -191
  16. data/lib/src/lib/ControllerClassManager.js +0 -95
  17. data/lib/src/lib/Dependencies.js +0 -44
  18. data/lib/src/lib/DispatchMatcher.js +0 -98
  19. data/lib/src/lib/Dispatcher.js +0 -129
  20. data/lib/src/lib/Environment.js +0 -43
  21. data/lib/src/lib/Inflector.js +0 -155
  22. data/lib/src/lib/ModelClassManager.js +0 -19
  23. data/lib/src/lib/Route.js +0 -139
  24. data/lib/src/lib/Router.js +0 -282
  25. data/lib/src/lib/String.js +0 -94
  26. data/lib/src/lib/ViewClassManager.js +0 -229
  27. data/lib/src/lib/notes.txt +0 -32
  28. data/lib/src/model/AdapterManager.js +0 -30
  29. data/lib/src/model/Association.js +0 -26
  30. data/lib/src/model/Base.js +0 -63
  31. data/lib/src/model/BelongsToAssociation.js +0 -116
  32. data/lib/src/model/Cache.js +0 -131
  33. data/lib/src/model/HasManyAssociation.js +0 -160
  34. data/lib/src/model/Model.js +0 -331
  35. data/lib/src/model/UrlBuilder.js +0 -106
  36. data/lib/src/model/adapters/AbstractAdapter.js +0 -296
  37. data/lib/src/model/adapters/MemoryAdapter.js +0 -103
  38. data/lib/src/model/adapters/RESTAdapter.js +0 -345
  39. data/lib/src/model/adapters/RESTJSONAdapter.js +0 -68
  40. data/lib/src/model/adapters/notes.txt +0 -42
  41. data/lib/src/model/associations/Association.js +0 -192
  42. data/lib/src/model/associations/notes.txt +0 -87
  43. data/lib/src/model/validations/Errors.js +0 -136
  44. data/lib/src/model/validations/Plugin.js +0 -139
  45. data/lib/src/model/validations/Validations.js +0 -276
  46. data/lib/src/notes/Charts.graffle +0 -0
  47. data/lib/src/overrides/Ext.Component.js +0 -21
  48. data/lib/src/overrides/Ext.extend.js +0 -142
  49. data/lib/src/spec/Array.spec.js +0 -15
  50. data/lib/src/spec/ExtMVC.spec.js +0 -65
  51. data/lib/src/spec/Model.spec.js +0 -370
  52. data/lib/src/spec/OS.spec.js +0 -83
  53. data/lib/src/spec/Router.spec.js +0 -99
  54. data/lib/src/spec/SpecHelper.js +0 -106
  55. data/lib/src/spec/String.spec.js +0 -83
  56. data/lib/src/spec/model/AbstractAdapter.spec.js +0 -49
  57. data/lib/src/spec/model/Associations.spec.js +0 -99
  58. data/lib/src/spec/model/Cache.spec.js +0 -5
  59. data/lib/src/spec/model/RESTAdapter.spec.js +0 -19
  60. data/lib/src/spec/model/ValidationErrors.spec.js +0 -64
  61. data/lib/src/spec/model/Validations.spec.js +0 -166
  62. data/lib/src/spec/model/ValidationsPlugin.spec.js +0 -108
  63. data/lib/src/spec/suite.html +0 -60
  64. data/lib/src/specs-old/JSSpec.css +0 -216
  65. data/lib/src/specs-old/JSSpec.js +0 -1512
  66. data/lib/src/specs-old/all.html +0 -66
  67. data/lib/src/specs-old/base.js +0 -14
  68. data/lib/src/specs-old/controller.js +0 -17
  69. data/lib/src/specs-old/diff_match_patch.js +0 -1
  70. data/lib/src/specs-old/model.js +0 -70
  71. data/lib/src/specs-old/route.js +0 -38
  72. data/lib/src/specs-old/router.js +0 -59
  73. data/lib/src/specs-old/string.js +0 -22
  74. data/lib/src/testrunner/JSpecFormatter.js +0 -111
  75. data/lib/src/testrunner/TestClient.js +0 -181
  76. data/lib/src/testrunner/TestGrid.js +0 -351
  77. data/lib/src/testrunner/TestRunner.js +0 -110
  78. data/lib/src/testrunner/TestViewport.js +0 -94
  79. data/lib/src/vendor.yml +0 -29
  80. data/lib/src/vendor/ext-3.1.1/vendor.yml +0 -16
  81. data/lib/src/view/FormWindow.js +0 -184
  82. data/lib/src/view/HasManyEditorGridPanel.js +0 -211
  83. data/lib/src/view/scaffold/Edit.js +0 -46
  84. data/lib/src/view/scaffold/Index.js +0 -561
  85. data/lib/src/view/scaffold/New.js +0 -20
  86. data/lib/src/view/scaffold/ScaffoldFormPanel.js +0 -255
@@ -1,276 +0,0 @@
1
- Ext.ns('ExtMVC.model.plugin.validation');
2
-
3
- /**
4
- * @ignore
5
- * The Validation classes themselves are defined here.
6
- * Subclass ExtMVC.model.plugin.validation.AbstractValidation to create your own validations
7
- */
8
-
9
- /**
10
- * @class ExtMVC.model.plugin.validation.AbstractValidation
11
- * Base class for all validations - not used directly, but any of the following may be used:
12
- <pre><code>
13
- ExtMVC.model.define("SomeModel", {
14
- fields: [
15
- {name: 'title', type: 'string'},
16
- {name: 'price', type: 'int'},
17
- {name: 'stock', type: 'int'},
18
- {name: 'gender', type: 'string'},
19
- {name: 'colour', type: 'string'}
20
- ],
21
-
22
- validatesPresenceOf : ["title", "price"],
23
- validatesLengthOf : {field: 'title', minimum: 3, maximum: 12},
24
-
25
- validatesInclusionOf: {field: 'gender', allowed : ["Male", "Female"]},
26
- validatesExclusionOf: {field: 'colour', disallowed: ["Red"]},
27
- validatesFormatOf : {field: 'email', regex: /someRegex/},
28
-
29
- validatesNumericalityOf: "stock"
30
- });
31
- </code></pre>
32
- *
33
- * Most validations will allow an array to be passed to set the validation up on more than one field (e.g.
34
- * see the validatesPresenceOf declaration above). If only a string is provided it is assume to be the field name.
35
- * The following are all equivalent:
36
- <pre><code>
37
- validatesPresenceOf: "title"
38
- validatesPresenceOf: ["title"]
39
- validatesPresenceOf: {field: "title"}
40
- validatesPresenceOf: [{field: "title"}]
41
- </code></pre>
42
- *
43
- * <h2>Running validations</h2>
44
- * This plugin overrides ExtMVC.model.Base's usual isValid() function to provide feedback from the validations:
45
- *
46
- <pre><code>
47
- var user = new SomeModel({title: "A really long title", colour: "Blue"});
48
- user.isValid(); //returns false if any of the validations failed
49
- user.errors; //returns an {@link ExtMVC.model.plugin.validation.Errors Errors} object
50
- </code></pre>
51
- */
52
- ExtMVC.model.plugin.validation.AbstractValidation = function(ownerClass, field, config) {
53
- this.ownerClass = ownerClass;
54
- this.field = field;
55
-
56
- Ext.apply(this, config);
57
- };
58
-
59
- ExtMVC.model.plugin.validation.AbstractValidation.prototype = {
60
- /**
61
- * Returns the current value of the field to which this validation applies
62
- * @param {ExtMVC.model.Base} instance The model instance to get the value from
63
- * @return {Mixed} The current value of the field
64
- */
65
- getValue: function(instance) {
66
- return instance.get(this.field);
67
- },
68
-
69
- /**
70
- * Empty function which must be overridden by a validation subclass. Make your function return
71
- * true if the validation passes, false otherwise
72
- * @return {Boolean} True if this validation passes
73
- */
74
- isValid: function(instance) {
75
- return true;
76
- }
77
- };
78
-
79
- /**
80
- * @class ExtMVC.model.plugin.validation.ValidatesPresenceOf
81
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
82
- * Ensures that a field is present. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
83
- */
84
- ExtMVC.model.plugin.validation.ValidatesPresenceOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
85
- /**
86
- * @property message
87
- * @type String
88
- * The textual message returned if this validation didn't pass
89
- */
90
- message: 'must be present',
91
-
92
- /**
93
- * Returns true if the field is an object or a non-empty string
94
- * @return {Boolean} True if the field is present
95
- */
96
- isValid: function(instance) {
97
- var value = this.getValue(instance),
98
- valid = false;
99
-
100
- switch(typeof value) {
101
- case 'object': if (value != null) valid = true; break;
102
- case 'string': if (value.length != 0) valid = true; break;
103
- };
104
-
105
- return valid;
106
- }
107
- });
108
-
109
- /**
110
- * @class ExtMVC.model.plugin.validation.ValidatesLengthOf
111
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
112
- * Returns true if the field is within the length bounds imposed. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
113
- */
114
- ExtMVC.model.plugin.validation.ValidatesLengthOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
115
-
116
- /**
117
- * @property tooShortMessage
118
- * @type String
119
- * The message returned if this field was too short
120
- */
121
- tooShortMessage: 'is too short',
122
-
123
- /**
124
- * @property tooLongMessage
125
- * @type String
126
- * The message returned if this field was too long
127
- */
128
- tooLongMessage: 'is too long',
129
-
130
- message: '',
131
-
132
- /**
133
- * Tests that the mimimum and maximum length of this field are met.
134
- * Intended to be used on strings and arrays
135
- * @return {Boolean} True if the conditions are met
136
- */
137
- isValid: function(instance) {
138
- var value = this.getValue(instance);
139
-
140
- if (typeof value == 'undefined') return true;
141
-
142
- if (this.minimum && value.length < this.minimum) {
143
- this.message = this.tooShortMessage;
144
- return false;
145
- }
146
-
147
- if (this.maximum & value.length > this.maximum) {
148
- this.message = this.tooLongMessage;
149
- return false;
150
- }
151
-
152
- return true;
153
- }
154
- });
155
-
156
- /**
157
- * @class ExtMVC.model.plugin.validation.ValidatesNumericalityOf
158
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
159
- * Ensures that the field is a number. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
160
- */
161
- ExtMVC.model.plugin.validation.ValidatesNumericalityOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
162
- /**
163
- * @property message
164
- * @type String
165
- * The message returned if this field is not a number
166
- */
167
- message: 'must be a number',
168
-
169
- /**
170
- * Returns true if the typeof this field is a number
171
- * @return {Boolean} True if this is a number
172
- */
173
- isValid: function(instance) {
174
- return 'number' == typeof this.getValue(instance);
175
- }
176
- });
177
-
178
- /**
179
- * @class ExtMVC.model.plugin.validation.ValidatesInclusionOf
180
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
181
- * Ensures that the field is one of the allowed values. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
182
- */
183
- ExtMVC.model.plugin.validation.ValidatesInclusionOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
184
-
185
-
186
- /**
187
- * Override Abstract constructor to build the validation message
188
- */
189
- constructor: function(m, f, config) {
190
- //set up defaults
191
- config = config || {};
192
- Ext.applyIf(config, { allowed: [] });
193
-
194
- ExtMVC.model.plugin.validation.ValidatesInclusionOf.superclass.constructor.call(this, m, f, config);
195
-
196
- Ext.applyIf(this, {
197
- message: 'must be one of ' + this.allowed.toSentence('or')
198
- });
199
- },
200
-
201
- /**
202
- * Returns true if the value of this field is one of those specified in this.allowed
203
- * @return {Boolean} True if the field's value is allowed
204
- */
205
- isValid: function(instance) {
206
- var value = this.getValue(instance);
207
-
208
- for (var i=0; i < this.allowed.length; i++) {
209
- if (this.allowed[i] == value) return true;
210
- };
211
-
212
- return false;
213
- }
214
- });
215
-
216
- /**
217
- * @class ExtMVC.model.plugin.validation.ValidatesExclusionOf
218
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
219
- * Ensures that the field is not one of the allowed values. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
220
- */
221
- ExtMVC.model.plugin.validation.ValidatesExclusionOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
222
-
223
- /**
224
- * Override Abstract constructor to build the validation message
225
- * @ignore
226
- */
227
- constructor: function(m, f, config) {
228
- //set up defaults
229
- config = config || {};
230
- Ext.applyIf(config, { disallowed: [] });
231
-
232
- ExtMVC.model.plugin.validation.ValidatesExclusionOf.superclass.constructor.call(this, m, f, config);
233
-
234
- Ext.applyIf(this, {
235
- message: 'must not be ' + this.disallowed.toSentence('or')
236
- });
237
- },
238
-
239
- /**
240
- * Returns true if the value of this field is one of those specified in this.allowed
241
- * @return {Boolean} True if the field's value is allowed
242
- */
243
- isValid: function(instance) {
244
- var value = this.getValue(instance),
245
- valid = true;
246
-
247
- for (var i=0; i < this.disallowed.length; i++) {
248
- if (this.disallowed[i] == value) valid = false;
249
- };
250
-
251
- return valid;
252
- }
253
- });
254
-
255
- /**
256
- * @class ExtMVC.model.plugin.validation.ValidatesFormatOf
257
- * @extends ExtMVC.model.plugin.validation.AbstractValidation
258
- * Ensures that the field matches the given regular expression. See {*link ExtMVC.model.plugin.validation.AbstractValidation AbstractValidation} for example.
259
- */
260
- ExtMVC.model.plugin.validation.ValidatesFormatOf = Ext.extend(ExtMVC.model.plugin.validation.AbstractValidation, {
261
-
262
- /**
263
- * @property message
264
- * @type String
265
- * The default message to return if this validation does not pass
266
- */
267
- message: 'is invalid',
268
-
269
- /**
270
- * Returns true if the value of this field matches the suppled regular expression
271
- * @return {Boolean} True if the field's value matches
272
- */
273
- isValid: function(instance) {
274
- return this.regex.test(this.getValue(instance));
275
- }
276
- });
Binary file
@@ -1,21 +0,0 @@
1
- /**
2
- * Override how getXTypes works so that it doesn't require that every single class has
3
- * an xtype registered for it.
4
- */
5
- Ext.override(Ext.Component, {
6
- getXTypes : function(){
7
- var tc = this.constructor;
8
- if(!tc.xtypes){
9
- var c = [], sc = this;
10
- while(sc){ //was: while(sc && sc.constructor.xtype) {
11
- var xtype = sc.constructor.xtype;
12
- if (xtype != undefined) c.unshift(xtype);
13
-
14
- sc = sc.constructor.superclass;
15
- }
16
- tc.xtypeChain = c;
17
- tc.xtypes = c.join('/');
18
- }
19
- return tc.xtypes;
20
- }
21
- });
@@ -1,142 +0,0 @@
1
- // /**
2
- // * An extension to Ext.extend which calls the extended object's onExtended function, if it exists
3
- // * The only lines that are different from vanilla Ext.extend are the 2 before the return sb statement
4
- // */
5
- // Ext.extend = function(){
6
- // // inline overrides
7
- // var io = function(o){
8
- // for(var m in o){
9
- // this[m] = o[m];
10
- // }
11
- // };
12
- // var oc = Object.prototype.constructor;
13
- //
14
- // return function(sb, sp, overrides){
15
- // if(Ext.isObject(sp)){
16
- // overrides = sp;
17
- // sp = sb;
18
- // sb = overrides.constructor!= oc ? overrides.constructor : function(){sp.apply(this, arguments);};
19
- // }
20
- // var F = function(){},
21
- // sbp,
22
- // spp = sp.prototype;
23
- //
24
- // F.prototype = spp;
25
- // sbp = sb.prototype = new F();
26
- // sbp.constructor=sb;
27
- // sb.superclass=spp;
28
- // if(spp.constructor == oc){
29
- // spp.constructor=sp;
30
- // }
31
- // sb.override = function(o){
32
- // Ext.override(sb, o);
33
- // };
34
- // sbp.superclass = sbp.supr = (function(){
35
- // return spp;
36
- // });
37
- // sbp.override = io;
38
- // Ext.override(sb, overrides);
39
- // sb.extend = function(o){Ext.extend(sb, o);};
40
- //
41
- // var extendFunction = sb.prototype.onExtended;
42
- // if (extendFunction) extendFunction.call(sb.prototype);
43
- //
44
- // return sb;
45
- // };
46
- // }();
47
-
48
- // (function() {
49
- // var inlineOverrides = function(o) {
50
- // for(var m in o){
51
- // this[m] = o[m];
52
- // }
53
- // };
54
- //
55
- // //reference to the constructor of Object - we can match against this so as not to extend improperly
56
- // var objectConstructor = Object.prototype.constructor;
57
- //
58
- // /**
59
- // * Returns true if the given function is the bottom level Object object. We use this to test if we are
60
- // * extending Object directly, or some subclass of Object.
61
- // * @param {Object} superclass The superclass constructor function
62
- // */
63
- // var superclassIsObject = function(superclass) {
64
- // return superclass.prototype.constructor == objectConstructor;
65
- // };
66
- //
67
- // Ext.extend = function() {
68
- // //this method has two different signatures - 2 or 3 arguments
69
- // if (arguments.length == 3) {
70
- // // 3 arguments - where we're given the subclass constructor function, the superclass and some overrides
71
- // var subclassConstructor = arguments[0],
72
- // superclass = arguments[1],
73
- // overrides = arguments[2];
74
- // } else {
75
- // // 2 arguments - where we're just given the superclass and some overrides
76
- // var superclass = arguments[0],
77
- // overrides = arguments[1];
78
- //
79
- // // Because we weren't given a subclass constructor, make one now
80
- // var subclassConstructor = overrides.constructor == objectConstructor
81
- // ? function(){superclass.apply(this, arguments);} //TODO: Explain this
82
- // : overrides.constructor;
83
- // }
84
- //
85
- // //This is the beginnings of our new class - just an empty function for now
86
- // var F = function() {};
87
- //
88
- // //set our new class' prototype to the same as the superclass
89
- // F.prototype = superclass.prototype;
90
- //
91
- // // This is where the actual 'inheritance' happens. In JavaScript we extend objects by setting the prototype
92
- // // of a new object to an instance of an existing one
93
- // subclassConstructor.prototype = new F();
94
- //
95
- // // We'll use the subclass and superclass prototypes a lot, so get references to them here
96
- // var subclassProto = subclassConstructor.prototype,
97
- // superclassProto = superclass.prototype;
98
- //
99
- // //Tell our new subclass its constructor
100
- // subclassProto.constructor = subclassConstructor;
101
- //
102
- // //TODO: Here we're giving the subclass's constructor FUNCTION a supertype property, which is set to the prototype
103
- // //of the supertype... why?
104
- // subclassConstructor.superclass = superclass.prototype;
105
- //
106
- // // TODO: Explain this
107
- // if (superclassIsObject(superclass)) superclassProto.constructor = superclass;
108
- //
109
- // //This is what enables your to do things like MyExtendedClass.superclass.initComponent.apply(this, arguments);
110
- // subclassProto.superclass = subclassProto.supr = function() {
111
- // return superclassProto;
112
- // };
113
- //
114
- // subclassProto.override = inlineOverrides;
115
- // Ext.override(subclassConstructor, overrides);
116
- //
117
- // //Here we're adding override and extend to the constructor Function itself... for some reason (e.g. Ext.Window.override({}))
118
- // Ext.apply(subclassConstructor, {
119
- // extend: function(o){
120
- // Ext.extend(subclassConstructor, o);
121
- // },
122
- // override: function(o) {
123
- // Ext.override(subclassConstructor, o);
124
- // }
125
- // });
126
- //
127
- // return subclassConstructor;
128
- // };
129
- // })();
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
@@ -1,15 +0,0 @@
1
- Screw.Unit(function() {
2
- describe("Array extensions", function() {
3
- describe("toSentence", function() {
4
- var array = ['Adama', 'Tigh', 'Roslin'];
5
-
6
- it("should join an array using and by default", function() {
7
- expect(array.toSentence()).to(equal, "Adama, Tigh and Roslin");
8
- });
9
-
10
- it("should allow specification of a custom connector string", function() {
11
- expect(array.toSentence('or')).to(equal, "Adama, Tigh or Roslin");
12
- });
13
- });
14
- });
15
- });