0

私の目的は、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,
            });
       }
    });
4

1 に答える 1

1

ここ - テストされていないため、タイプミスがある可能性があります

デモ

//Prepare the variables for the table layout...
var root=$('#tubData');
var tab=$('<table/>');
tab.attr("class","mytable");
var tbo=$('<tbody/>');
var row, cell;
tab.attr("class","mytable");

//Store todays current date and time.
var currDate = new Date();

$(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=$('<tr/>');

        // 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
        //Subtract CookieTime from currDate to see if time pasted.  
        var difference = CookieTime - currDate;
        var DatePasted = difference <= 0;

        //Create the Titles for each Column in the table.

        row.append('<td><img src="menubar/ico_delete16.gif" width="16" height="16"></td>')
           .append('<td>Reminder Date</td>');
           .append('<td>Title/Message</td>');
           .append('<td>Priority</td>');
           .append('<td>Call Type</td>');
           .append('<td>Status</td>');                   
        tbo.append(row);


        //Begin looping through the cookie array data to show on the following rows.
        $.each(reminders,function(i,reminders){

          row=$('<tr/>');//Create a new row per loop.
          row.append('<td><td><input name="remove' + i + '" id="remove' + i + '" type="checkbox" value="' +
                     (reminders[0].tid==''? reminders[0].tid:reminders[0].thid) +
              '"></td>')
          // Date and Time of the reminder here...
          row.append('<td>'+reminders[0].reminderdate + ' at ' + reminders[0].remindertime+'</td>');
          //Title and message of the reminder here...           
            row.append("<td><a href='reader.asp?tid=" + (reminders[0].tid || '') + "&cnt='" + (reminders[0].cnt || '') + "' >" + (reminders[0].title||'')+(reminders[0].title?'<br />':'') + (reminders[0].message || '') + '</a></td>')
          //Ticket Priority
          var prio = ["Undefined","Low","Normal","High","Critical","Emergency"]
          row.append("<td>"+prio[reminders[0].priority]+"</td>");
          row.append("<td>"+reminders[0].fieldvalues || '')+"</td>");
          row.append("<td>"+['','New','Active','Pending','Closed'][reminders[0].status]+"</td>");
          tbo.append(row);
     });

    tab.append(tbo);
    root.append(tab);

       //Show JQuery Modal only if one of the dates/times has pasted CookieTimes
       if (DatePasted){
            $('#basic-modal-content').modal({
                escClose:false,
            });
       }
 });
于 2012-08-18T22:18:54.973 に答える