updated 添加找关系功能

This commit is contained in:
mumuy 2016-07-27 14:01:51 +08:00
parent 777dcb41e5
commit a55648316f
2 changed files with 51 additions and 33 deletions

View File

@ -18,11 +18,14 @@
<label for="male"><input id="male" type="radio" name="sex" value="1" checked></label>
<label for="female"><input id="female" type="radio" name="sex" value="0"></label>
</p>
<p>计算类型:
<label for="default"><input id="default" type="radio" name="type" value="default" checked>找称呼</label>
<label for="chain"><input id="chain" type="radio" name="type" value="chain">找关系</label>
</p>
<p>称呼方式:
<label for="call"><input id="call" type="radio" name="reverse" value="0" checked>我称呼对方</label>
<label for="called"><input id="called" type="radio" name="reverse" value="1">对方称呼我</label>
</p>
<p>家庭关系:</p>
<p>
<textarea id="input" placeholder="人物间用'的'字分开…"></textarea>
</p>
@ -74,7 +77,9 @@
<script>
(function(){
var $sex = document.getElementsByName('sex');
var $type = document.getElementsByName('type');
var $reverse = document.getElementsByName('reverse');
var $radio = document.getElementsByTagName('INPUT');
var $textarea = document.getElementsByTagName('TEXTAREA');
var $btns = DOMUtil.getElementsByClassName('btn');
var $buttons = DOMUtil.getElementsByClassName('input-button');
@ -91,8 +96,9 @@
var value = $textarea[0].value.trim();
if(value){
var sex = $sex[0].checked?1:0;
var type = $type[0].checked?'default':'chain';
var reverse = !$reverse[0].checked;
var result = relationship({text:value,sex:sex,reverse:reverse});
var result = relationship({text:value,sex:sex,reverse:reverse,type:type});
$textarea[1].value = '';
if(result.length){
$textarea[1].value = result.join('\n');
@ -116,21 +122,14 @@
toggle('爸爸,老公,儿子,哥哥,弟弟'.indexOf(name)>-1);
}
}
for(var i=0;i<$sex.length;i++){
$sex[i].onchange=function(){
for(var i=0;i<$radio.length;i++){
$radio[i].onchange=function(){
toggle($sex[0].checked);
if($textarea[1].value){
count();
}
}
}
for(var i=0;i<$reverse.length;i++){
$reverse[i].onchange = function(){
if($textarea[1].value){
count();
}
};
}
$buttons[0].onclick = function(){
var value = $textarea[0].value.trim();
var index = value.lastIndexOf('的');

View File

@ -289,7 +289,7 @@
'm,m':['外婆','姥姥','阿婆'],
'm,m,f':['外曾外祖父','外太外公','太姥爷'],
'm,m,m':['外曾外祖母','外太外婆','太姥姥'],
'm,m,xb':['外舅公','外舅祖父','舅姥爷','舅外祖父','舅外公'],
'm,m,xb':['外舅公','外舅祖父','舅姥爷','舅外祖父','舅外公','舅公'],
'm,m,xb,w':['外舅婆','外舅祖母','舅姥姥'],
'm,m,xb,s':['表舅','表舅父'],
'm,m,xb,s,w':['表舅妈','表舅母'],
@ -686,10 +686,22 @@
return '';
}
//简化选择器
function getChainById(id){
var arr = id.split(',');
var items = [];
for(var i = 0;i<arr.length;i++){
var key = arr[i].replace(/&[ol]/,'');
items.push(_data[key][0]);
}
return items.join('的');
}
function relationship(parameter){
var options = {
text:'',
sex:-1,
type:'default', //为'chain'时,reverse无效
reverse:false
};
for (var p in parameter) {
@ -703,29 +715,36 @@
// console.log('ids#',ids);
for(var j=0;j<ids.length;j++){
var id = ids[j];
if(options.reverse){
id = reverseId(id,options.sex);
}
if(_data[id]){ //直接匹配称呼
result.push(_data[id][0]);
}else{ //高级查找
var data = getDataById(id); //忽略属性查找
if(!data.length){ //当无精确数据时,忽略年龄条件查找
id = id.replace(/&[ol]/g,'');
data = getDataById(id);
if(options.type=='chain'){
var data = getChainById(id);
if(data){
result.push(data);
}
if(!data.length){
id = id.replace(/[ol]/g,'x');
data = getDataById(id);
}else{
if(options.reverse){
id = reverseId(id,options.sex);
}
if(!data.length){
var l = id.replace(/x/g,'l');
data = getDataById(l);
var o = id.replace(/x/g,'o');
data = data.concat(getDataById(o));
}
for(var d=0;d<data.length;d++){
result.push(data[d][0]);
if(_data[id]){ //直接匹配称呼
result.push(_data[id][0]);
}else{ //高级查找
var data = getDataById(id); //忽略属性查找
if(!data.length){ //当无精确数据时,忽略年龄条件查找
id = id.replace(/&[ol]/g,'');
data = getDataById(id);
}
if(!data.length){
id = id.replace(/[ol]/g,'x');
data = getDataById(id);
}
if(!data.length){
var l = id.replace(/x/g,'l');
data = getDataById(l);
var o = id.replace(/x/g,'o');
data = data.concat(getDataById(o));
}
for(var d=0;d<data.length;d++){
result.push(data[d][0]);
}
}
}
}