欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

项目完成后的小总结

程序员文章站 2022-07-12 17:07:06
...

项目完成了,突然想做个总结但是有点无从下手了。

做之前对于客户端给的接口很模式。然而定义好了格式要求就如此的愉快了。

先说说项目主要实现的功能吧

1,按键精灵

2,获取行情数据

3,各种input输入条件判断

4,发送数据(有json格式和string格式)

5,获取预警条件列表和预警结果列表,

6,排序,

7,预警结果分页获取

8,导出文件(excel,text等)

9,修改

10,删除

11,禁止右键,禁止F5,

12,接口有:新加,修改,删除,获取预警条件列表,获取预警结果,获取预警结果条数,获取第M-N条,导出,查看走势,预警方式,调老的预警,开启关闭预警,设置浏览器对话框大小、位置,有新的预警结果推送,添加成功推送,设置预警结为已读,等等

其实是一个小项目啦。。就简简单单的两个界面。

不过用的交互接口却很多。

1,字符串转换成对象:

var string = '[{}]';
var data = eval("data="+string);
data is object

 

2,导出excel|text格式的文件。

3,单击双击的判定

//定义setTimeout执行方法 
var TimeFn = null; 

$('div').click(function () { 
// 取消上次延时未执行的方法 
clearTimeout(TimeFn); 
//执行延时 
TimeFn = setTimeout(function(){ 
//do function在此处写单击事件要执行的代码 
},300); 
}); 

$('div').dblclick(functin () { 
// 取消上次延时未执行的方法 
clearTimeout(TimeFn); 
//双击事件的执行代码 
}) 

 4,//获取location.url中的某一个字段值

function getUrlParam(item) {
    var value = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
    return value ? value[1] : value;
}

 5,//时间戳转换成 01-02 20:10

function userDate(uData){
    var myDate = new Date(uData*1000);
    var nowDate = new Date();
    var nMonth = nowDate.getMonth() + 1;
    var nDay = nowDate.getDate();
    var year = myDate.getFullYear();
    var month = myDate.getMonth() + 1;
    var day = myDate.getDate();
    var hours = myDate.getHours();
    var minutes = myDate.getMinutes();
    if(nMonth == month && nDay == day){
        if(hours < 10){
            hours = '0'+hours;
        }
        if(minutes < 10){
            minutes = '0' +minutes;
        }
        return '今天' + ' ' + hours + ':' + minutes;
    }else{
        if(month < 10){
            month = '0'+month;
        }
        if(day < 10){
            day = '0'+day;
        }
        if(hours < 10){
            hours = '0'+hours;
        }
        if(minutes < 10){
            minutes = '0' +minutes;
        }
        return month + '-' + day + ' ' + hours + ':' + minutes;
    }
    
}

 

6,获取行情数据

//@charset "utf-8"
var hqQuote = {
	request : function (callback, stock, period) {
		//ZHANGSHU
		var dataType = ['ZQMC', 'NEW', 'ZHANGDIEFU', '3934664', 'HUANSHOU','HIGH','LOW','PRE'];
		try {
			var thsQuote = external.createObject("Quote");
		} catch(e) {
			alert('需要客户端环境');
			return false;
		}

		dataType = dataType.join(',');
		var reqObj = {
			code: stock,
			type: dataType,
			period: period,
			onready: function() {
				var result = {};
				dataType = dataType.split(',');
				for (var type in dataType) {
					if (isNaN(type)) {
						continue;
					}
					var ret = null;
					if (dataType[type] == '3934664') {
						ret = {
								code : stock,
								type : dataType[type],
								mode: 'beforecalclastfromsvrnow1st'
							};
					} else {
						ret = {code : stock, type : dataType[type]};
					}
					
					try {
						var data = thsQuote.getData(ret);
						data = eval(data);
						for (var i in data) {
							if (undefined == result[i]) {
								result[i] = {};
							}
							if ('zqmc' == ret.type || 'ZQMC' == ret.type) {
								result[i][ret.type] = data[i][ret.type];
								continue;
							}
							if (isNaN(data[i][ret.type])) {
								result[i][ret.type] = '--';
								continue;
							}
							result[i][ret.type] = parseFloat(data[i][ret.type]).toFixed(2);
						}
					} catch (exp) {
						continue;
					}
				}
				callback(result[stock], stock);
			}
		};

		thsQuote.request(reqObj);
	}
}
var condition = {
render : function (data, stock) {
var dataZhangdiefu = parseFloat(data['ZHANGDIEFU']).toFixed(2);
		var dataZhangshu = parseFloat(data['3934664']).toFixed(2);
		var dataHuanshou = parseFloat(data['HUANSHOU']).toFixed(2);
}
}

  

 

hqQuote.request(condition.render, code, 'now');

 

7,导出格式

/**
 * 组合导出格式
 * @param string formatType 格式,excel|text
 */
var tableTh = ['预警品种', '预警内容', '价格', '预警时间'];
var assembleText = function (formatType) {
	formatType = formatType || 'excel';
	var trObj = $("#proTableResult table tr"),
		//分隔符、换行符
		delimiter = formatType == 'text' ? '\t' : '\t',
		newline	= formatType == 'text' ? '\r\n' : '\r\n',
		returnText = tableTh.join(delimiter) + newline,
		trArr = new Array();
	
	trObj.each(function (i, tr) {
		var tdArr = new Array();
        $(tr).find('td').each(function (i, td) {
        	if (i < tableTh.length) {
            	tdArr.push($(td).html().replace(/<[^>]+>/g, ''));
        	}
        });
        trArr.push(tdArr.join(delimiter));
    });
	returnText += trArr.join(newline);
    //alert(returnText);
	return returnText;
}

 8,排序

//排序部分
/**
 * 排序方法
 * @param obj domObj 要排序的table对象
 * @param string sortType 排序的字段(时间max),'stockcode|time'
 */
var operaTable = function (tableObj, sortType, sort) {
	sortType = sortType || 'pcid';
	//获取tbody下的tr
	var tbBodyTr 		= $(tableObj).children('tbody').find('tr'),
		tbBodyTrLenght	= tbBodyTr.length,
		isTrue = false,
		tmp1,
		tmp2;
	for (var i = 0; i < tbBodyTrLenght - 1; i++ ) {
		for (var k = i + 1; k < tbBodyTrLenght; k++) {
			var kValue1 = $(tbBodyTr[i]).attr(sortType),
				kValue2 = $(tbBodyTr[k]).attr(sortType);
			isTrue = sort == 'asc' ? parseFloat(kValue1) > parseFloat(kValue2) :  parseFloat(kValue1) < parseFloat(kValue2);
			if (isTrue) {
                $(tbBodyTr[i]).next().after($(tbBodyTr[i]));
			}
		}
	}
}
$(".sort0, .sort1").click(function (e) {
	var target = $(e.target);
	var tableObj = $(this).parent().parent().siblings('div').find('table');
    //排序方式
	var sortType = '';
    var sort = 'desc';
	if (target.closest('.sort0').length > 0) {
		sortType = 'Key';
        sort = 'asc';
	} else if (target.closest('.sort1').length > 0) {
		sortType = 'Key';
        sort = 'desc';
	} else {
		return ;
	}
	$(this).siblings('a').show();
	$(this).hide();
	operaTable(tableObj, sortType, sort);
});

 9,div里面的滚动条滚到底部加载更多

 $("#proTableResult").scroll(function(){
        nScrollHight = $(this)[0].scrollHeight;
        nScrollTop = $(this)[0].scrollTop;
        if(nScrollTop + nDivHight >= nScrollHight){
//加载更多内容
}
)}

 10,each,push,join等的使用,

获取自定义属性值attr,

setTimeout,

键/值,

数组,

prototype原型,

实例化方法,

等等

 

 

相关标签: 总结 项目 js