1app.service('projectService', ['contextInfo', 'tools', function (contextInfo, tools) { 2 3 var params = {}; 4 5 this.setParameters = function (siteID, langCode) { 6 params.siteID = siteID; 7 params.langCode = langCode; 8 }; 9 10 11 var context = contextInfo.getContext(); 12 13 var getFilter = function (state) { 14 15 var filter = [ 16 ["SiteID", params.siteID], "and", 17 ["DilKodu", params.langCode], "and", 18 ["Durum", 1] 19 ]; 20 21 if (state !== -1) { 22 var completed = state === 1 ? true : false; 23 filter.push("and", ["Tamamlandi", completed]) 24 } 25 26 return filter; 27 }; 28 29 var getSearchFilter = function (searchText) { 30 31 return [ 32 ["SiteID", params.siteID], "and", 33 ["DilKodu", params.langCode], "and", 34 ["Durum", 1], "and", 35 [ 36 ["Baslik", "contains", searchText], "or", 37 ["AltBaslik", "contains", searchText], "or", 38 ["Etiket", "contains", searchText] 39 ] 40 ]; 41 }; 42 43 var getProjectFilter = function (id) { 44 45 return [ 46 ["SiteID", params.siteID], "and", 47 ["DilKodu", params.langCode], "and", 48 ["Durum", 1], "and", 49 ["ID", id] 50 ]; 51 }; 52 53 var mapData = function (item) { 54 return { 55 ID: item.ID, 56 GUID: item.GUID, 57 Baslik: item.Baslik, 58 AltBaslik: item.AltBaslik, 59 GorselUrlK: item.GorselUrlK, 60 GorselUrlO: item.GorselUrlO, 61 GosterimSayisi: item.GosterimSayisi, 62 Etiketler: tools.getTags(item.Etiket), 63 EkBilgiler: [ 64 { icon: "calendar-day", description: "BaÅlangıç Tarihi", name: "BaslangicTarihi", text: item.BaslangicTarihi.toLocaleDateString() }, 65 { icon: "clock", description: "Proje Süresi", name: "ProjeSuresi", text: item.Sure.toString() + " " + item.SureDonem }, 66 { icon: "lira-sign", description: "Proje Bütçesi", name: "ProjeButcesi", text: Number(item.ButceTutari).toLocaleString('tr-TR') + " " + item.ButceParaBirimi }, 67 { icon: "eye", description: "Gösterim Sayısı", name: "GosterimSayisi", text: item.GosterimSayisi } 68 ] 69 } 70 } 71 72 var dsProjeler = new DevExpress.data.DataSource({ 73 store: context.Projeler, 74 select: ["ID", "GUID", "Baslik", "AltBaslik", "Sure", "SureDonem", "BaslangicTarihi", "BitisTarihi", 75 "ButceTutari", "ButceParaBirimi", "ButceAciklama", "Ortaklar", "Etiket", "GorselUrlK", "GorselUrlO", "Tamamlandi", "GosterimSayisi"], 76 paginate: true, 77 sort: [{ selector: "Tamamlandi", desc: false }, { selector: "BaslangicTarihi", desc: true }], 78 map: mapData 79 }); 80 81 var dsProje = new DevExpress.data.DataSource({ 82 store: context.Projeler, 83 paginate: false, 84 //map: mapData 85 }); 86 87 var dsDosyalar = new DevExpress.data.DataSource({ 88 store: context.Dosyalar, 89 sort: "SiraNo", 90 paginate: false 91 }); 92 93 var dsGorseller = new DevExpress.data.DataSource({ 94 store: context.Gorseller, 95 sort: "SiraNo", 96 paginate: false, 97 map: function (itemData) { 98 return { 99 id: itemData.ID, 100 title: itemData.Aciklama, 101 alt: "", 102 thumbUrl: itemData.UrlK, 103 url: itemData.UrlBBB, 104 extUrl: "", //itemData.Url 105 deletable: false, 106 coverImage: false 107 } 108 } 109 }); 110 111 112 var loadProjeler = function (state) { 113 return new Promise(function (resolve, reject) { 114 var filter = getFilter(state); 115 116 dsProjeler.filter(filter); 117 dsProjeler.sort({ selector: "BaslangicTarihi", desc: true }); 118 dsProjeler.pageSize(80); 119 dsProjeler.load() 120 .done(function (data) { 121 resolve(data); 122 }).fail(function (error) { 123 reject(error); 124 }); 125 }); 126 }; 127 128 129 var loadAramaProjeler = function (searchText) { 130 return new Promise(function (resolve, reject) { 131 var filter = getSearchFilter(searchText); 132 dsProjeler.filter(filter); 133 dsProjeler.sort({ selector: "BaslangicTarihi", desc: true });
134 dsProjeler.pageSize(80); 135 dsProjeler.load() 136 .done(function (data) { 137 resolve(data); 138 }).fail(function (error) { 139 reject(error); 140 }); 141 }); 142 }; 143 144 145 var loadSonProjeler = function () { 146 return new Promise(function (resolve, reject) { 147 var filter = getFilter(1); 148 dsProjeler.filter(filter); 149 dsProjeler.sort({ selector: "BitisTarihi", desc: true }); 150 dsProjeler.pageSize(5); 151 dsProjeler.load() 152 .done(function (data) { 153 resolve(data); 154 }).fail(function (error) { 155 reject(error); 156 }); 157 }); 158 }; 159 160 161 var loadProje = function (id) { 162 return new Promise(function (resolve, reject) { 163 var filter = getProjectFilter(id); 164 dsProje.filter(filter); 165 dsProje.load() 166 .done(function (data) { 167 var icerik = data.length > 0 ? data[0] : null; 168 resolve(icerik); 169 }).fail(function (error) { 170 reject(error); 171 }); 172 }); 173 }; 174 175 176 var loadDosyalar = function (guid) { 177 return new Promise(function (resolve, reject) { 178 dsDosyalar.filter([["Durum", 1], ["IcerikGUID", guid]]); 179 dsDosyalar.sort("SiraNo"); 180 dsDosyalar.load() 181 .done(function (data) { 182 resolve(data); 183 }).fail(function (error) { 184 reject(error); 185 }); 186 }); 187 }; 188 189 var loadGorseller = function (guid) { 190 return new Promise(function (resolve, reject) { 191 dsGorseller.filter([["Durum", 1], ["IcerikGUID", guid]]); 192 dsGorseller.sort("SiraNo"); 193 dsGorseller.load() 194 .done(function (data) { 195 resolve(data); 196 }).fail(function (error) { 197 reject(error); 198 }); 199 }); 200 }; 201 202 203 var instanceLoadPanel = null; 204 205 var loadPanelOptions = { 206 shading: true, 207 shadingColor: "rgba(0, 0, 0, 0.4)", 208 visible: false, 209 delay: 300, 210 onInitialized: function (e) { 211 instanceLoadPanel = e.component; 212 } 213 }; 214 215 var instancePagerButton = null; 216 var pagerButtonOptions = { 217 keyExpr: "pageNumber", 218 stylingMode: "text", 219 selectionMode: "single", 220 //width: 300, 221 onInitialized: function (e) { 222 instancePagerButton = e.component; 223 //console.log("instancePagerButton") 224 }, 225 bindingOptions: { 226 "onSelectionChanged": "pageChanged", 227 "items": "contentInfo.pagerButtons" 228 } 229 }; 230 231 var searchBoxOptions = { 232 placeholder: "Metin giriniz...", 233 234 showClearButton: true, 235 maxLength: 50, 236 mode: "search", 237 bindingOptions: { 238 value: "searchText", 239 onEnterKey: "searchByText" 240 } 241 }; 242 243 244 245 246 this.getProjectInfo = async function (id) { 247 var info = { 248 project: null, 249 tags: [], 250 files: [], 251 images: [] 252 }; 253 254 var project = await loadProje(id); 255 256 if (project) { 257 var files = await loadDosyalar(project.GUID); 258 259 var images = await loadGorseller(project.GUID); 260 261 context.get("GosterimSayisiGuncelle", { t: 'Projeler', g: project.GUID.toString() }); 262 263 //context.Projeler.update(id, { GosterimSayisi: project.GosterimSayisi + 1 }); 264 265 info.files = files; 266 info.images = images; 267 info.tags = tools.getTags(project.Etiket); 268 info.project = project; 269 info.showImages = true; 270 } 271 272 return info; 273 }; 274 275 276 277 var contents = []; 278 var pageSize = 10; 279 var pageCount = 0; 280 281 var setContentInfo = function () { 282 283 var contentInfo = { 284 pageContents: [], 285 pagerButtons: [], 286 pagerVisible: false 287 } 288 289 pageCount = parseInt((contents.length - 1) / pageSize) + 1; 290 291 contentInfo.pagerVisible = pageCount > 1; 292 for (var pageNumber = 1; pageNumber <= pageCount; pageNumber++) { 293 contentInfo.pagerButtons.push({ pageNumber: pageNumber, text: pageNumber, type: "normal" }); 294 } 295 296 if (pageCount > 0) 297 contentInfo.pageContents = getPageContents(1); 298 299 return contentInfo; 300 }; 301 302 var getPageContents = function (pageNumber) { 303 304 var start = (pageNumber - 1) * pageSize; 305 var end = pageNumber < pageCount ? start + pageSize : contents.length; 306 307 return contents.slice(start, end); 308 }; 309 310 311 this.getContentGroups = function () { 312 var gruplar = []; 313 gruplar.push({ Tip: -1, Aciklama: "Tümü" }); 314 gruplar.push({ Tip: 0, Aciklama: "Devam Eden Projeler" }); 315 gruplar.push({ Tip: 1, Aciklama: "Tamamlanan Projeler" }); 316 317 return gruplar; 318 }; 319 320 this.getPageContents = function (pageNumber) { 321 322 return getPageContents(pageNumber); 323 324 } 325 326 327 this.getProjects = async function (state) { 328 329 contents = await loadProjeler(state); 330 331 return setContentInfo(); 332 }; 333
334 this.getSearchContents = async function (searchText) { 335 336 instanceLoadPanel.show(); 337 contents = await loadAramaProjeler(searchText); 338 instanceLoadPanel.hide(); 339 340 return setContentInfo(); 341 }; 342 343 344 345 this.getTopProjects = async function () { 346 347 return await loadSonProjeler(); 348 349 }; 350 351 this.getOptions = function () { 352 353 var options = { 354 loadPanel: loadPanelOptions, 355 pagerButton: pagerButtonOptions, 356 searchBox: searchBoxOptions 357 } 358 return options; 359 }; 360 361 362}]); 363 364
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.