1 2 3xApp.controller('akademikController', function akademikController($scope, $routeParams, $location, $q, $window, $rootScope) { 4 var UMenuID = parseInt($routeParams.UstMenuId); 5 var menuTreeData = []; 6 var menuUstData = []; 7 var UstMenuPath = null; 8 $scope.path = ""; 9 $scope.items = []; 10 var items = []; 11 var AkademikTakvimYil = []; 12 var AkademikTakvimTip = []; 13 angular.element(document).ready(function () { 14 $scope.SayfaUst(); 15 $scope.items = $scope.menuData; 16 $rootScope.AcilirPencere = 2; 17 var promiseAkademik = asyncXXXXAkademik(); 18 19 promiseAkademik.then(function (data) { 20 21 $scope.akademikTakvim = data; 22 }, function (error) { 23 $scope.akademikTakvim = null; 24 }); 25 26 var promiseAkademikYil = asyncXXXXAkademikYil(); 27 28 promiseAkademikYil.then(function (data) { 29 30 $scope.AkademikTakvimYil = data; 31 }, function (error) { 32 $scope.AkademikTakvimYil = null; 33 }); 34 35 36 37 var promiseTreeMenu = asyncXXXXTreeMenu(); 38 39 40 promiseTreeMenu.then(function (data) { 41 42 $scope.items = data; 43 items = unflatten(data); 44 45 46 }, function (error) { 47 menuTreeData = null; 48 }); 49 50 var promiseUstMenuPath = asyncXXXXUstMenuPath(); 51 52 promiseUstMenuPath.then(function (data) { 53 if (data.length === 1) { 54 UstMenuPath = data[0]; 55 $scope.path = UstMenuPath.Yol2; 56 var promiseUstMenu = asyncXXXXUstMenu(); 57 58 59 promiseUstMenu.then(function (data) { 60 61 $scope.menuUstData = data; 62 63 64 }, function (error) { 65 menuUstData = null; 66 }); 67 68 } 69 else 70 UstMenuPath = null; 71 }, function (error) { 72 UstMenuPath = null; 73 }); 74 75 }); 76 77 $scope.grouping = { 78 autoExpandAll: true 79 }; 80 var Aktip = null; 81 var Akyil = null; 82 $scope.dataGridOptions = { 83 columnAutoWidth: true, 84 showBorders: true, 85 width: "100%", 86 bindingOptions: { 87 dataSource: "akademikTakvim", 88 grouping: "grouping" 89 }, 90 paging: {enabled: false }, 91 searchPanel: { 92 visible: true, 93 width: "170px", 94 placeholder: "Ara..." 95 }, 96 wordWrapEnabled: true, 97 groupPanel: { 98 visible: false 99 }, 100 rowAlternationEnabled: true, 101 sorting: { 102 mode: "none" 103 }, 104 columns: [ 105 { 106 caption: "Akademik Faaliyet", 107 dataField: "AkademikFaaliyet", 108 109 }, 110 { 111 caption: "BaÅlangıç", 112 dataField: "BaslamaTarihi", 113 dataType: "date", 114 format: 'dd/MM/yyyy', 115 alignment : 'center' 116 117 }, 118 { 119 caption: "BitiÅ", 120 dataField: "BitisTarihi", 121 dataType: "date", 122 format: 'dd/MM/yyyy', 123 alignment: 'center' 124 125 } 126 , 127 { 128 caption: "Yarıyıl", 129 dataField: "DonemID", 130 groupIndex: 0, 131 customizeText: function (cellInfo) { 132 if (cellInfo.value === 1) 133 return "Güz"; 134 else if (cellInfo.value === 2) 135 return "Bahar"; 136 else return ""; 137 } 138 } 139 ], 140 onToolbarPreparing: function (e) { 141 var dataGrid = e.component; 142 var selectedYear; 143 var selectedTip; 144 e.toolbarOptions.items.unshift({ 145 location: "before", 146 widget: "dxSelectBox", 147 options: { 148 bindingOptions: { 149 dataSource: "AkademikTakvimYil" 150 }, 151 width: 250, 152 placeholder: "Seçiniz", 153 displayExpr: "AdTR", 154 valueExpr: "Yil", 155 value: 2019, 156 onInitialized: function (e) { 157 Akyil = e.component; 158 }, 159 onSelectionChanged: function (e) { 160 selectedYear = e.component.option("value"); 161 $scope.dsAkademik.filter([["Yil", "=", selectedYear], "and", ["GrupTipi", Aktip.option("value")], "and", ["Durum", "=", 1]]); 162 163 $scope.dsAkademik.load(); 164 var promiseAkademik = asyncXXXXAkademik(); 165 166 promiseAkademik.then(function (data) { 167 168 $scope.akademikTakvim = data; 169 }, function (error) { 170 $scope.akademikTakvim = null; 171 }); 172 173 174 } 175 176 } 177 }, 178 { 179 location: "before", 180 widget: "dxSelectBox", 181 options: { 182 items: [{ 183 value: 1, 184 text: "Lisans Programları" 185 }, { 186 value: 2, 187 text: "Lisansüstü Programları" 188 }], 189 width: 200, 190 placeholder: "Seçiniz", 191 displayExpr: "text", 192 valueExpr: "value", 193 value: 1, 194 onInitialized: function (e) { 195 Aktip = e.component; 196 }, 197 onSelectionChanged: function (e) { 198 selectedTip = e.component.option("value"); 199 $scope.dsAkademik.filter([["Yil", "=", Akyil.option("value")], "and", ["GrupTipi", selectedTip], "and", ["Durum", "=", 1]]); 200 $scope.dsAkademik.load(); 201 var promiseAkademik = asyncXXXXAkademik(); 202 203 promiseAkademik.then(function (data) { 204 //alert(JSON.stringify(data)); 205 $scope.akademikTakvim = data; 206 }, function (error) { 207 $scope.akademikTakvim = null; 208 }); 209 210 211 } 212 213 } 214 } 215 216 ); 217 } 218 219 }; 220 221 222 $scope.items = []; 223 $scope.treeViewItemDataDuzey = -1; 224 225 $scope.treeViewOptions = { 226 227 //items: items, 228 width: 300, 229 height: "auto", 230 displayExpr: "MenuAd", 231 keyExpr: "ID", 232 parentIdExpr: "ParentID", 233 //itemsExpr: "men=TreeData", 234 dataStructure: "tree", 235 //showRowLines: true, 236 //showBorders: true, 237 //columnAutoWidth: true, 238 //showColumnHeaders: false, 239 //hoverStateEnabled: true, 240 focusStateEnabled: true, // Klavyedeki Tab ve Ok tuÅlarıyla odaklanmayı saÄlar 241 hoverStateEnabled: true, // Fareyle üzerine gelindiÄinde görsel geri bildirim verir 242 adaptivityEnabled: true, 243 noDataText: "", 244 bindingOptions: { 245 dataSource: "items" 246 }, 247 onContentReady: function (e) { 248 // 1. Alt menüsü olmayan (yaprak) öÄelerden aria-expanded özniteliÄini kaldır 249 $(e.element).find('.dx-treeview-node-is-leaf').removeAttr('aria-expanded'); 250 251 // 2. Rolü olmayan iç div'lerden aria-selected özniteliÄini kaldır 252 $(e.element).find('.dx-treeview-item').removeAttr('aria-selected'); 253 254 // 3. Ana kapsayıcıdaki aranan hayali ID sorununu çözmek için (gerekirse) aktifi temizleyin 255 $(e.element).removeAttr('aria-activedescendant'); 256 }, 257 onItemClick: function (e) { 258 259 260 var item = e.itemData; 261 $scope.treeViewItemDataDuzey = item.Duzey; 262 263 if (item.IcerikTipNo === 1 && item.IcerikID !== 0) 264 window.open("#!/" + item.IcerikAdres + "/" + item.IcerikID + "/" + item.ParentID + "/" + item.IcerikGuID, item.Hedef); 265 else if (item.IcerikTipNo === 1 && item.IcerikID === 0 && item.IcerikAdres !== "") 266 window.open("#!/" + item.IcerikAdres + "/" + item.ParentID, item.Hedef); 267 268 else if (item.IcerikTipNo === 2) 269 window.open(item.IcerikAdres, item.Hedef); 270 } 271 }; 272 273 274 275 $scope.UstMenuClick = function (IcerikID, IcerikTipNo, IcerikAdres, IcerikGuID, UstMenuID) { 276 277 if (IcerikTipNo === 1 && IcerikID !== 0) 278 window.open("#!/" + IcerikAdres + "/" + IcerikID + "/" + UstMenuID + "/" + IcerikGuID ); 279 else if (IcerikTipNo === 1 && IcerikID === 0 && IcerikAdres !== "") 280 window.open("#!/" + IcerikAdres + "/" + UstMenuID ); 281 282 else if (IcerikTipNo === 2) 283 window.open(IcerikAdres, item.Hedef); 284 285 } 286 287 288 //Find index to insert new item----> 289 function findItemIndex(arr, elem) { 290 var len = arr.length; 291 for (var i = 0; i < len; i++) { 292 if (arr[i].SiraNo > elem.SiraNo) 293 return i; 294 } 295 return len; 296 } 297 298 function unflatten(arr) { 299 var tree = [], 300 mappedArr = {}, 301 arrElem, 302 mappedElem; 303 304 // First map the nodes of the array to an object -> create a hash table. 305 for (var i = 0, len = arr.length; i < len; i++) { 306 arrElem = arr[i]; 307 mappedArr[arrElem.ID] = arrElem; 308 mappedArr[arrElem.ID]['items'] = []; 309 } 310 311 312 for (var ID in mappedArr) { 313 if (mappedArr.hasOwnProperty(ID)) { 314 mappedElem = mappedArr[ID];
315 // If the element is not at the root level, add it to its parent array of children. 316 317 if (mappedElem.ParentID) { 318 319 //mappedArr[mappedElem['ParentID']]['items'].push(mappedElem); 320 pushIndex = findItemIndex(mappedArr[mappedElem['ParentID']]['items'], mappedElem); 321 mappedArr[mappedElem['ParentID']]['items'].splice(pushIndex, 0, mappedElem); 322 323 } 324 // If the element is at the root level, add it to first level elements array. 325 else { 326 327 //tree.push(mappedElem); 328 pushIndex = findItemIndex(tree, mappedElem); 329 tree.splice(pushIndex, 0, mappedElem); 330 } 331 332 } 333 } 334 335 return tree; 336 } 337 338 $scope.dsTreeMenu = new DevExpress.data.DataSource({ 339 store: { 340 type: "odata", 341 url: "https://odata.atu.edu.tr/odata/DataService.svc/Menu", 342 key: "ID", 343 keyType: "Int32" 344 }, 345 sort: "SiraNo", 346 filter: ([["SiteID", "=", $scope.SiteID], "and", ["Durum", "=", 1], "and", ["DilKodu", "=", $scope.DilKodu], "and", ["UstMenuID", "=", UMenuID]]), 347 paginate: false, 348 map: function (itemData) { 349 return { 350 ID: itemData.ID, 351 MenuAd: itemData.MenuAd, 352 IcerikAdres: itemData.IcerikAdres, 353 ParentID: itemData.UstMenuID, 354 IcerikID: itemData.IcerikID, 355 IcerikGuID: itemData.IcerikGuID, 356 Duzey: itemData.Seviye, 357 IcerikTipNo: itemData.IcerikTipNo, 358 Hedef: itemData.Hedef 359 }; 360 } 361 }); 362 363 364 var asyncXXXXTreeMenu = function () { 365 366 var d = $q.defer(); 367 368 369 var result = $scope.dsTreeMenu.load(); 370 371 result.done(function (data) { 372 373 d.resolve(data); 374 }) 375 .fail(function (error) { 376 d.reject(error); 377 }); 378 379 return d.promise; 380 }; 381 382 var asyncXXXXAkademik = function () { 383 384 var d = $q.defer(); 385 386 $scope.dsAkademik.filter([ ["Durum", "=", 1]]); 387 388 389 var result = $scope.dsAkademik.load(); 390 391 result.done(function (data) { 392 d.resolve(data); 393 }) 394 .fail(function (error) { 395 d.reject(error); 396 }); 397 398 return d.promise; 399 }; 400 401 var asyncXXXXAkademikYil = function () { 402 403 var d = $q.defer(); 404 405 406 var result = $scope.dsAkademikYil.load(); 407 408 result.done(function (data) { 409 d.resolve(data); 410 }) 411 .fail(function (error) { 412 d.reject(error); 413 }); 414 415 return d.promise; 416 }; 417 418 419 $scope.dsAkademik = new DevExpress.data.DataSource({ 420 store: { 421 type: "odata", 422 url: "https://odata.atu.edu.tr/odata/DataService.svc/V_AkademikTakvim", 423 key: "ID", 424 keyType: "Int32" 425 }, 426 sort: "DonemID" , 427 paginate: false, 428 map: function (itemData) { 429 return { 430 ID: itemData.ID, 431 DonemID: itemData.DonemID, 432 DonemAciklama: itemData.DonemAciklama, 433 Aciklama: itemData.Aciklama, 434 BaslamaTarihi: itemData.BaslamaTarihi, 435 BitisTarihi: itemData.BitisTarihi, 436 AkademikFaaliyet: itemData.AdTR, 437 Yil: itemData.Yil, 438 GrupTipi: itemData.GrupTipi, 439 Durum: itemData.Durum 440 }; 441 } 442 443 }); 444 $scope.dsAkademikYil = new DevExpress.data.DataSource({ 445 store: { 446 type: "odata", 447 url: "https://odata.atu.edu.tr/odata/DataService.svc/AkademikTakvimYil", 448 key: "ID", 449 keyType: "Int32" 450 }, 451 sort: ({ getter: "Yil", desc: true }), 452 map: function (itemData) { 453 return { 454 ID: itemData.ID, 455 Yil: itemData.Yil, 456 AdTR: itemData.AdTR 457 }; 458 } 459 460 });
461 462 var asyncXXXXUstMenuPath = function () { 463 464 var d = $q.defer(); 465 466 var resultUstMenuPath = $scope.dsUstMenuPath.load(); 467 468 resultUstMenuPath.done(function (data) { 469 d.resolve(data); 470 }) 471 .fail(function (error) { 472 d.reject(error); 473 }); 474 475 return d.promise; 476 }; 477 $scope.dsUstMenuPath = new DevExpress.data.DataSource({ 478 store: { 479 type: "odata", 480 url: "https://odata.atu.edu.tr/odata/DataService.svc/Menu", 481 key: "ID", 482 keyType: "Int32" 483 }, 484 map: function (itemData) { 485 return { 486 ID: itemData.ID, 487 Yol2: itemData.Yol2 488 }; 489 } 490 }); 491 492 $scope.dsUstMenuPath.filter("ID", "=", UMenuID); 493 494 495 var asyncXXXXUstMenu = function () { 496 497 var str = $scope.path; 498 499 var array = str.split(','); 500 501 var filter = []; 502 var filterID = []; 503 504 for (var fID in array) { 505 506 if (array.hasOwnProperty(fID)) { 507 if (array[fID] !== "") { 508 filterID.push(["ID", "=", parseInt(array[fID])]); 509 510 if ((array[fID] !== "") && (array[fID] !== array[array.length - 1])) { 511 512 filterID.push("or"); 513 } 514 } 515 516 } 517 } 518 519 filter = [["SiteID", "=", $scope.SiteID], "and", ["Durum", "=", 1], "and", ["DilKodu", "=", $scope.DilKodu]]; 520 if (array.length > 0) filter.push("and", filterID); 521 // alert(filter); 522 $scope.dsUstMenu.filter(filter); 523 $scope.dsUstMenu.sort("Seviye"); 524 525 var d = $q.defer(); 526 527 528 var result = $scope.dsUstMenu.load(); 529 530 result.done(function (data) { 531 532 d.resolve(data); 533 }) 534 .fail(function (error) { 535 d.reject(error); 536 }); 537 538 return d.promise; 539 }; 540 541 $scope.dsUstMenu = new DevExpress.data.DataSource( 542 { 543 store: { 544 type: "odata", 545 url: "https://odata.atu.edu.tr/odata/DataService.svc/Menu", 546 key: "ID", 547 keyType: "Int32" 548 }, 549 sort: "Seviye", 550 paginate: false, 551 map: function (itemData) { 552 return { 553 ID: itemData.ID, 554 MenuAd: itemData.MenuAd, 555 Adres: itemData.AdresSatiri, 556 Duzey: itemData.Seviye, 557 IcerikTipNo: itemData.IcerikTipNo, 558 IcerikID: itemData.IcerikID, 559 UstMenuID: itemData.UstMenuID, 560 IcerikAdres: itemData.IcerikAdres, 561 IcerikGuID: itemData.IcerikGuID, 562 Hedef: itemData.Hedef 563 }; 564 } 565 }); 566}); 567 568 569
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.