Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

next: некоторый рефакторинг ns.Model, ns.ModelCollection и совсем немного ns.View #192

Merged
merged 108 commits into from
Apr 16, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
c9a937c
move mc eventlisteners
Jan 16, 2014
ed1a3c4
made destroyWith static
Jan 16, 2014
8441403
just move static methods to group them all
Jan 16, 2014
0ea7642
more methods sorting
Jan 16, 2014
82f8dcc
little refactor of the ns.Model set method
Jan 16, 2014
21262e4
getData little refactor
Jan 16, 2014
92c3124
group get data and set data methods
Jan 16, 2014
45fa449
little update for setData method
Jan 16, 2014
d76b69f
no more copypaste in requestParams / key methods
Jan 16, 2014
69bc1f6
make isCollection method static
Jan 16, 2014
af503e0
easy check ns.Model.isValid
Jan 16, 2014
d01f609
ns.Model.invalidate little update
Jan 16, 2014
42ebbe3
little updates
Jan 16, 2014
d9ec7d7
little update of ns.Model.isCollection
Jan 16, 2014
9581b79
comment about ModelUniq
Jan 16, 2014
3a81645
rename ns.Model.getKeyParams to ns.Model._getKeyParams
Jan 17, 2014
2caf8c7
started writing simple api docs
Jan 17, 2014
4464d51
little docs update
Jan 17, 2014
14e4699
little note about ns.Model.destroy
Jan 17, 2014
afa29c1
ns.ModelCollection: refactor subscribe to item events
Jan 17, 2014
8a44064
fix jshint and little refactor of ns.ModelCollection._splitModels
Jan 17, 2014
34cfe9e
rename splitUnsubscribe to unsubscribe for shortness and little refac…
Jan 17, 2014
1c20e07
rename _setData into _beforeSetData
Jan 17, 2014
39562fe
little refactor of _beforeSetData
Jan 17, 2014
8f2dcbe
better var name
Jan 17, 2014
f9dadf7
rename info to splitInfo to not confuse it with info
Jan 17, 2014
39219aa
little fixes
Jan 17, 2014
417a288
please, do not write obvious comments
Jan 17, 2014
0e62944
comments fix
Jan 17, 2014
4b82bfb
collection api doc
Jan 17, 2014
35ee4a4
ns.View: just sorting methods
Jan 17, 2014
cc9ba15
remove unused _onModelChangeBinded
Jan 17, 2014
c9a216f
remove unused method _unbindModels
Jan 17, 2014
868c9f7
one more little resort
Jan 17, 2014
58b0d53
little resort
Jan 17, 2014
0957520
model _onModelChange was not used
Jan 17, 2014
d244387
var names
Jan 17, 2014
5543948
var names one more time
Jan 17, 2014
f1c3ef4
move subviews init to separate method
Jan 17, 2014
6ac48e8
move big comment out of the method
Jan 17, 2014
8c0b082
rename var for readability
Jan 17, 2014
7a7b820
_unbindModels is back + added _bindModel
Jan 17, 2014
b8b0f45
rename _initInfo into _initInfoEvents
Jan 18, 2014
b02b08d
methods resort: move _initInfoParams up
Jan 18, 2014
1618b28
ns.assert
Jan 18, 2014
d457f64
ns.assert accepts parameters for error message
Jan 18, 2014
a85189e
use ns.assert part 1
Jan 18, 2014
add9e8d
more ns.assert usages
Jan 18, 2014
af34328
more ns.assert usage
Jan 18, 2014
b3a7f9f
more comments about view params
Jan 18, 2014
8e63238
moved create events binding to separate method _bindCreateEvents
Jan 18, 2014
227a472
remove trivial comment
Jan 18, 2014
348a099
some comments update
Jan 18, 2014
22cc4fa
some more comments
Jan 18, 2014
ca7d9ad
comment reformat
Jan 18, 2014
2263944
comment fix
Jan 18, 2014
a820e8e
one more comment fix
Jan 18, 2014
b7a8e6c
fixing tests
Jan 18, 2014
71a9a92
fix collection models init
Jan 18, 2014
1680689
make a shortcut for ns.Model.destroyWith
Jan 18, 2014
20aaf9a
fix renamed internal method _setData 2 _beforeSetData
Jan 18, 2014
0462a29
typo fixed
Jan 18, 2014
0c0f2a2
fix first part of tests: no more triggering collection events via col…
Jan 18, 2014
e67438d
removed meaningless test
Jan 18, 2014
03cfa8d
removed 3 more tests that are meaningless
Jan 18, 2014
efd3628
fix jscs warning
Jan 18, 2014
a1b2a6e
ns.model replace all throws to ns.asserts
Jan 18, 2014
b87074b
added make test
Jan 18, 2014
cab4805
refactor unsubscribe in modelcollection save way as in view
Jan 19, 2014
5e2ff7b
collection item events proxy tests part 1
Jan 19, 2014
5ffada0
test for overriding onItemChanged method
Jan 19, 2014
b522f3d
tests for the same model in multiple collections
Jan 19, 2014
f685866
_modelEvents must not be overwritten
Jan 19, 2014
bc809e9
test for "redraw view after model invalidate while view was hidden"
Jan 23, 2014
d91e962
remove unbindModels and test case for double view invalidate and view…
Jan 23, 2014
38c9040
fix ns.requestManager bug (sometimes model in error status was set to…
Jan 24, 2014
a6643eb
One more test for ns.Update.handleError
Jan 24, 2014
732390e
little improvement for async views: set status to ok when setting nod…
Jan 24, 2014
2cd5832
ns.assert.fail for faster error throw
Jan 25, 2014
8eca4e3
ns.Model.prototype.needDataUpdate(data) added
Feb 1, 2014
bd079fb
ns.Model.prototype.needDataUpdate(data) tests
Feb 1, 2014
05437b3
fix ns.assert.fail and write tests
Feb 1, 2014
40215f4
moar tests
Feb 1, 2014
bf1a3b7
replace one more assert
Feb 1, 2014
4107394
ns-page-before-load: + newPageUrl
Feb 1, 2014
ad2fcea
fix ns-page-before-load event triggering
Feb 1, 2014
ac244da
some tests for subview update
Feb 2, 2014
542b32b
test by @lapple
Feb 6, 2014
f20be1c
fix async view hide
Feb 7, 2014
dfa60ca
fix test libs version: otherwise tests may fail because of the phanto…
Feb 7, 2014
4ef7506
Added DOM `input` event
i2r Mar 4, 2014
333b6b0
Merge pull request #203 from i2r/master
doochik Mar 4, 2014
bc7f9f8
fix tests
Mar 9, 2014
c623cba
fix ns.router2 tests
Mar 23, 2014
53b2eb6
Parameter filter #204
Mar 23, 2014
9ef868f
comment in changelog
Mar 23, 2014
618dc36
one more little test
Mar 23, 2014
a6d2794
fix parameter value validation
Mar 23, 2014
ead862d
ns.Model info.params function support
Mar 29, 2014
26c44f7
Не нужно передавать id модели в info.params функцию
Mar 29, 2014
d58e182
Поддержка info.params функции теперь в ns.View
Mar 29, 2014
bcca729
тесты и fix для вычисления ключа view
Mar 29, 2014
202fbd6
Тест на тему того, что за params надо хранить в инстансе view
Mar 29, 2014
1f561a6
fix view instance params value
Mar 29, 2014
f515bde
urlencode url params when generate url
Apr 1, 2014
f33a64d
test disqus
chestozo Apr 11, 2014
98fe4c3
remove disqus
chestozo Apr 11, 2014
d6d2e18
Merge remote-tracking branch 'origin/master' into next
doochik Apr 16, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export NPM_BIN
yate: test/tests.yate.js

test/tests.yate.js: test/tests.yate
node_modules/.bin/yate test/tests.yate > test/tests.yate.js
$(NPM_BIN)/yate test/tests.yate > test/tests.yate.js

node_modules: package.json
npm install
Expand All @@ -16,4 +16,7 @@ clean-node_modules:
grunt: node_modules yate
$(NPM_BIN)/grunt

.PHONY: clean-node_modules grunt yate
test: grunt
$(NPM_BIN)/jscs .

.PHONY: clean-node_modules grunt yate test
48 changes: 48 additions & 0 deletions doc/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
### `ns.Model`
```js
// Static API
ns.Model.define(id, info, base)
ns.Model.info(id)
ns.Model.infoLite(id)
ns.Model.key(id, params, info)
ns.Model.get(id, params)
ns.Model.getValid(id, params)
ns.Model.isValid(id, params)
ns.Model.invalidate(id, filter)
ns.Model.destroy(model)
ns.Model.destroyWith(targetModel, withModels)
ns.Model.isCollection(model)

// Instance API
model.getRequestParams()
model.prepareRequest(requestId)
model.canRetry()
model.extractData(result)
model.extractError(result)
model.preprocessData(data)
model.setData(data, options) // options.silent
model.set(jpath, value, options) // options.silent
model.getData() // Returns whole data object
model.get(jpath) // Returns some data object property
model.select(jpath) // Returns an array of values, selected from data object (useful when there are many results returned by the same jpath)
model.setError(error)
model.getError()
model.isValid()
model.isDo()
model.getVersion()
model.touch()
model.invalidate()
```


### `ns.ModelCollection`
```js
// Instance API
collection.insert(models, index)
collection.remove(models)
collection.getSelfVersion()
collection.clear()
collection.onItemChanged(evt, model, jpath)
collection.onItemTouched(evt, model)
collection.onItemDestroyed(evt, model)
```
1 change: 1 addition & 0 deletions src/ns.consts.events.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ ns.V.EVENTS = {
ns.V.DOM_EVENTS = [
'blur',
'change',
'input',
'click',
'dblclick',
'dragstart',
Expand Down
2 changes: 1 addition & 1 deletion src/ns.consts.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ ns.R = {
* Тут специально выбрано длинное название,
* чтобы не пересечься с нормальными страницами.
*/
REDIRECT: 'ns-router-redirect'
REDIRECT: 'ns-router-redirect'
};

/**
Expand Down
43 changes: 43 additions & 0 deletions src/ns.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/*jshint unused: vars */

/**
* noscript MVC framework
* @namespace
Expand Down Expand Up @@ -145,6 +147,47 @@ ns.transaction = function(cb) {
ns.page.go(ns.page._lastUrl);
};

/**
* Выполняет проверку, что первый аргумент истиннен.
* Если это не так - кидает ошибку.
* @param {?} truthy Любое значение, которое проверяется на истинность.
* @param {String} contextName Контекст для быстрого поиска места возникновения ошибки.
* @param {String} message Сообщение об ошибке.
*/
ns.assert = function(truthy, contextName, message) {
if (!truthy) {
ns.assert.fail.apply(this, Array.prototype.slice.call(arguments, 1));
}
};

/**
* Кидает ошибку с понятным сообщением.
* @param {String} contextName Контекст для быстрого поиска места возникновения ошибки.
* @param {String} message Сообщение об ошибке.
*/
ns.assert.fail = function(contextName, message) {
var messageArgs = Array.prototype.slice.call(arguments, 2);
for (var i = 0; i < messageArgs.length; i++) {
message = message.replace('%s', messageArgs[i]);
}
throw new Error('[' + contextName + '] ' + message);
};

/**
* Строит ключ по готовому объекту параметров.
* @param {string} prefix Префикс ключа.
* @param {Object} params Объект с параметрами составляющими ключ.
* @return {string} Строка ключа.
*/
ns.key = function(prefix, params) {
var key = prefix;
params = params || {};
for (var pName in params) {
key += '&' + pName + '=' + params[pName];
}
return key;
};

if (window['mocha']) {

/**
Expand Down
Loading