私の目的は、Cookie ストアのリマインダーの日付と時刻を SQL データベースから取得することです。次に、そこから Cookie を JSON Cookie として保存し、解析します。ここから、Cookie からデータのテーブル/行/列を設定しながら、Cookie をループします。この時点からモーダルを開いて、訪問者にその日のリマインダーを表示します。私の考えは、Cookie をループして日付と時刻をチェックし、現在の日付と時刻を過ぎているかどうかを確認し、そうであればDatePasted
変数に true を格納してからモーダルを表示することでした。ただし、これに関する問題は、リマインダーのいずれかが true の場合、リスト内のすべてのリマインダーが表示されることです。現在の日付と時刻を過ぎた、これまでに発生したリマインダーを表示したいだけです。Outlook のリマインダーのようなものです。モーダルは jQuery を使用して作成されます。
問題は、モーダルの表示を制御し、現在の日付と時刻を過ぎた実際のリマインダーのみを表示する方法が必要なことですCookieTime
。には、その日の 1 つ以上のCookieTime
リマインダーを含めることができます。したがって、データの日付と時刻をループしてチェックし、CookieTime
合格した場合は、そのテーブル行を変数に格納してモーダルに表示し、過去のデータ行をプラグインすることを考えました。持っている場合は、リマインダー モーダルを表示する必要があります。
ここにいくつかの擬似コードがあります:
var myTable
for (loop through the cookie data and check each entries date and time)
CookieTime Reminder Date and Time
if CookieTime < Current Date/Time){
//Reminder has pasted the current date and time.
myTable = (First row of table to contain the titles of the table)
myTable = myTable + (rows of data from the cookie that have passed current date/time)
}
}
if CookieTime < Current Date/Time){
Print MyTable (Show the reminders window with data pasted...)
}
これが私がこれまでに持っているスクリプトです:
//Prepare the variables for the table layout...
var root=document.getElementById('tubData');
var tab=document.createElement('table');
tab.className="mytable";
var tbo=document.createElement('tbody');
var row, cell;
tab.className="mytable";
//Store todays current date and time.
var currDate = new Date();
//Store todays date and time to date.
var date = new Date(currDate.getMonth() + 1 + "-" + currDate.getDate() + "-" + currDate.getFullYear() + " " + currDate.getHours() + ":" + currDate.getMinutes() + ":" + currDate.getSeconds());
$(document).ready(function(){
//Grab the Cookie data that mysql created and parse with JSon.
var reminders = $.cookie('reminders');
reminders = JSON.parse(reminders);
//Prepare creating the first row in the table.
row=document.createElement('tr');
for (var i=0,len=6; i<len; i++){
// Create the Header of the table.
//Check and see if the currDate Date/Time has pasted the CookieTime Date/Time...
var CookieTime = new Date(reminders[0].reminderdate + ' ' + reminders[0].remindertime); //Cookie Date/Time
var difference = CookieTime - currDate; //Subtract CookieTime from currDate to see if time pasted.
if (difference <= 0) {
//If the Current Date/Time pasted CookieTime lets show the modal.
//Show Reminders Modal below...
var DatePasted = true;
}else{
//Don't show Reminders Modal below...
var DatePasted = false;
}
cell=document.createElement('td');
//Create the Titles for each Column in the table.
switch(i){
case 0:
cell.innerHTML = "<img src='menubar/ico_delete16.gif' width='16' height='16'>";
break;
case 1:
cell.appendChild(document.createTextNode('Reminder Date'));
break;
case 2:
cell.appendChild(document.createTextNode('Title/Message'));
break;
case 3:
cell.appendChild(document.createTextNode('Priority'));
break;
case 4:
cell.appendChild(document.createTextNode('Call Type'));
break;
case 5:
cell.appendChild(document.createTextNode('Status'));
break;
}
row.appendChild(cell);
tbo.appendChild(row);
}
//Begin looping through the cookie array data to show on the following rows.
for (var i=0,len=reminders.length; i<len; i++){
row=document.createElement('tr');//Create a new row per loop.
//We will start looping though and showing the data of the cookie per cell.
for (var i=0,len=6; i<len; i++){
cell=document.createElement('td');
switch(i){
case 0: //Delete box for dismissing or snoozing a reminder.
if (reminders[0].tid==''){
cell.innerHTML = "<input name='remove" + i + "' id='remove" + i + "' type='checkbox' value='" + reminders[0].tid + "'>"
}else{
cell.innerHTML = "<input name='remove" + i + "' id='remove" + i + "' type='checkbox' value='" + reminders[0].thid + "'>"
}
break;
case 1: //Date and Time of the reminder here...
cell.appendChild(document.createTextNode(reminders[0].reminderdate + ' at ' + reminders[0].remindertime));
break;
case 2: //Title and message of the reminder here...
if ((reminders[0].title || '') == "")
{
cell.innerHTML = "<a href='reader.asp?tid=" + (reminders[0].tid || '') + "&cnt='" + (reminders[0].cnt || '') + "' >" + (reminders[0].message || '') + "</a>"
}
else
{
cell.innerHTML = "<a href='reader.asp?tid=" + (reminders[0].tid || '') + "&cnt='" + (reminders[0].cnt || '') + "' >" + (reminders[0].title || '') + '<br />' + (reminders[0].message || '') + "</a>"
}
break;
case 3: //Ticket Priority
switch(reminders[0].priority){
case 1:
cell.appendChild(document.createTextNode('Low'));
break;
case 2:
cell.appendChild(document.createTextNode('Normal'));
break;
case 3:
cell.appendChild(document.createTextNode('High'));
break;
case 4:
cell.appendChild(document.createTextNode('Critical'));
break;
case 5:
cell.appendChild(document.createTextNode('Emergency'));
break;
default:
cell.appendChild(document.createTextNode('Undefined'));
break;
}
break;
case 4: //Call Type here...
cell.appendChild(document.createTextNode((reminders[0].fieldvalues || '')));
break;
case 5: //The status of the ticket here...
switch(reminders[0].status){
case 1:
cell.appendChild(document.createTextNode('New'));
break;
case 2:
cell.appendChild(document.createTextNode('Active'));
break;
case 3:
cell.appendChild(document.createTextNode('Pending'));
break;
default:
cell.appendChild(document.createTextNode('Closed'));
break;
}
break;
}
row.appendChild(cell);
}
tbo.appendChild(row);
}
tab.appendChild(tbo);
root.appendChild(tab);
//Show JQuery Modal only if one of the dates/times has pasted CookieTimes
if (DatePasted == true){
$('#basic-modal-content').modal({
escClose:false,
});
}
});