/*
*
* Ext.ux.menu.Clock
*
*/
Ext.define("Ext.ux.menu.Clock",{
extend:"Ext.panel.Panel",
requires:["Ext.menu.Menu","Ext.toolbar.Toolbar"],
ariaRole:"menu",
cls:"x-menu ux-start-menu",
defaultAlign:"bl-tl",
height:230,
floating:true,
layout:'border',
shadow:true,
width:375,
timeFormat:"g:i:s A",
tpl:"{time}",
initComponent:function(){
var a=this;
if(typeof(a.tpl)=="string"){
a.tpl=new Ext.XTemplate(a.tpl)
}
var html = '
';
if (Ext.isIE || Ext.isIE6 || Ext.isIE7 || Ext.isIE8)
html = "Clock Not Supported By Browser";
var clock = Ext.create("Ext.panel.Panel",{
layout:'fit',
frame:false,
region:'center',
height:175,
width:175,
html:html
});
var calandar = Ext.create("Ext.panel.Panel",{
width: 200,
frame:false,
region:'west',
bodyPadding: 10,
items: [{
xtype: 'datepicker',
handler: function(picker, date) {
// do something with the selected date
}
}]
});
a.items = [clock,calandar]
Ext.menu.Manager.register(a);
a.callParent();
},
showBy:function(c,f,e){
var b=this;
if(b.floating&&c){
b.layout.autoSize=true;
b.show();
c=c.el||c;
var d=b.el.getAlignToXY(c,f||b.defaultAlign,e);
if(b.floatParent){
var a=b.floatParent.getTargetEl().getViewRegion();
d[0]-=a.x;
d[1]-=a.y
}
b.showAt(d);
b.doConstrain()
}
return b
},
updateTime:function(){
var a=this,el=Ext.get('desktopClockTime');
if(el){
var time=a.tpl.apply({
time:Ext.Date.format(new Date(),a.timeFormat)
});
el.dom.innerHTML = time;
a.timer=Ext.Function.defer(a.updateTime,1000,a);
}
},
hide:function(){
var a=this;
if(a.timer){
window.clearTimeout(a.timer);
a.timer=null
}
a.callParent()
},
show:function(){
var a=this;
CoolClock.findAndCreateClocks();
if(!a.timer){
a.updateTime();
}
a.callParent();
}
});
/*
*
* Ext.ux.menu.TrayClock
*
*/
Ext.define("Ext.ux.menu.TrayClock",{
extend:"Ext.button.Button",
alias:"widget.trayclock",
timeFormat:"g:i A",
menu:new Ext.ux.menu.Clock(),
tpl:"{time}",
initComponent:function(){
var a=this;
a.callParent();
if(typeof(a.tpl)=="string"){
a.tpl=new Ext.XTemplate(a.tpl)
}
},
afterRender:function(){
var a=this;
Ext.Function.defer(a.updateTime,100,a);
a.callParent()
},
onDestroy:function(){
var a=this;
if(a.timer){
window.clearTimeout(a.timer);
a.timer=null
}
a.callParent()
},
updateTime:function(){
var a=this,b=Ext.Date.format(new Date(),a.timeFormat),c=a.tpl.apply({
time:b
});
if(a.lastText!=c){
a.setText(c);
a.lastText=c
}
a.timer=Ext.Function.defer(a.updateTime,10000,a)
}
});