Ext秒表

显示分和秒

js

	Ext.define('xy.StopWatchWindow', {
extend: 'Ext.window.Window',
width: 300,
modal: true,
close:'hide',
layout: {
type: 'vbox',
align: 'stretch'
},
initComponent: function() {
var me = this;
me.store = Ext.create('Ext.data.Store',{
fields:['time']
}); me.grid = Ext.create('Ext.grid.Panel', {
emptyText: 'No Data',
height:300,
scrollable: 'y',
store:me.store,
columns :[{
text: 'Time',
dataIndex: 'time',
width: 240,
flex:1
},{
xtype: 'actioncolumn',
text: 'Delete',
align:'center',
items: [
{
getClass: function(v, metadata, record) {
return 'icon-delete'
},
scope: me,
handler: me.deleteTime
}
]
}]
}); this.items = [
{
html:'00:00',
height:40,
cls:'time-count-display',
itemId:'timeCountDisplay'
},
{
xtype:'container',
layout: {
type: 'hbox',
align: 'stretch'
},
items:[{
xtype: 'button',
flex:1,
text : 'Reset',
name:'restBtn',
handler: this.onResetClick,
disabled:true,
scope: me
},
{
xtype: 'button',
flex:1,
text : 'Start',
name:'startBtn',
action:'start',
handler: this.onStratClick,
scope: me
}]
},
me.grid]; me.countStartTime = null;
me.countDuration = 0;
me.changeTime = null;
me.countTime = 0; this.callParent(arguments);
},
onStratClick : function(btn){
var me = this;
if(btn.action == 'start'){
me.countStartTime = new Date();
me.changeTime = setInterval(me.changeStopWatch.bind(me),1000);
btn.action = 'stop';
btn.setText('Stop');
me.down('button[name="restBtn"]').setDisabled(false);
}else{
clearInterval(me.changeTime);
me.countDuration = me.countTime;
btn.action ='start';
btn.setText('Start');
me.down('button[name="restBtn"]').setDisabled(true);
}
},
onResetClick : function (){
var me = this;
me.store.add({time:me.secondToTime(me.countTime)}); clearInterval(me.changeTime);
me.countStartTime = new Date();
me.countDuration = 0;
me.countTime = 0; me.getComponent('timeCountDisplay').setHtml('00:00');
me.down('button[name="restBtn"]').setDisabled(true);
var startBtn = me.down('button[name="startBtn"]');
startBtn.action = 'start';
startBtn.setText('Start');
},
deleteTime:function(grid, rowIndex, colIndex, item, e, record){
var me = this;
me.store.remove(record);
},
changeStopWatch : function(){
var me = this;
var now = new Date();
var tempCount = (now.getTime() - me.countStartTime.getTime())/1000 + me.countDuration;
tempCount = Math.floor(tempCount * 100) / 100;
me.countTime = tempCount;
me.getComponent('timeCountDisplay').setHtml(me.secondToTime(tempCount));
},
secondToTime:function(time) {
var result = "";
if (null != time && "" != time && time > 0) {
//min
if (time >= 60) {
var tempMin = parseInt(time/ 60) ;
if(tempMin < 10){
tempMin = "0" + tempMin + ":";
}else{
tempMin = tempMin + ":"
}
result = result + tempMin;
}else{
result = result + "00:";
}
//second
var timeStr = time + "";
var tempSecond = parseInt(time%60); if(tempSecond < 10){
tempSecond = "0" + tempSecond;
}
result = result + tempSecond; }else{
result = "00:00";
}
return result;
}
});

css

	.time-count-display{
text-align: center;
} .time-count-display .x-autocontainer-innerCt {
vertical-align: middle;
font-size: 25px;
} .icon-delete {
background-image: url(../imgs/delete.png);
}

Ext秒表的更多相关文章

  1. Ext JS 如何动态加载JavaScript创建窗体

    JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...

  2. sencha ext js 6 入门

    Sencha Ext JS号称是目前世界上最先进和最强大的.支持多平台多设备的JavaScript应用程序开发框架.首先看一下Ext JS的发展简史. 1 Ext JS发展简史 YUI-Ext的作者J ...

  3. Ext JS - 问答

    Ext JS - 问答 在下面你将可以找到关于Ext JS 的最常见问题的答复.如果没有找到您所需的答复,请访问 Ext JS 论坛或者提交一个支持申请. 如果你确信你的问题可以对本页有补充,请让我们 ...

  4. Ext动态加载Toolbar

    在使用Ext的GridPanel时候,有时候需要面板不用重新加载而去更新Store或者Toolbar,Store的方法有很多,例如官方api给我们提供的Store.load(),Store.reLoa ...

  5. Ext分页实现(前台与后台)

    Ext分页实现(前台与后台)Spring+Mybatis 一.项目背景 关于Ext的分页网上有很多博客都有提到,但是作为Ext新手来说,并不能很容易的在自己的项目中得以应用.因为,大多数教程以及博客基 ...

  6. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  7. [转]extjs grid的Ext.grid.CheckboxSelectionModel默认选中解决方法

    原文地址:http://379548695.iteye.com/blog/1167234 grid的复选框定义如下:   var sm = new Ext.grid.CheckboxSelection ...

  8. Ext.js细节:在MVC中处理Widget Column,GetCmp和ComponentQuery, Id和ItemId

    针对EXT.JS版本的演进,要不断的学习新的最佳实践方法. 比如,在定义组件时,尽管用itemid,而不是id. 在搜索组件时,尽量用ComponentQuery,而不是getCmp. 在MVC中处理 ...

  9. 2017年第1贴:EXT.JS使用MVC模式时,注意如何协调MODEL, STORE,VIEW,CONTROLLER的关系

    也调了快一天,死活找不到窍门. MODEL, STORE,VIEW的调置测试了很久,试了N种方法,不得其果. 最后,试着在APPLICATION里加入CONTROLLER, 在CONTROLLER里加 ...

随机推荐

  1. TableLayout

  2. 二、 添加控制器Controller(ASP.NET MVC5 系列)

    MVC是Model-View-Controller的简写.MVC是一种开发良好架构,可测试,易维护应用程序的设计模式.据于MVC的应用程序应该包含: Models: 是呈现应用程序数据和使用验证逻辑给 ...

  3. Linux Namespaces机制——实现

    转自:http://www.cnblogs.com/lisperl/archive/2012/05/03/2480573.html 由于Linux内核提供了PID,IPC,NS等多个Namespace ...

  4. C# 类型基础(中)

    前一篇文章中我们讲到了值类型和引用类型的一些区别,那这篇我们将深入的分析一下到底有什么不一样 先总结一下两者的差别: 黄金法则: 1.引用类型总是被分配到托管堆上. 2.值类型总是分配到它声明的地方: ...

  5. JavaSE教程-02Java基本语法-BUG:易错点

    1.区别文档注释和多行注释 多行注释:多一个* 多行注释 格式: /* 注释文字 */ 文档注释 格式:/** 注释文字 */ 2.有关变量名.类名.方法名等注意点 由字母.数字.下划线.$组成,但不 ...

  6. mongo查询系统

    首先,我们先向集合(collections)中添加测试文档(documents).如下: > for(i=1;i<=5;i++) db.test.insert({x:i,y:i*i,z:6 ...

  7. Nginx上部署HTTPS

    Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev,且ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/, ...

  8. c++ 库函数返回的字符串指针是否需要手动释放

    #include <stdio.h> char * tmpnam(char *s); tmpnam函数返回一个不与任何已存在文件同名的有效文件名,如果字符串s不为空,文件名也会写入它.对t ...

  9. MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)

    殊不知,在N年前被奉为"圣经"的数据库设计3范式早就已经不完全适用了.这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用. 由于MySQL数据库是基于行(Ro ...

  10. JQ封装图片预加载插件

    我们知道,图片的加载,特别是资源较大的图片,加载相当耗费时间.为了提高用户体验,不得不使用图片预加载技术来提前加载,以提高用户在浏览时的流畅度. 先来弄明白图片的懒加载和预加载的不同: 1)概念:懒加 ...