Skip to content

Commit 9567af0

Browse files
author
anthinkingcoder
committed
first commit
1 parent 742460a commit 9567af0

File tree

7 files changed

+1342
-0
lines changed

7 files changed

+1342
-0
lines changed

.babelrc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"presets": [
3+
[
4+
"latest",
5+
{
6+
"es2015": {
7+
"modules": false
8+
}
9+
}
10+
]
11+
],
12+
"plugins": [
13+
"external-helpers"
14+
]
15+
}

.gitignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
.DS_Store
2+
node_modules
3+
/dist
4+
5+
# local env files
6+
.env.local
7+
.env.*.local
8+
9+
# Log files
10+
npm-debug.log*
11+
yarn-debug.log*
12+
yarn-error.log*
13+
14+
# Editor directories and files
15+
.idea
16+
.vscode
17+
*.suo
18+
*.ntvs*
19+
*.njsproj
20+
*.sln
21+
*.sw*

index.js

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
/**
2+
* 生成loading action
3+
* @param commit
4+
* @param loading
5+
* @param fn
6+
* @returns {function(*=, *=)}
7+
*/
8+
function aopLoading(commit, loading, fn) {
9+
loading = normalizeMutationName(loading)
10+
return (success, error, ...otherArg) => {
11+
commit(loading, true)
12+
success = pointer(commit, loading, success)
13+
error = pointer(commit, loading, error)
14+
fn.call(null,
15+
(...arg) => success.apply(null, arg),
16+
(...arg) => error.apply(null, arg),
17+
otherArg)
18+
}
19+
}
20+
21+
/**
22+
* 生成loading state
23+
* mapLoadingState({datasA:[],datasB:[]}) => {datasA:[],datasLoading:false,datasB:[],datasBLoading:false}
24+
* mapLoadingState({datasA:[],datasB:[]},'loading') => {datasA:[],datasB:[],loading:false}
25+
* @param stateObj
26+
* @param totalLoadingName 整个stateObj共有的loading,如果不为空,stateObj将共享这个loading,不再生成自己的loading
27+
* @returns {{}}
28+
*/
29+
function mapLoadingState(stateObj, totalLoadingName) {
30+
let res = {}
31+
Object.keys(stateObj).forEach(key => {
32+
res[key] = stateObj[key]
33+
if (!totalLoadingName) {
34+
res[normalizeLoadingName(key)] = false
35+
}
36+
})
37+
if (totalLoadingName) {
38+
res[totalLoadingName] = false
39+
}
40+
return res
41+
}
42+
43+
/**
44+
* 生成loading mutation
45+
* @param nameArray mutation name数组
46+
* @returns {Array} 返回mutation方法数组
47+
*/
48+
function mapLoadingMutation(nameArray = []) {
49+
let res = {}
50+
nameArray.forEach(name => {
51+
let fnName = normalizeMutationName(name)
52+
res[fnName] = (state, loading) => {
53+
state[name] = loading
54+
}
55+
})
56+
return res
57+
}
58+
59+
/**
60+
* 生成loading getters
61+
* @param nameArray loading state name array
62+
* @returns {{}}
63+
*/
64+
function mapLoadingGetter(nameArray = []) {
65+
let res = {}
66+
normalizeMap(nameArray).forEach(item => {
67+
res[item['key']] = (state) => {
68+
return state[item['val']]
69+
}
70+
})
71+
return res
72+
}
73+
74+
/**
75+
* 初始化变更函数名 loading -> setLoading
76+
* @param name
77+
* @returns {string}
78+
*/
79+
function normalizeMutationName(name) {
80+
name = name.replace(/^([a-zA-Z])/, (ar1) => ar1.toUpperCase())
81+
return `set${name}`
82+
}
83+
84+
/**
85+
* 默认loading name为数据源state name + Loading
86+
* @param name
87+
* @returns {string}
88+
*/
89+
function normalizeLoadingName(name) {
90+
return `${name}Loading`
91+
}
92+
93+
/**
94+
* [1,2,3] => [{key:1,val:1},{key:2,val:2},{key:3,val:3}]
95+
* {a:1,b:2,c:3} => [{key:a,val:1},{key:b,val:2},{key:c,val:3}]
96+
* @param map
97+
* @returns {Array}
98+
*/
99+
function normalizeMap(map) {
100+
return Array.isArray(map) ? map.map(key => {
101+
return {key, val: key}
102+
})
103+
: Object.keys(map).map(key => {
104+
return {key, val: map[key]}
105+
})
106+
}
107+
108+
/**
109+
* 切点,切入loading=false的commit
110+
* @param commit
111+
* @param loading
112+
* @param fn
113+
* @returns {Function}
114+
*/
115+
function pointer(commit, loading, fn) {
116+
return function (...arg) {
117+
commit(loading, false)
118+
fn.apply(null, arg)
119+
}
120+
}
121+
122+
export {
123+
aopLoading,
124+
mapLoadingMutation,
125+
mapLoadingState,
126+
mapLoadingGetter
127+
}

lib/vuex-loading.js

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
'use strict';
2+
3+
Object.defineProperty(exports, '__esModule', { value: true });
4+
5+
/**
6+
* 生成loading action
7+
* @param commit
8+
* @param loading
9+
* @param fn
10+
* @returns {function(*=, *=)}
11+
*/
12+
function aopLoading(commit, loading, fn) {
13+
loading = normalizeMutationName(loading);
14+
return function (success, error) {
15+
for (var _len = arguments.length, otherArg = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
16+
otherArg[_key - 2] = arguments[_key];
17+
}
18+
19+
commit(loading, true);
20+
success = pointer(commit, loading, success);
21+
error = pointer(commit, loading, error);
22+
fn.call(null, function () {
23+
for (var _len2 = arguments.length, arg = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
24+
arg[_key2] = arguments[_key2];
25+
}
26+
27+
return success.apply(null, arg);
28+
}, function () {
29+
for (var _len3 = arguments.length, arg = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
30+
arg[_key3] = arguments[_key3];
31+
}
32+
33+
return error.apply(null, arg);
34+
}, otherArg);
35+
};
36+
}
37+
38+
/**
39+
* 生成loading state
40+
* mapLoadingState({datasA:[],datasB:[]}) => {datasA:[],datasLoading:false,datasB:[],datasBLoading:false}
41+
* mapLoadingState({datasA:[],datasB:[]},'loading') => {datasA:[],datasB:[],loading:false}
42+
* @param stateObj
43+
* @param totalLoadingName 整个stateObj共有的loading,如果不为空,stateObj将共享这个loading,不再生成自己的loading
44+
* @returns {{}}
45+
*/
46+
function mapLoadingState(stateObj, totalLoadingName) {
47+
var res = {};
48+
Object.keys(stateObj).forEach(function (key) {
49+
res[key] = stateObj[key];
50+
if (!totalLoadingName) {
51+
res[normalizeLoadingName(key)] = false;
52+
}
53+
});
54+
if (totalLoadingName) {
55+
res[totalLoadingName] = false;
56+
}
57+
return res;
58+
}
59+
60+
/**
61+
* 生成loading mutation
62+
* @param nameArray mutation name数组
63+
* @returns {Array} 返回mutation方法数组
64+
*/
65+
function mapLoadingMutation() {
66+
var nameArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
67+
68+
var res = {};
69+
nameArray.forEach(function (name) {
70+
var fnName = normalizeMutationName(name);
71+
res[fnName] = function (state, loading) {
72+
state[name] = loading;
73+
};
74+
});
75+
return res;
76+
}
77+
78+
/**
79+
* 生成loading getters
80+
* @param nameArray loading state name array
81+
* @returns {{}}
82+
*/
83+
function mapLoadingGetter() {
84+
var nameArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
85+
86+
var res = {};
87+
normalizeMap(nameArray).forEach(function (item) {
88+
res[item['key']] = function (state) {
89+
return state[item['val']];
90+
};
91+
});
92+
return res;
93+
}
94+
95+
/**
96+
* 初始化变更函数名 loading -> setLoading
97+
* @param name
98+
* @returns {string}
99+
*/
100+
function normalizeMutationName(name) {
101+
name = name.replace(/^([a-zA-Z])/, function (ar1) {
102+
return ar1.toUpperCase();
103+
});
104+
return 'set' + name;
105+
}
106+
107+
/**
108+
* 默认loading name为数据源state name + Loading
109+
* @param name
110+
* @returns {string}
111+
*/
112+
function normalizeLoadingName(name) {
113+
return name + 'Loading';
114+
}
115+
116+
/**
117+
* [1,2,3] => [{key:1,val:1},{key:2,val:2},{key:3,val:3}]
118+
* {a:1,b:2,c:3} => [{key:a,val:1},{key:b,val:2},{key:c,val:3}]
119+
* @param map
120+
* @returns {Array}
121+
*/
122+
function normalizeMap(map) {
123+
return Array.isArray(map) ? map.map(function (key) {
124+
return { key: key, val: key };
125+
}) : Object.keys(map).map(function (key) {
126+
return { key: key, val: map[key] };
127+
});
128+
}
129+
130+
/**
131+
* 切点,切入loading=false的commit
132+
* @param commit
133+
* @param loading
134+
* @param fn
135+
* @returns {Function}
136+
*/
137+
function pointer(commit, loading, fn) {
138+
return function () {
139+
commit(loading, false);
140+
141+
for (var _len4 = arguments.length, arg = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
142+
arg[_key4] = arguments[_key4];
143+
}
144+
145+
fn.apply(null, arg);
146+
};
147+
}
148+
149+
exports.aopLoading = aopLoading;
150+
exports.mapLoadingMutation = mapLoadingMutation;
151+
exports.mapLoadingState = mapLoadingState;
152+
exports.mapLoadingGetter = mapLoadingGetter;

0 commit comments

Comments
 (0)