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> "); 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> "); 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.