PageSourceSearch

https://pic.int/Resources/Shared/scripts/appMeetings/meetingsListTools-2024.js

js pic.int collected 2026-10-02 03:27:15 UTC 18,136 bytes, 343 lines download raw bytes

1
2//var arrConfig = { id: "UpcomingMeetings", 
3//    template: "", //template id
4//    searchTemplate: "", //string with search options (conv|type|year|region), empty for no search
5//    showPager: false,
6//    pageSize: 25,
7//    showUpcomingOnly: false,
8//    daysFromToday: -60, //0 for null
9//    conv: "rotterdam", 
10//    type: "workshop", 
11//    country: "", 
12//    region: "", 
13//    terms: "", 
14//    lang: "en"
15//};
16
17function DisplayMeetingsList(arrConfig) {
18
19    //to do: implement terms search, full search box, iterate trough multiple values in config
20
21    var sortDir = "desc";
22    //set language labels
23    switch (arrConfig.lang) {
24        case "fr":
25            arrLabels = langLablelsFr;
26            kendo.culture("fr-FR");
27            break;
28        case "es":
29            arrLabels = langLablelsSp;
30            kendo.culture("es-ES");
31            break;
32        default:
33            arrLabels = langLablelsEn;
34    }
35    //set meeting feed default filters (get only active and confimed meetings organized by BRS that are not webinars or online meetings)
36    var arrFilters = initMeetingsFilters(arrConfig);
37    //check sort direction
38    if (arrConfig.showUpcomingOnly == true) {
39        sortDir = "asc"; //change default sort (when upcoming)
40    }
41
42    //Load the template definition from an external file
43    templateLoader.loadExtTemplate("/Resources/Shared/scripts/appMeetings/meetings.tmpl.htm", arrConfig.id);
44
45    //Subscribe to event triggered when templates loaded (Don't load use templates before they are available)
46    $(document).bind("TEMPLATE_LOADED_" + arrConfig.id, function (e, path) {
47
48        $(document).ready(function () {
49
50            //inject html elements in HTML module based on the id given as a parameter and add warper class for controling display in CSS
51            $("#" + arrConfig.id).addClass("meetingsListWrap");
52            //add search if needed
53            if (arrConfig.searchTemplate !== undefined && arrConfig.searchTemplate !== "") {
54                $("#" + arrConfig.id).append("<div class=\"meetingsSearch k-block\"><h2>" + arrLabels.searchBoxTitle + "</h2></div>");
55                //check if search by conv
56                if (arrConfig.searchTemplate.indexOf("conv") >= 0) {
57                    $("#" + arrConfig.id).find(".meetingsSearch").append("<select class=\"meetingSearchConv\"></select>");
58                }
59                //check if search by type
60                if (arrConfig.searchTemplate.indexOf("type") >= 0) {
61                    $("#" + arrConfig.id).find(".meetingsSearch").append("<select class=\"meetingSearchType\"></select>");
62                }
63                //check if search by region
64                if (arrConfig.searchTemplate.indexOf("region") >= 0) {
65                    $("#" + arrConfig.id).find(".meetingsSearch").append("<select class=\"meetingSearchRegion\"></select>");
66                }
67                //check if search by year
68                if (arrConfig.searchTemplate.indexOf("year") >= 0) {
69                    $("#" + arrConfig.id).find(".meetingsSearch").append("<select class=\"meetingSearchYear\"></select>");
70                }
71            }
72            //add meeting list div
73            $("#" + arrConfig.id).append("<div class=\"meetingsList\"></div>");
74            //add pager if needed
75            if (arrConfig.showPager == true) {
76                $("#" + arrConfig.id).append("<div class=\"meetingsListPager\"></div>");
77            }
78            //add other divs
79            $("#" + arrConfig.id).append("<div class=\"meetingsListProgress\"></div><div class=\"meetingsListLog\"></div>");
80            //set pageSize
81            var pageSize = 25;
82            if (arrConfig.pageSize !== undefined && arrConfig.pageSize !== null) { pageSize = arrConfig.pageSize; }
83            //set data source to retrieve meetings
84            var dataSource = new kendo.data.DataSource({
85                serverFiltering: true,
86                serverSorting: true,
87                serverPaging: true,
88                pageSize: pageSize,
89                type: "odata",
90                transport: {
91                    read: {
92                        url: "//informea.pops.int/Meetings/Conferences.svc/Meetings?$select=id,title,de
92scription,url,start,end,city,country,brs_country,imageUrl,imageCopyright,status,brs_treaties,brs_terms,type,brs_unregion",
93                        dataType: "jsonp"
94                    },
95                    parameterMap: function (options, type) {
96                        var paramMap = kendo.data.transports.odata.parameterMap(options);
97                        if (paramMap.$filter) {
98                            // filtering by guid does not work, so reformat the filter here
99                            var oStr = paramMap.$filter;
100                            oStr = oStr.replace("brs_organizerId eq ", "brs_organizerId eq guid");
101                            paramMap.$filter = oStr;
102                        }
103                        return paramMap;
104                    }
105                },
106                //filter active meeting, meeting type is webinar and web published
107                filter: arrFilters,
108                sort: { field: "start", dir: sortDir },
109                change: function (e) {
110                    var oview = this.view();
111                },
112                requestStart: function (e) {
113                    kendo.ui.progress($("#" + arrConfig.id).find(".meetingsListProgress"), true);
114                },
115                requestEnd: function (e) {
116                    kendo.ui.progress($("#" + arrConfig.id).find(".meetingsListProgress"), false);
117                },
118                error: function (e) {
119                    $("#" + arrConfig.id).find(".meetingsListLog").append("<p>Error: " + e.status + "</p>");
120                }
121            });
122
123            //display list of meetings
124            var tmplId = "#meetingListTemplateDefault";
125            if (arrConfig.template !== undefined && arrConfig.template !== "" && arrConfig.template !== "default") {
126                tmplId = "#" + arrConfig.template;
127            }
128            $("#" + arrConfig.id).find(".meetingsList").kendoListView({
129                dataSource: dataSource,
130                template: kendo.template($(tmplId).html()),
131                dataBound: function () {
132                    //adjust left column height
133                    if ($("#dnn_LeftColumn").height() !== null) {
134                        //inner page
135                      //  if ($("#dnn_LeftColumn").height() < $("#dnn_ContentPane").height()) { $("#dnn_LeftColumn").height($("#dnn_ContentPane").height() + 100); }
136                    }
137                    else {
138                       //     if ($("#dnn_LeftColumn").height() < $("#home_body").height()) { $("#dnn_LeftColumn").height($("#home_body").height() + 100); }
139                    }
140                    if (arrConfig.showUpcomingOnly == true) {
141                        //hide upcoming label if all upcoming meetings
142                        $("#" + arrConfig.id).find(".meetingItemUpcoming").hide();
143                    }
144                }
145            });
146            //display pager
147            if (arrConfig.showPager == true) {
148                $("#" + arrConfig.id).find(".meetingsListPager").kendoPager({
149                    dataSource: dataSource,
150                    pageSizes: [10, 25, 50, 100]
151                });
152            }
153            //display (populate search, if needed)
154            if (arrConfig.searchTemplate !== undefined && arrConfig.searchTemplate !== "") {
155                //check if search by conv
156                if (arrConfig.searchTemplate.indexOf("conv") >= 0) {
157                    $("#" + arrConfig.id).find(".meetingSearchConv").kendoDropDownList({
158                        dataSource: [
159                            { val: "basel", label: arrLabels.ddlConvBc },
160                            { val: "rotterdam", label: arrLabels.ddlConvRc },
161                            { val: "stockholm", label: arrLabels.ddlConvSc }
162                        ],
163                        dataTextField: "label",
164                        dataValueField: "val",
165                        change: function (e) {
166                            setMeetingsFilters(arrConfig);
167                        },
168                        optionLabel: arrLabels.ddlConvDefault
169                    });
170                }
171                //check if search by type
172                if (arrConfig.searchTemplate.indexOf("type") >= 0) {
173                    $("#" + arrConfig.id).find(".meetingSearchType").kendoDropDownList({
174                        dataSource: [
175                            { val: "ad-hoc group", label: arrLabels.ddlTypeAdHoc },
176                            { val: "conference", label: arrLabels.ddlTypeConf },
177                            { val: "cop", label: arrLabels.ddlTypeCop },
178                            { val: "expert group", label: arrLabels.ddlTypeExpert },
179                            { val: "subsidiary body", label: arrLabels.ddlTypeSubBody },
180                            { val: "symposia", label: arrLabels.ddlTypeSymp },
181                            { val: "workshop", label: arrLabels.ddlTypeWorkshop },
182                            { val: "other", label: arrLabels.ddlTypeOther }
183                        ],
184                        dataTextField: "label",
185                        dataValueField: "val",
186                        change: function (e) {
187                            setMeetingsFilters(arrConfig);
188                        },
189                        optionLabel: arrLabels.ddlTypeDefault
190                    });
191                }
192                //check if search by region
193                if (arrConfig.searchTemplate.indexOf("region") >= 0) {
194                    $("#" + arrConfig.id).find(".meetingSearchRegion").kendoDropDownList({
195                        dataSource: [
196                            { val: "africa", label: arrLabels.ddlRegionsAfrica },
197                            { val: "asia", label: arrLabels.ddlRegionsAsia },
198                            { val: "asia-pacific", label: arrLabels.ddlRegionsAsiaPacific },
199                            { val: "cee", label: arrLabels.ddlRegionsCee },
200                            { val: "grulac", label: arrLabels.ddlRegionsGrulac },
201                            { val: "weog", label: arrLabels.ddlRegionsWeog }
202                        ],
203                        dataTextField: "label",
204                        dataValueField: "val",
205                        change: function (e) {
206                            setMeetingsFilters(arrConfig);
207                        },
208                        optionLabel: arrLabels.ddlRegionsDefault
209                    });
210                }
211                //check if search by year
212                if (arrConfig.searchTemplate.indexOf("year") >= 0) {
213                    $("#" + arrConfig.id).find(".meetingSearchYear").kendoDropDownList({
214                        dataSource: getYearsList(1992),
215                        dataTextField: "label",
216                        dataValueField: "val",
217                        change: function (e) {
218                            setMeetingsFilters(arrConfig);
219                        },
220                        optionLabel: arrLabels.ddlYearsDefault
221                    });
222                }
223            }
224
225
226
227        });
228
229    });
230
231
232}
233
234function DisplayMeeting(arrConfig) {
235    //Load the template definition from an external file
236    templateLoader.loadExtTemplate("/Resources/Shared/scripts/appMeetings/meetings.tmpl.htm", arrConfig.id);
237
238    //Subscribe to event triggered when templates loaded (Don't load use templates before they are available)
239    $(document).bind("TEMPLATE_LOADED_" + arrConfig.id, function (e, path) {
240        $(document).ready(function () {
241            //add html 
242            $("#" + arrConfig.id).addClass("meetingsListWrap");
243            $("#" + arrConfig.id).append("<div class=\"meetingsList\"></div><div class=\"meetingsListProgress\"></div><div class=\"meetingsListLog\"></div>");
244            //check param (meeting Id) - as a parameter or in url
245            var meetingId = "";
246            if (arrConfig.meetingId == undefined || arrConfig.meetingId == null || arrConfig.meetingId == "") {
247                //no meetingId in config, check URL
248                var UrlParams = extractUrlParams();
249                meetingId = UrlParams['meetId'];
250            }
251            else {
252                // from config
253                meetingId = arrConfig.meetingId;
254            }
255            if (meetingId !== undefined && meetingId !== null && meetingId !== "") {
256                //set datasource
257                var dataSource = new kendo.data.DataSource({
258                    serverFiltering: true,
259                    type: "odata",
260                    transport: {
261                        read: {
262                            url: kendo.format("//informea.pops.int/Meetings/Conferences.svc/Meetings(guid'{0}')?$select=title,description,start,end,city,brs_country,imageUrl,imageCopyright,status,location,brs_background,brs_organizerName,brs_objectives,brs_target,brs_infoParticipants", meetingId),
263                            dataType: "jsonp"
264                        },
265                        parameterMap: function (options, type) {
266                            //since CRM oData is not standard, this is needed to properly work with Kendo UI
267                            var paramMap = kendo.data.transports.odata.parameterMap(options);
268                            delete paramMap.$inlinecount; // <-- remove inlinecount parameter.
269                            return paramMap;
270                        }
271                    },
272                    //get only confirmed
273                    //filter: { field: "status", operator: "eq", value: "confirmed" },
274                    //changes due to covid
275                    filter: { field: "status", operator: "neq", value: "tentative" },
276                    requestStart: function (e) {
277                        kendo.ui.progress($("#" + arrConfig.id).find(".meetingsListProgress"), true);
278                    },
279                    requestEnd: function (e) {
280                        kendo.ui.progress($("#" + arrConfig.id).find(".meetingsListProgress"), false);
281                    },
282                    error: function (e) {
283                        $("#" + arrConfig.id).find(".meetingsListLog").append("<p>Error: " + e.status + "</p>");
284                    }
285                });
286                //display
287                var tmplId = "#meetingDetailTemplate";
288                if (arrConfig.template !== undefined && arrConfig.template !== "" && arrConfig.template !== "default") {
289                    tmplId = "#" + arrConfig.template;
290                }
291                $("#" + arrConfig.id).find(".meetingsList").kendoListView({
292                    dataSource: dataSource,
293                    template: kendo.template($(tmplId).html()),
294                    dataBound: function () {
295                        //set page title
296                        if (arrConfig.setPageTitleFromFeed !== undefined && arrConfig.setPageTitleFromFeed) {
297                            $("#" + arrConfig.id).closest(".container_empty").find("h1 > span").text("");
298                            if (this.dataSource.data().length >= 0) {
299                                $("#" + arrConfig.id).closest(".container_empty").find("h1 > span").text(this.dataSource.data()[0].title);
300                                try {
301                                    $("Head").find("title").text(this.dataSource.data()[0].title);
302                                    $("Head").find("description").text(this.dataSource.data()[0].description);
303                                }
304                                catch (err) {
305                                    //the above causes a bug in IE 8
306                                    console.log("cannot access html page headers");
307                                }
308                            }
309                        }
310                        //move headers in bold within para
311                        $("#" + arrConfig.id).find(".meetingHeaderLabel").each(function (index) {
312                            $(this).children(":first").prepend("<b>" + $(this).attr("data-header") + ":</b>&nbsp;");
313                        });
314                        //check organizer display
315                        if (arrConfig.showOrganizer == false) {
316                            $("#" + arrConfig.id).find(".meetingOrganizer").hide();
317                        }
318                        //check if override organizer line
319                        if (arrConfig.overrideOrganizerWith !== undefined && arrConfig.overrideOrganizerWith !== "") {
320                            $("#" + arrConfig.id).find(".meetingOrganizer").html(arrConfig.overrideOrganizerWith).children(":first").prepend("<b>Organizers:</b>&nbsp;");
321                        }
322                        //adjust left column height
323                        if ($("#dnn_LeftColumn").height() !== null) {
324                            //inner page
325                         //   if ($("#content_leftColumn").height() < $("#dnn_ContentPane").height()) { $("#content_leftColumn").height($("#dnn_ContentPane").height() + 100); }
326                        }
327                        else {
328                            //home page
329                            //  if ($("#dnn_LeftColumn").height() < $("#home_body").height()) { $("#dnn_LeftColumn").height($("#home_body").height() + 100); }
330                        }
331                    }
332                });
333
334            }
335            else {
336                //wrong param
337                $("#" + arrConfig.id).find(".meetingsListLog").append("<p>Error: no meeting found for those parameters.</p>");
338            }
339
340        });
341
342    });
vendor: 1 bytes, line 343
343}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.