Skip to content

Commit

Permalink
0.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
woowa committed Jul 19, 2017
1 parent 9f687f2 commit de35560
Show file tree
Hide file tree
Showing 42 changed files with 2,757 additions and 422 deletions.
14 changes: 6 additions & 8 deletions dist/woowahan.js

Large diffs are not rendered by default.

14 changes: 6 additions & 8 deletions examples/middleware/woowahan.js

Large diffs are not rendered by default.

22 changes: 17 additions & 5 deletions examples/route/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import Woowahan from '../../index';

global.$ = global.jQuery = Woowahan.$;

global.log = function(log, color) {
console.log(`%c${log}`, `color: ${color}`);
};

import {
MainView,
LayoutView1, LayoutView2, LayoutView3,
Expand All @@ -10,13 +14,21 @@ import {
SubContentView1, SubContentView2 } from './view/';
import { DISPATCH_ACTION } from './action';

import { LogMiddleware, DebugMiddleware, TimeoutMiddleware } from './middleware';
import {
AppMiddlewarePre, AppMiddleware,
ViewMiddleware,
ReducerMiddlewarePre, ReducerMiddleware,
RouterMiddlewarePre, RouterMiddleware } from './middleware';

const app = new Woowahan();

app.set(LogMiddleware);
app.set(DebugMiddleware);
app.set(TimeoutMiddleware);
app.set(AppMiddlewarePre);
app.set(AppMiddleware, 'test');
app.set(ViewMiddleware, 'test');
app.set(ReducerMiddlewarePre);
app.set(ReducerMiddleware, 'test');
app.set(RouterMiddlewarePre);
app.set(RouterMiddleware, 'test');

/* layout 생성 & 등록 */
app.use(Woowahan.Layout('.wrap', LayoutView1));
Expand All @@ -36,7 +48,7 @@ app.use(Woowahan.Reducer.create(DISPATCH_ACTION, function() {
/* 사이트맵 디자인 */
const siteDesign = [
{ url: '/', view: MainView, container: '.wrap' },
{ url: '/layout1', view: MainView1, container: '#content', layout: 'LayoutView1', routeName: 'Layout1', pages: [
{ url: '/layout1', view: MainView1, container: '#content', layout: 'LayoutView1', routeName: 'Layout1', routeData: { route: 'good' }, pages: [
{ url: 'content1', view: ContentView1, routeName: 'Layout1Content1', pages: [
{ url: 'sub1', view: SubContentView1, routeName: 'Layout1Content1Sub1' },
{ url: ':sub2', view: SubContentView2, routeName: 'Layout1Content1Sub2' }
Expand Down
152 changes: 139 additions & 13 deletions examples/route/middleware/index.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,152 @@
export const LogMiddleware = function() {
this.mwtype = 'router';
this.features = ['params', 'query'];
export const AppMiddlewarePre = function() {
this.mwtype = 'app';

this.before = function(app) {
log('[AppMiddlewarePre] before called', 'red');
};

this.after = function(app) {
log('[AppMiddlewarePre] after called', 'red');

app.setStates({ test: 'test' });
};
};

export const AppMiddleware = function(test) {
this.mwtype = 'app';

if (test !== 'test') throw new Error('AppMiddleware 인자 에러');

this.before = function(app, next) {
log('[AppMiddleware] before called', 'red');

if (typeof app !== 'object' || typeof next !== 'function') throw new Error('AppMiddleware before 인자 에러');
if (Backbone.History.started) throw new Error('AppMiddleware before 발동 시점 에러');

const state = app.getStates('test');

if (state !== 'test') throw new Error('AppMiddleware before app 인자 에러');

app.beforeTested = false;

setTimeout(function() {
app.beforeTested = true;

next();
}, 1000);
};

this.after = function(app, next) {
log('[AppMiddleware] after called', 'red');

this.before = function(feature) {
console.log('router middleware');
if (typeof app !== 'object' || typeof next !== 'function') throw new Error('AppMiddleware after 인자 에러');
if (!app.beforeTested) throw new Error('AppMiddleware after 발동 시점 에러');

next();
};
};

export const DebugMiddleware = function() {
export const ViewMiddleware = function(test) {
this.mwtype = 'view';
this.features = [];

this.after = function(view, dom) {
console.log('view middleware');
if (test !== 'test') throw new Error('ViewMiddleware 인자 에러');

this.before = function(view, next) {
log('[ViewMiddleware] before called', 'orange');

if (typeof view !== 'object' || typeof next !== 'function') throw new Error('ViewMiddleware before 인자 에러');

next();
};

this.after = function(view, next) {
log('[ViewMiddleware] after called', 'orange');

if (typeof view !== 'object' || typeof next !== 'function') throw new Error('ViewMiddleware after 인자 에러');
if (view.$el.html() === '') throw new Error('ViewMiddleware after 발동 시점 에러');

view.$el.append('<p>ViewMiddleware add this text.</p>');
next();
};

this.unmount = function(view, next) {
log('[ViewMiddleware] unmount called', 'orange');

if (typeof view !== 'object' || typeof next !== 'function') throw new Error('ViewMiddleware unmout 인자 에러');
if (view.$el.html() === '') throw new Error('ViewMiddleware unmount 발동 시점 에러');

setTimeout(function() {
if (!view || view.$el.html() === '') throw new Error('ViewMiddleware unmount 발동 시점 에러');

next();
}, 1000);
};
};

export const TimeoutMiddleware = function() {
export const ReducerMiddlewarePre = function() {
this.mwtype = 'reducer';
this.features = ['timeout'];

this.before = function(feature) {
feature.timeout = 10000;
this.before = function(settings) {
log('[ReducerMiddlewarePre] before called', 'blue');

settings.timeout = 5000000;
};
};

export const ReducerMiddleware = function(test) {
this.mwtype = 'reducer';

if (test !== 'test') throw new Error('ReducerMiddleware 인자 에러');

this.before = function(settings, app, next) {
log('[ReducerMiddleware] before called', 'blue');

if (typeof app !== 'object' || typeof next !== 'function') throw new Error('ReducerMiddleware before 인자 에러');
if (settings.timeout !== 5000000) throw new Error('ReducerMiddleware before 인자 에러');

next();
};

this.after = function(app, next) {
log('[ReducerMiddleware] after called', 'blue');

if (typeof app !== 'object' || typeof next !== 'function') throw new Error('ReducerMiddleware after 인자 에러');

next();
};
};

export const RouterMiddlewarePre = function() {
this.mwtype = 'router';

this.before = function(route, app) {
log('[RouterMiddlewarePre] before called', 'green');
};

this.after = function(route, app) {
log('[RouterMiddlewarePre] after called', 'green');
};
};

export const RouterMiddleware = function(test) {
this.mwtype = 'router';

if (test !== 'test') throw new Error('RouterMiddleware 인자 에러');

this.before = function(route, app, next) {
log('[RouterMiddleware] before called', 'green');

if (typeof app !== 'object' || typeof next !== 'function') throw new Error('RouterMiddleware before 인자 에러');
if (route.url === 'layout1' && route.routeData.route !== 'good') throw new Error('RouterMiddleware before 인자 에러');

next();
};

this.after = function(route, app, next) {
log('[RouterMiddleware] after called', 'green');

if (typeof app !== 'object' || typeof next !== 'function') throw new Error('RouterMiddleware after 인자 에러');

next();
};
};
2 changes: 2 additions & 0 deletions examples/schema/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import Woowahan from '../../index';
import HelloView from './hello-view';
import _ from 'underscore';

global.$ = global.jQuery = Woowahan.$;
global._ = _;

var app = new Woowahan();

Expand Down
12 changes: 12 additions & 0 deletions examples/schema/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion examples/schema/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"webpack-stream": "^2.1.1"
},
"dependencies": {
"bootstrap": "^3.3.6"
"bootstrap": "^3.3.6",
"underscore": "^1.8.3"
}
}
14 changes: 6 additions & 8 deletions examples/timer/js/woowahan.js

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions examples/todo/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/todo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"babel-preset-es2015": "^6.1.2",
"css-loader": "^0.23.1",
"del": "^1.1.1",
"dexie": "^1.5.1",
"gulp": "^3.8.11",
"gulp-autoprefixer": "^2.1.0",
"gulp-if": "^2.0.1",
Expand All @@ -39,7 +40,6 @@
"webpack-stream": "^2.1.1"
},
"dependencies": {
"dexie": "^1.4.1",
"todomvc-app-css": "^2.0.6",
"todomvc-common": "^1.0.2"
}
Expand Down
18 changes: 13 additions & 5 deletions lib/collection-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ var app = void 0;

CollectionView = Woowahan.View.create('CollectionView', {
super: function _super() {
CollectionView.prototype.initialize.apply(this, arguments);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}

CollectionView.prototype.initialize.apply(this, args);
},
initialize: function initialize() {
this.collection = this.collection || new Backbone.Collection();
Expand All @@ -22,7 +26,11 @@ CollectionView = Woowahan.View.create('CollectionView', {
this.rowViews = [];
this.reverse = false;

Woowahan.View.prototype.initialize.apply(this, arguments);
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}

Woowahan.View.prototype.initialize.apply(this, args);
},
viewWillUnmount: function viewWillUnmount() {
var model = void 0;
Expand All @@ -42,7 +50,7 @@ CollectionView = Woowahan.View.create('CollectionView', {
container = this.$el;

if (!this.$el.is(this.rowContainer)) {
throw 'undefined rowContainer';
throw new Error('undefined rowContainer');
}
}

Expand All @@ -58,7 +66,7 @@ CollectionView = Woowahan.View.create('CollectionView', {

this.rowViews.push(view);

model.on('remove', function (data) {
model.on('remove', function () {
_this.rowViews.splice(_this.rowViews.indexOf(view), 1);

view.close();
Expand All @@ -80,7 +88,7 @@ CollectionView = Woowahan.View.create('CollectionView', {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

if (Object.prototype.toString.call(options) !== '[object Object]') {
throw 'invalid options!!!';
throw new Error('invalid options!!!');
}

var uid = options.uid;
Expand Down
25 changes: 16 additions & 9 deletions lib/item-view.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
'use strict';

/*global _*/
var Woowahan = require('./woowahan');
var events = require('./events');

Expand All @@ -14,30 +13,38 @@ ItemView = Woowahan.View.create('ItemView', {
},

super: function _super() {
ItemView.prototype.initialize.apply(this, arguments);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}

ItemView.prototype.initialize.apply(this, args);
},
initialize: function initialize() {
Woowahan.View.prototype.initialize.apply(this, arguments);
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}

Woowahan.View.prototype.initialize.apply(this, args);
},
_onSelectedRow: function _onSelectedRow(event) {
if (this.onSelectedRow && typeof this.onSelectedRow === 'function') {
this.onSelectedRow(event, function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}

this.trigger.apply(this, _.concat(events.SELECTED_ROW, args));
this.trigger.apply(this, Array.prototype.concat.call([], events.SELECTED_ROW, args));
}.bind(this));
}
},
_onSelectedCell: function _onSelectedCell(event) {
if (this.onSelectedCell && typeof this.onSelectedCell === 'function') {
this.onSelectedRow(event, function () {
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}

this.trigger.apply(this, Array.prototype.concat.call(events.SELECTED_CELL, args));
this.trigger.apply(this, Array.prototype.concat.call([], events.SELECTED_CELL, args));
}.bind(this));
}
}
Expand Down
Loading

0 comments on commit de35560

Please sign in to comment.