FullCalender.io с классическим ASP - PullRequest
0 голосов
/ 06 февраля 2019

мои извинения за этот вопрос, но я чрезвычайно ограничен в языках программирования, которые я могу использовать - таким образом, вы мой последний оплот поддержки.См. Ниже

Я хочу интегрировать полный calendar.io в локальную интранет моей компании, чтобы показать праздники для менеджеров моего магазина (около 800), чтобы региональные менеджеры могли видеть, что происходит и когда.

У меня есть система управления ресурсами, которая позволяет им, менеджерам магазинов, заказывать праздники и ежедневно выгружается на мой локальный сервер с небольшой помощью Python (спасибо селену)

теперь мойИдея заключалась в том, чтобы либо установить простое соединение, используя Python с полным календарем, чтобы читать события из моего дБ - только статические.

Однако на локальном веб-сервере моей компании не установлен Python, и компания рассматривает риск установки чего-либо на него, так как веб-серверу очень старый.

Хорошо, круто, шаг 2 позволяет использовать включенный php-файл для чтения json и просто выгружать туда файл json ежедневно, с python и pandas не составит труда ежедневно настроить рабочий процесс.

О, php тоже нет, единственное, что мы можем использовать - это asp.не asp.net, asp-classic!

, поэтому я занимался созданием основных html-страниц с помощью asp-classic с моего сервера ms-sql.и я смог создать динамические страницы, которые извлекаются из моего дБ (это находится в защищенной внутренней сети)

, пожалуйста, учтите, что я работаю в довольно крупной компании, любые изменения занимают очень много времени иувяз в политике, поэтому я не буду устанавливать Python / php или что-либо еще установленное на веб-сервере.

У меня есть таблица ms-sql примерно так:

ID : Varchar(255)
Event Start : datetime
Event End : datetime
Area : int

Я представляю, что использую что-токак показано ниже, я могу генерировать свои события на html-странице:

Set gobjConn = Server.CreateObject("ADODB.Connection")
Set grs = Server.CreateObject("ADODB.Recordset")
gsConnect = "Driver={SQL Server};Server=Server;Database=mydb;uid=uid,pw=pw
gobjConn.Open gsConnect


    gsSQL = "SELECT ID,[Event Start], [Event End] FROM Events WHERE Area = '" & Area& "'"
Set grs = gobjConn.Execute(gsSQL)

Номер зоны - это строка запроса, которую я бы объявил далее в своем коде.

отсюда я имеюне знаю, как интегрировать это в полный календарь Jquery.

    $(document).ready(function() {

    $('#calendar').fullCalendar({
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay,listWeek'
      },
      defaultDate: '2019-01-12',
      editable: true,
      navLinks: true, // can click day/week names to navigate views
      eventLimit: true, // allow "more" link when too many events
      events: {
        url: 'read_my_sql_dB_here',
        error: function() {
          $('#script-warning').show();
        }
      },
      loading: function(bool) {
        $('#loading').toggle(bool);
      }
    });

  });

извините за длинный пост, я бы подумал, что лучше быть явным, чем неявным!Также, пожалуйста, будьте осторожны, до вчерашнего вечера я понятия не имел, что такое (или есть) asp-classic, и я начинающий программист.

1 Ответ

0 голосов
/ 06 февраля 2019

Звучит так, как будто вам нужно сгенерировать код JSON, используя классический asp.Для классического ASP есть несколько классов JSON ( см. Здесь ), но код JSON, необходимый для FullCalender.io, выглядит довольно просто, и было бы проще просто response.write, а не генерировать его с использованием класса.

Попробуйте что-то вроде этого ...

events.asp:

<%

    Response.ContentType = "application/json"

    Dim gobjConn, grs, gsConnect, gsSQL, theData, r, Area

    ' if you're getting the area int from the querystring it's wise to
    ' check it's actually an int before inserting it into your SQL

    Area = request.QueryString("Area")

    if NOT isNumeric(Area) then
        Area = 1 ' set a default
        'response.End() ' or just use response.End() to stop the script
    else
        Area = int(Area)
    end if

    Set gobjConn = Server.CreateObject("ADODB.Connection")
    Set grs = Server.CreateObject("ADODB.Recordset")
    gsConnect = "Driver={SQL Server};Server=Server;Database=mydb;uid=uid,pw=pw"
    gobjConn.Open gsConnect

    gsSQL = "SELECT ID,[Event Start], [Event End] FROM Events WHERE Area = " & Area
    Set grs = gobjConn.Execute(gsSQL)

        if NOT grs.EOF then

            ' Use GetRows() to convert the recordset to to a 2D array

            theData = grs.getRows()

            ' start to build the JSON

            response.write "[" & VBcrlf

            for r = 0 to uBound(theData,2)

                ' loop through the events

                response.write "  {" & VBcrlf
                response.write "    ""id"": """ & theData(0,r) & """," & VBcrlf

                ' If you want to include a title you would need to escape the text:
                ' response.write "    ""title"": """ & JSONEncode(theData(3,r)) & """," & VBcrlf

                response.write "    ""start"": """ & theData(1,r) & """," & VBcrlf
                response.write "    ""end"": """ & theData(2,r) & """" & VBcrlf

                if r = uBound(theData,2) then
                    ' end of events, no comma
                    response.write "  }" & VBcrlf
                else
                    response.write "  }," & VBcrlf
                end if

            next

            response.write "]"

        else

            ' no events

        end if

    grs.close() : set grs = nothing ' close the recordset
    gobjConn.close() : set gobjConn = nothing ' close the connection


    ' Use this function to escape JSON text

    Function JSONEncode(ByVal val)
        val = Replace(val, "\", "\\")
        val = Replace(val, """", "\""")
        val = Replace(val, Chr(8), "\b")
        val = Replace(val, Chr(12), "\f")
        val = Replace(val, Chr(10), "\n")
        val = Replace(val, Chr(13), "\r")
        val = Replace(val, Chr(9), "\t")
        JSONEncode = Trim(val)
    End Function

%>

Использование JSON-класса , связанного с @lankymart:

<!--#include file = "jsonObject.class.asp" -->
<%

    Response.ContentType = "application/json"

    Dim gobjConn, grs, gsConnect, gsSQL, Area

    ' if you're getting the area int from the querystring it's wise to
    ' check it's actually an int before inserting it into your SQL

    Area = request.QueryString("Area")

    if NOT isNumeric(Area) then
        Area = 0 ' set a default
        'response.End() ' or just use response.End() to stop the script
    else
        Area = int(Area)
    end if

    Set gobjConn = Server.CreateObject("ADODB.Connection")
    Set grs = Server.CreateObject("ADODB.Recordset")
    gsConnect = "Driver={SQL Server};Server=Server;Database=mydb;uid=uid,pw=pw"
    gobjConn.Open gsConnect

    gsSQL = "SELECT ID,[Event Start], [Event End] FROM Events WHERE Area = " & Area
    Set grs = gobjConn.Execute(gsSQL)

        set JSON = New JSONarray

            JSON.LoadRecordset grs

            JSON.Write() 

        set JSON = nothing

    grs.close() : set grs = nothing ' close the recordset
    gobjConn.close() : set gobjConn = nothing ' close the connection

%>

В вашем jQuery:

  events: {
    url: 'events.asp',
    error: function() {
      $('#script-warning').show();
    }
  },
...