updated bug修复及精简部分代码
This commit is contained in:
parent
063f4f231f
commit
a5f06ac144
6
dist/relationship.min.js
vendored
6
dist/relationship.min.js
vendored
File diff suppressed because one or more lines are too long
@ -197,6 +197,8 @@
|
|||||||
'[xb|xs]':['兄弟姐妹','同胞','手足'],
|
'[xb|xs]':['兄弟姐妹','同胞','手足'],
|
||||||
'[f,xb,s&o|f,xb,s&l]':['堂兄弟'],
|
'[f,xb,s&o|f,xb,s&l]':['堂兄弟'],
|
||||||
'[f,xb,d&o|f,xb,d&l]':['堂姐妹'],
|
'[f,xb,d&o|f,xb,d&l]':['堂姐妹'],
|
||||||
|
'[m,xs,s&o|m,xs,s&l]':['姨兄弟'],
|
||||||
|
'[m,xs,d&o|m,xs,d&l]':['姨姐妹'],
|
||||||
'[f,xs,s&o|f,xs,s&l|m,xb,s&o|m,xb,s&l]':['表兄弟'],
|
'[f,xs,s&o|f,xs,s&l|m,xb,s&o|m,xb,s&l]':['表兄弟'],
|
||||||
'[f,xs,d&o|f,xs,d&l|m,xb,d&o|m,xb,d&l]':['表姐妹'],
|
'[f,xs,d&o|f,xs,d&l|m,xb,d&o|m,xb,d&l]':['表姐妹'],
|
||||||
'[s|d]':['子女','儿女','小孩','孩子','孩儿','宝宝','娃'],
|
'[s|d]':['子女','儿女','小孩','孩子','孩儿','宝宝','娃'],
|
||||||
@ -2284,14 +2286,12 @@
|
|||||||
function selector2id(selector,sex){
|
function selector2id(selector,sex){
|
||||||
var result = [];
|
var result = [];
|
||||||
var hash = {};
|
var hash = {};
|
||||||
|
//性别判断
|
||||||
if(sex<0){
|
if(sex<0){
|
||||||
if(selector.indexOf(',w')==0){
|
sex = selector.match(/^,w/)?1:0;
|
||||||
selector = ',1'+selector;
|
|
||||||
}else if(selector.indexOf(',h')==0){
|
|
||||||
selector = ',0'+selector;
|
|
||||||
}
|
}
|
||||||
}else if(selector.indexOf(',1')==0||selector.indexOf(',0')==0){
|
sex = sex?1:0;
|
||||||
}else if(sex>-1){
|
if(selector.indexOf(',1')==-1&&selector.indexOf(',0')==-1){
|
||||||
selector = ','+sex+selector;
|
selector = ','+sex+selector;
|
||||||
}
|
}
|
||||||
// console.log('[selector]',selector);
|
// console.log('[selector]',selector);
|
||||||
@ -2402,7 +2402,11 @@
|
|||||||
}
|
}
|
||||||
if(id){
|
if(id){
|
||||||
id = id.replace(/&[ol]/g,'');
|
id = id.replace(/&[ol]/g,'');
|
||||||
sex = sex?1:0; //逆转运算自身性别必须确定
|
//性别判断
|
||||||
|
if(sex<0){
|
||||||
|
sex = id.match(/^w/)?1:0;
|
||||||
|
}
|
||||||
|
sex = sex?1:0;
|
||||||
var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
|
var sid = (','+sex+','+id).replace(/,[fhs]|,[olx]b/g,',1').replace(/,[mwd]|,[olx]s/g,',0');
|
||||||
sid = sid.substring(0,sid.lastIndexOf(','));
|
sid = sid.substring(0,sid.lastIndexOf(','));
|
||||||
var id_arr = id.split(',').reverse();
|
var id_arr = id.split(',').reverse();
|
||||||
@ -2412,12 +2416,9 @@
|
|||||||
arr.push(hash[id_arr[i]][sid_arr[i]]);
|
arr.push(hash[id_arr[i]][sid_arr[i]]);
|
||||||
}
|
}
|
||||||
var g = 0;
|
var g = 0;
|
||||||
|
var gMap = {'f':1,'m':1,'s':-1,'d':-1};
|
||||||
arr.forEach(function(r){
|
arr.forEach(function(r){
|
||||||
if(['f','m'].indexOf(r)>-1){
|
g += gMap[r]||0;
|
||||||
g++;
|
|
||||||
}else if(['s','d'].indexOf(r)>-1){
|
|
||||||
g--;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return arr.join(',')+(g?'':age);
|
return arr.join(',')+(g?'':age);
|
||||||
}
|
}
|
||||||
@ -2427,12 +2428,10 @@
|
|||||||
// 通过ID获取关系链条
|
// 通过ID获取关系链条
|
||||||
function getChainById(id){
|
function getChainById(id){
|
||||||
var arr = id.split(',');
|
var arr = id.split(',');
|
||||||
var items = [];
|
return arr.map(function(sign){
|
||||||
for(var i = 0;i<arr.length;i++){
|
var key = sign.replace(/&[ol]/,'');
|
||||||
var key = arr[i].replace(/&[ol]/,'');
|
return _data[key][0];
|
||||||
items.push(_data[key][0]);
|
}).join('的');
|
||||||
}
|
|
||||||
return items.join('的');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 合并选择器,查找两个对象之间的关系
|
// 合并选择器,查找两个对象之间的关系
|
||||||
@ -2440,40 +2439,26 @@
|
|||||||
var Index = 0;
|
var Index = 0;
|
||||||
var from_arr = from.split(',');
|
var from_arr = from.split(',');
|
||||||
var to_arr = to.split(',');
|
var to_arr = to.split(',');
|
||||||
|
var mid_sex = -1;
|
||||||
|
var sex = -1;
|
||||||
|
var reg_sex = /([fhs1](&[ol])?|[olx]b)/;
|
||||||
for(var i=0;i<from_arr.length&&i<to_arr.length;i++){
|
for(var i=0;i<from_arr.length&&i<to_arr.length;i++){
|
||||||
if(from_arr[i]!=to_arr[i]){
|
if(from_arr[i]!=to_arr[i]){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var mid_sex = -1;
|
|
||||||
if(to_arr[i-1]){
|
if(to_arr[i-1]){
|
||||||
if(to_arr[i-1].match(/([fhs1](&[ol])?|[olx]b)$/)){
|
mid_sex = to_arr[i-1].match(reg_sex)?1:0;
|
||||||
mid_sex=1;
|
|
||||||
}else{
|
|
||||||
mid_sex=0;
|
|
||||||
}
|
}
|
||||||
|
if(to_arr[to_arr.length-1]){
|
||||||
|
sex = to_arr[to_arr.length-1].match(reg_sex)?1:0;
|
||||||
}
|
}
|
||||||
var sex = -1;
|
|
||||||
if(to){
|
|
||||||
if(to.match(/,([fhs1](&[ol])?|[olx]b)$/)){
|
|
||||||
sex=1;
|
|
||||||
}else{
|
|
||||||
sex=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(i){
|
|
||||||
var from_sub = from_arr.slice(i).join(',');
|
var from_sub = from_arr.slice(i).join(',');
|
||||||
var to_sub = to_arr.slice(i).join(',');
|
var to_sub = to_arr.slice(i).join(',');
|
||||||
return {
|
return {
|
||||||
'selector':(to_sub?','+reverseId(to_sub,mid_sex):'')+(from_sub?','+from_sub:''),
|
'selector':(to_sub?','+reverseId(to_sub,mid_sex):'')+(from_sub?','+from_sub:''),
|
||||||
'sex':sex
|
'sex':sex
|
||||||
};
|
};
|
||||||
}else{
|
|
||||||
return {
|
|
||||||
'selector':from,
|
|
||||||
'sex':sex
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var relationship = function (parameter){
|
var relationship = function (parameter){
|
||||||
@ -2483,19 +2468,14 @@
|
|||||||
sex:-1,
|
sex:-1,
|
||||||
type:'default', // 'chain'表示关系链
|
type:'default', // 'chain'表示关系链
|
||||||
reverse:false, // true表示反向
|
reverse:false, // true表示反向
|
||||||
mode:'default', // 'cantonese'表示粤语地区
|
mode:'default', // 用户自定义模式
|
||||||
},parameter);
|
},parameter);
|
||||||
var sex = options.sex;
|
var sex = options.sex;
|
||||||
|
_data = Object.assign({},_map);
|
||||||
for(var lang in _mode){
|
for(var lang in _mode){
|
||||||
if(options.mode==lang){
|
if(options.mode==lang){
|
||||||
for(var key in _mode[lang]){
|
for(var key in _mode[lang]){
|
||||||
_data[key] = _mode[lang][key].concat(_map[key]||[]);
|
_data[key] = [].concat(_mode[lang][key],_map[key]||[]);
|
||||||
}
|
|
||||||
}else{
|
|
||||||
for(var key in _mode[lang]){
|
|
||||||
if(_map[key]){
|
|
||||||
_data[key] = _map[key].concat(_mode[lang][key]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2509,9 +2489,9 @@
|
|||||||
// console.log('[data]',data);
|
// console.log('[data]',data);
|
||||||
sex = data['sex']>-1?data['sex']:options.sex;
|
sex = data['sex']>-1?data['sex']:options.sex;
|
||||||
var ids = selector2id(data['selector'],sex);
|
var ids = selector2id(data['selector'],sex);
|
||||||
// console.log('[ids]',ids);
|
// console.log('[ids]',data['selector'],sex,ids);
|
||||||
for(var j=0;j<ids.length;j++){
|
if(ids){
|
||||||
var id = ids[j];
|
ids.forEach(function(id){
|
||||||
if(options.type=='chain'){
|
if(options.type=='chain'){
|
||||||
if(options.reverse){
|
if(options.reverse){
|
||||||
id = reverseId(id,sex);
|
id = reverseId(id,sex);
|
||||||
@ -2537,6 +2517,7 @@
|
|||||||
result = result.concat(items);
|
result = result.concat(items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user