08.07.2011, 13:28
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
|
|
08.07.2011, 14:32
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Sweet
|
А он отсюда удалит статью
|
В индексе она останется надолго.
Сообщение от Sweet
|
Прочитай томик Пушкина
|
Достаточно прочесть самих статей с того же хабра.
|
|
08.07.2011, 14:39
|
Профессор
|
|
Регистрация: 16.03.2010
Сообщений: 1,618
|
|
Сообщение от mycoding
|
А это к чему?
|
К тому, что стоит избегать в статьях провакационных фраз, типа
Цитата:
|
я сел и за 5 часов перебрал весь Ext Core и из более чем 10000 строк кода...
|
|
|
13.07.2011, 14:29
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
|
|
13.07.2011, 14:37
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Нормально. Код не расширяемый, но судя по видео, рабочий.
Hint: json лучше генерировать посредством JSON.stringify().
|
|
13.07.2011, 20:08
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Чат сделал просто для теста.
Надеюсь не слетит
http://moc-081.ru/chat/done.html
|
|
13.07.2011, 20:17
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Либо так
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="http://moc-081.ru/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="http://moc-081.ru/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="http://moc-081.ru/ext/ext-all.js"></script>
<script src="http://vreshenie.ru/work/comet/cross-domain/extjs-cross-domain.js"></script>
<style>
.icon-user {
background-image: url("http://www.vreshenie.ru/resources/user.png") !important;
}
.icon-users {
background-image: url("http://www.vreshenie.ru/resources/group.png") !important;
}
.icon-pencil {
background-image: url("http://www.vreshenie.ru/resources/pencil.png") !important;
}
.icon-comments {
background-image: url("http://www.vreshenie.ru/resources/comments.png") !important;
}
</style>
<script>
var messages = [],
users_online = [];//,
//chat_property = {login:'',sid:''};
Ext.onReady(function(){
function sendMessage(login){
var msg = Ext.getCmp('idMsgChat').getValue();
if(msg.length!=0){
crossDomainRequest('sendMessage',{login:window.login,sid:window.sid,msg:msg,action:'sendMessage'})
}
}
function runLoginedChat(){
var win = Ext.getCmp('windowChat');
win.setTitle('Cross-domain comet chat on ExtJS+nodeJS');
var login = Ext.getCmp('login');
win.items.items[1].el.fadeOut({callback:function(){
login.hide();
}});
var buttonLogin = Ext.getCmp('idLoginButton');
buttonLogin.setText('Send');
buttonLogin.setIconClass('icon-pencil');
buttonLogin.setHandler(function(){
sendMessage(login);
Ext.getCmp('idMsgChat').setValue('');
});
var xy=win.getPosition();
var x = xy[0]-100;
var y = xy[1]-100;
win.el.shift({
x: x,
y: y,
duration:1,
//easing:effect,
callback:function(){
win.el.shift({
width:400,
callback:function(){
win.setWidth(400);
win.setHeight(300);
var str=' ';
for(var i=0;i<messages.length;i++){
str+=""+messages[i].login+":"+messages[i].msg+'</br>';
}
Ext.getCmp('serverMessage').update(str);
Ext.getCmp('idMsgChat').show();
Ext.getCmp('serverMessage').show();
Ext.getCmp('idUsersOnline').show();
var winUserOnline = Ext.getCmp('idWinUsersOnline'),
windowChatXY = Ext.getCmp('windowChat').getPosition(),
windowChatXYSize = Ext.getCmp('windowChat').getSize();
winUserOnline.setPosition(windowChatXY[0]+windowChatXYSize.width+50,windowChatXY[1]);
winUserOnline.show();
var treeUserOnline = Ext.getCmp('idTreeUserOnline');
for(var i=0;i<users_online.length;i++){
var newNode = new Ext.tree.TreeNode({id:"'"+users_online[i]+"'", text:users_online[i], leaf: true});
treeUserOnline.root.appendChild(newNode);
}
crossDomainRequest('getMessage',{login:window.login,sid:window.sid,action:'getMessage'});
}
});
}
});
}
function crossDomainRequest(action,params){
Ext.Ajax.request({
timeout:300,
url: 'http://node2.tw1.ru/',
//url: 'http://127.0.0.1:1337/',
params:params || {},
scriptTag: true,
success: function(r){
var message = r.responseObject.msg;
var login = r.responseObject.login;
//console.log(message);
//console.log(r);
if(action=='getMessage'){
if(!r.responseObject.reconnect){
if(login!='Server'){
messages.push({msg:message,login:login});
}
var str=' ';
for(var i=0;i<messages.length;i++){
str+=""+messages[i].login+":"+messages[i].msg+'</br>';
}
if(login=='Server'){
var action_server = r.responseObject.action_server;
switch(action_server){
case 'join':
str+="<b>Server</b>:"+message+' join</br>';
messages.push({msg:message+' join',login:'<b>'+login+'</b>'});
var newNode = new Ext.tree.TreeNode({id: "'"+message+"'", text: message , leaf: true});
Ext.getCmp('idTreeUserOnline').root.appendChild(newNode);
break;
case 'left':
str+="<b>Сервер</b>:"+message.join(',')+' left</br>';
var users_left = message;
messages.push({msg:message.join(',')+' left',login:'<b>'+login+'</b>'});
for(var i=0;i<users_left.length;i++){
var node = Ext.getCmp('idTreeUserOnline').getNodeById("'"+users_left[i]+"'");
if(node){
Ext.getCmp('idTreeUserOnline').root.removeChild(node);
}
}
break;
default:
}
}
Ext.getCmp('serverMessage').update(str);
}
crossDomainRequest('getMessage',{login:window.login,sid:window.sid,action:'getMessage'});
}
if(action=='login'){
if(r.responseObject.success){
messages = r.responseObject.msgs;
window.sid = r.responseObject.sid;
users_online = r.responseObject.users_online;
runLoginedChat();
}
else{
Ext.Msg.alert('Error', r.responseObject.error);
}
//console.log(r.responseObject);
}
if(action=='sendMessage'){}
if(action=='usersOnline'){
messages.push({login:r.responseObject.login,msg:r.responseObject.msg});
var str=' ';
for(var i=0;i<messages.length;i++){
str+=""+messages[i].login+":"+messages[i].msg+'</br>';
}
Ext.getCmp('serverMessage').update(str);
}
},
failure:function(){
console.log('failure');
Ext.Msg.alert('Error','Critical error on server');
if(action=='getMessage'){
crossDomainRequest('getMessage',{login:window.login,action:'getMessage'});
}
}
});
}
function chatLogin(){
var login = Ext.getCmp('login').getValue();
window.login=login;
crossDomainRequest('login',{login:login,action:'login'});
}
var w = new Ext.Window({
resizable:false,
closable:false,
id:'windowChat',
shadow:false,
iconCls:'icon-comments',
title:'Chat',
width:270,
height:95,
layout:'form',
bodyStyle:'padding:5px 5px 0',
items:[{
id:'serverMessage',
bodyStyle:'padding:5px 5px',
height:230,
hidden:true,
autoScroll:true,
html:'Place for massages'
},{
id:'login',
xtype:'textfield',
fieldLabel:'Input nick',
listeners: {
specialkey: function(field, e){
if (e.getKey() == e.ENTER){
chatLogin();
}
}
}
}],
bbar:[{
id:'idMsgChat',
xtype: 'textfield',
width:260,
hidden:true,
listeners: {
specialkey: function(field, e){
if (e.getKey() == e.ENTER){
var msg = Ext.getCmp('idMsgChat');
if(msg.getValue().length>0){
sendMessage(w.login);
Ext.getCmp('idMsgChat').setValue('');
}
}
}
}
},'->',{
id:'idUsersOnline',
text:'Users',
iconCls:'icon-users',
hidden:true,
handler:function(){
crossDomainRequest('usersOnline',{login:window.login,sid:window.sid,action:'getUsersOnline'});
}
},'','',{
id:'idLoginButton',
text:'Enter',
iconCls:'icon-user',
handler:chatLogin
}]
}).show();
new Ext.Window({
id:'idWinUsersOnline',
title:'Пользователи онлайн',
closeAction:'hide',
layout:'fit',
closable:false,
width:170,
height:195,
items:[{
xtype:'treepanel',
id:'idTreeUserOnline',
autoScroll: true,
root: new Ext.tree.AsyncTreeNode({
expanded: true,
children: []
}),
rootVisible: false,
listeners: {
click: function(n){
//console.log(n.attributes.id);
//var newNode = new Ext.tree.TreeNode({id: "5", text: "foo", leaf: true});
//Ext.getCmp('idTreeUserOnline').root.appendChild(newNode);
//var node = Ext.getCmp('idTreeUserOnline').getNodeById('2');
//if(node){
// Ext.getCmp('idTreeUserOnline').root.removeChild(node);
//}
}
}
}]
})
});
</script>
</head>
<body>
</body>
</html>
|
|
14.07.2011, 13:22
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
Я вообще завел эту тему, потому что когда целый день пишешь код,
который разместишь на сайте хочется доброго слова от Community.
радуйся, что тебе хоть что-то пишут. меня вот все игнорят ._."
Цитата:
|
У меня знаний очень много, но стараюсь всегда писать, что я ничего не знаю. Но это не значит, что я реально ничего не знаю. Я знаю очень много.
|
только я вижу тут взаимоисключающие параграфы? х)
__________________
.ня
|
|
14.07.2011, 13:29
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Сообщение от tenshi
|
Я вообще завел эту тему, потому что когда целый день пишешь код,
который разместишь на сайте хочется доброго слова от Community.
радуйся, что тебе хоть что-то пишут. меня вот все игнорят ._."
только я вижу тут взаимоисключающие параграфы? х)
|
Я читал Ваш блог http://javascript.ru/blog/tenshi
Он настолько классный, что даже ничего не понял)))
Вы не могли бы чуть более подробней написать?
Я поняли, что тема про СУБД и псевдо потоки на js.
Меня это очень интересует и если Вы приведете побольше примеров и разместите проект на github я и многие читали будут Вам благодарны.
PS:
Ссылка битая: http://smileg.jino-net.ru/_files/dao.js
Если есть время пишите блоги, они у Вас очень серьезные.
Если Вы это знали еще в 2008 году, то я представляю какой сейчас у Вас уровень в js.
|
|
14.07.2011, 13:58
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
там были ещё статьи, да я их выпилил, когда на хабр перебирался. %-) дао всё хотел переписать, да руки не доходили, а про потоки там фигня написана, непрактично это.
могу поделиться инвайтом на хабр, но тебя там быстро заминусуют и будешь как я только комментить чужие топики. вообще, я смотрю яваскриптовое комьюнити в рунете какое-то куцое. dklab.ru заглох. javascript.ru заполонили ламеры со своими "животрепещущими" вопросами. только на хабре яваскриптеры и остались. но там, чтобы иметь возможность вещать на комьюнити, нужно старательно лизать всем задницу. одно неосторожное слово и ты исключаешься из этого междусобойчика. и не важно есть тебе что предложить сообществу или нет.
если интересно - можешь почитать http://tenshi.habrahabr.ru/blog/
__________________
.ня
|
|
|
|