2011-07-19 1 views
1

Я построил сетку, а затем использовал следующую функцию showCoordinates для вычисления позиций в сетке перетаскиваемого элемента.Преобразование верхнего/левого смещения координат в день/время

function showCoordinates(divId) 
{ 
var leftParent= $("#"+divId).parent().offset().left; 
var topParent= $("#"+divId).parent().offset().top; 
var left= $("#"+divId).offset().left; 
var top= $("#"+divId).offset().top; 

var leftTableParent =$("#tableId").parent().offset().left; 
var topTableParent =$("#tableId").parent().offset().top; 
var leftTable =$("#tableId").offset().left; 
var topTable =$("#tableId").offset().top; 

var cellWidth =160; 
var cellHeight =120; 
var offsetDifferenceTop =41; 
var offsetDifferenceLeft = -84; 
var actualLeft =left-offsetDifferenceLeft; 
var actualTop =top-offsetDifferenceTop; 
var cellRow =actualTop /cellHeight; 
var cellColumn =actualLeft/cellWidth; 
var Day = ?? 
var Time = ?? 

$("#displayCoordinates").html("cell row: "+cellRow+" | cell column: "+cellColumn+"  |  Time: "+Time+" | Day: "+Day+" <br />"); 
} 

Я хотел бы, чтобы преобразовать координаты ячейки в день (7 дней - с воскресенья по субботу) и время (это может быть более сложным, Im думая день будет более простым, используя if..else заявления (если cellColumn =. 1, то день = воскресенье, и т.д ...)

Предложения

+0

Вызов функции ** намного медленнее, чем доступ к ссылке. Например. '$ (" # tableId ")' возвращает ** всегда ** то же самое - по крайней мере за вызов 'showCoordinates'. – Saxoier

ответ

0

Как насчет:

var days = ['Sat', 'Sun', 'Mon', 'Tues', 'Wed', 'Thu', 'Fri']; 
var selected = days[offset-1]; 
+0

спасибо, что отлично работало в течение дней. Преобразование времени кажется более сложным ... – Dhiraj

0

понял это, добавил следующее для расчета времени в часах: минутах (миль литеральное время)

var totalMinutes = cellRow * 60; 
var hours = Math.floor(totalMinutes/60); 
var minutes = totalMinutes % 60; 

$("#displayCoordinates").html("Time: "+hours+":"+minutes+" | Day: "+selected+"</ br>);