1/*! 2 * WRX ASSET HEADER 3 * SCRIPT ID: 604 4 * NAME: owrx.dx.data (27.1.0) 5 * VERSION: 27.1.1 6 */ 7 8function ClearApiCache(keys){ 9 10 if(!Array.isArray(keys)){ 11 keys = keys.split(','); 12 } 13 14 var d = new $.Deferred(); 15 $.getJSON('/api/Diagnostics/Cache/ClearByKeys', { 16 identifiers: JSON.stringify(keys) 17 }) 18 .done(function (data) { 19 d.resolve(data.Items); 20 }).fail(function(jqXHR, textStatus, errorThrown){ 21 d.reject(jqXHR, textStatus, errorThrown); 22 }); 23 return d.promise(); 24} 25function CreateStore(options){ 26 var baseStoreOptions = options.storeOptions || {}; 27 delete options.storeOptions; 28 29 var _options = $.extend({ 30 type: "entity", 31 endpoint: new URL(window.location.href).origin, 32 typeIdentifier: null, 33 keyName: "Id", 34 defaultFilter: null, 35 isLookup: false, 36 defaultParams: {}, 37 defaultSkip: 0, 38 defaultTake: 100000, 39 deferLoading: false, 40 canCache: true 41 }, options ); 42 43 var storeOptions = $.extend({ 44 key: _options.keyName, 45 load: function (loadOptions) { 46 47 var d = new $.Deferred(); 48 49 if(_options.deferLoading){ 50 return d.resolve([], { totalCount: 0 }); 51 }else{ 52 var params = {}; 53 params.filter = []; 54 if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) { 55 var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue]; 56 params.filter.push(searchFilter); 57 } 58 if (loadOptions.filter) { 59 60 if (loadOptions.filter.length > 1 && loadOptions.filter.length % 2 == 0) { 61 var newFilter = []; 62 for (index = 0; index < loadOptions.filter.length; ++index) { 63 newFilter.push(loadOptions.filter[index]); 64 newFilter.push("and"); 65 } 66 newFilter.pop(); 67 loadOptions.filter = newFilter; 68 } 69 if (params.filter.length > 0) { 70 params.filter.push("and"); 71 } 72 params.filter.push(loadOptions.filter); 73 } 74 if (loadOptions.sort) { 75 params.sort = JSON.stringify(loadOptions.sort); 76 } 77 if (_options.defaultFilter && _options.defaultFilter.length > 0) { 78 var newFilter = []; 79 newFilter.push(_options.defaultFilter); 80 if (params.filter && params.filter.length > 0) { 81 newFilter.push("and"); 82 newFilter.push(params.filter); 83 } 84 params.filter = newFilter; 85 } 86 params.filter = JSON.stringify(params.filter); 87 88 params.skip = loadOptions.skip || _options.defaultSkip; 89 params.take = loadOptions.take || _options.defaultTake; 90 91 if(!_options.canCache){ 92 params.force = true; 93 } 94 95 params = $.extend({}, _options.defaultParams, params ); 96 97 $.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, params) 98 .done(function (data) { 99 if(_options.onDataLoaded && typeof _options.onDataLoaded === 'function'){ 100 var results = _options.onDataLoaded(data.Items); 101 d.resolve(results, { totalCount: results.length }); 102 }else{ 103 d.resolve(data.Items, { totalCount: data.TotalCount }); 104 } 105 }) 106 .fail(function (jqXHR, textStatus, errorThrown) { 107 d.reject(jqXHR, textStatus, errorThrown); 108 }); 109 110 111 return d.promise(); 112 } 113 }, 114 insert: function (values) { 115 values = $.extend({}, _options.defaultValues, values); 116 var d = new $.Deferred(); 117 $.ajax({ 118 url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, 119 contentType: "application/json", 120 method: "POST", 121 data: JSON.stringify(values) 122 }) 123 .done(function (data) { 124 d.resolve(data.Items[0]); 125 }) 126 .fail(function (jqXHR, textStatus, errorThrown) { 127 d.reject(jqXHR, textStatus, errorThrown); 128 }); 129 return d.promise(); 130 }, 131 update: function (key, values) { 132 if(key == null || key == undefined || key < 0) 133 return Promise.reject(); 134 var d = new $.Deferred(); 135 $.ajax({ 136 url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), 137 contentType: "application/json", 138 method: "PUT", 139 data: JSON.stringify(values) 140 }) 141 .done(function (data) { 142 d.resolve(data.Items[0]); 143 }) 144 .fail(function (jqXHR, textStatus, errorThrown) { 145 d.reject(jqXHR, textStatus, errorThrown); 146 }); 147 return d.promise(); 148 }, 149 remove: function (key) {
150 if(key == null || key == undefined || key < 0) 151 return Promise.reject(); 152 var d = new $.Deferred(); 153 $.ajax({ 154 url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), 155 method: "DELETE" 156 }) 157 .done(function (data) { 158 d.resolve(); 159 }) 160 .fail(function (jqXHR, textStatus, errorThrown) { 161 d.reject(jqXHR, textStatus, errorThrown); 162 }); 163 return d.promise(); 164 }, 165 byKey: function (key) { 166 if(key == null || key == undefined || key < 0) 167 return Promise.reject(); 168 var d = new $.Deferred(); 169 if(_options.isLookup){ 170 var params = { 171 filter : [] 172 }; 173 if(!_options.canCache){ 174 params.force = true; 175 } 176 params.filter.push(['NumericValue', '=', encodeURIComponent(key)]); 177 if (_options.defaultFilter && _options.defaultFilter.length > 0) { 178 params.filter.push("and"); 179 params.filter.push(_options.defaultFilter); 180 } 181 182 params.filter = JSON.stringify(params.filter); 183 $.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, params) 184 .done(function (data) { 185 d.resolve(data.Items, { totalCount: data.TotalCount }); 186 }) 187 .fail(function (jqXHR, textStatus, errorThrown) { 188 d.reject(jqXHR, textStatus, errorThrown); 189 }); 190 }else{ 191 var params = {}; 192 if(!_options.canCache){ 193 params.force = true; 194 } 195 $.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), params) 196 .done(function (data) { 197 d.resolve(data.Items[0]); 198 }) 199 .fail(function (jqXHR, textStatus, errorThrown) { 200 d.reject(jqXHR, textStatus, errorThrown); 201 }); 202 } 203 return d.promise(); 204 }, 205 },baseStoreOptions); 206 var customStore = new DevExpress.data.CustomStore(storeOptions); 207 208 customStore.loadModel = function(controlId, fromSource){ 209 var d = new $.Deferred(); 210 var params = { 211 force: fromSource || !_options.canCache, 212 controlId: controlId || 184 213 } 214 $.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/model", params) 215 .done(function (data) { 216 d.resolve(data.Items[0]); 217 }) 218 .fail(function (jqXHR, textStatus, errorThrown) { 219 d.reject(jqXHR, textStatus, errorThrown); 220 }); 221 return d.promise(); 222 } 223 224 customStore.loadDefults = function(controlId, fromSource){ 225 var d = new $.Deferred(); 226 var params = { 227 force: fromSource || !_options.canCache, 228 controlId: controlId || 184 229 } 230 $.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/default", params) 231 .done(function (data) { 232 d.resolve(data.Items[0]); 233 }) 234 .fail(function (jqXHR, textStatus, errorThrown) { 235 d.reject(jqXHR, textStatus, errorThrown); 236 }); 237 return d.promise(); 238 } 239 240 customStore.getOptions = function(){ 241 return $.extend({},_options); 242 } 243 244 customStore.option = function( key, value ) { 245 var options = key; 246 var parts; 247 var curOption; 248 var i; 249 250 if ( arguments.length === 0 ) { 251 return $.extend( {}, _options ); 252 } 253 254 if ( typeof key === "string" ) { 255 256 // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } 257 options = {}; 258 parts = key.split( "." ); 259 key = parts.shift(); 260 if ( parts.length ) { 261 curOption = options[ key ] = $.extend( {}, _options[ key ] ); 262 for ( i = 0; i < parts.length - 1; i++ ) { 263 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; 264 curOption = curOption[ parts[ i ] ]; 265 } 266 key = parts.pop(); 267 if ( arguments.length === 1 ) { 268 return curOption[ key ] === undefined ? null : curOption[ key ]; 269 } 270 curOption[ key ] = value; 271 } else { 272 if ( arguments.length === 1 ) { 273 return _options[ key ] === undefined ? null : _options[ key ]; 274 } 275 options[ key ] = value; 276 } 277 } 278 279 for ( key in options ) { 280 _options[ key ] = options[ key ]; 281 } 282 283 return this; 284 } 285 286 return customStore; 287} 288function CreateQueryStore(options){ 289 290 var baseStoreOptions = options.storeOptions || {}; 291 delete options.storeOptions; 292 293 var _options = $.extend({}, { 294 typeIdentifier: 0, 295 keyName: 'Id', 296 endpoint: new URL(window.location.href).origin, 297 defaultFilter: null, 298 defaultParams:{}, 299 defaultSkip: 0, 300 defaultTake: 100000, 301 deferLoading: false, 302 canCache: true 303 }, options); 304 var storeOptions = $.extend({ 305 306 byKey: function (key) {
307 if(key == null || key == undefined || key < 0) 308 return Promise.reject(); 309 var d = new $.Deferred(); 310 var params = {}; 311 if(!_options.canCache){ 312 params.force = true; 313 params[_options.keyName] = key; 314 } 315 params = $.extend({}, _options.defaultParams, params ); 316 317 $.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier, params) 318 .done(function (data) { 319 d.resolve(data.Items, { totalCount: data.TotalCount }); 320 }) 321 .fail(function (jqXHR, textStatus, errorThrown) { 322 d.reject(jqXHR, textStatus, errorThrown); 323 }); 324 return d.promise(); 325 }, 326 327 load: function (loadOptions) { 328 var d = new $.Deferred(); 329 330 if(_options.deferLoading){ 331 return d.resolve([], { totalCount: 0 }); 332 }else{ 333 var params = {}; 334 params.filter = []; 335 if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) { 336 var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue]; 337 params.filter.push(searchFilter); 338 } 339 if (loadOptions.filter) { 340 if (loadOptions.filter.length > 1 && loadOptions.filter.length % 2 == 0) { 341 var newFilter = []; 342 for (index = 0; index < loadOptions.filter.length; ++index) { 343 newFilter.push(loadOptions.filter[index]); 344 newFilter.push("and"); 345 } 346 newFilter.pop(); 347 loadOptions.filter = newFilter; 348 } 349 if (params.filter.length > 0) { 350 params.filter.push("and"); 351 } 352 params.filter.push(loadOptions.filter); 353 } 354 355 if (_options.defaultSort && _options.defaultSort.length > 0) { 356 params.sort = _options.defaultSort; 357 } 358 if (loadOptions.sort) { 359 params.sort = loadOptions.sort; 360 } 361 if(params.sort){ 362 params.sort = JSON.stringify(params.sort); 363 } 364 if (_options.defaultFilter && _options.defaultFilter.length > 0) { 365 var newFilter = []; 366 newFilter.push(_options.defaultFilter); 367 if (params.filter && params.filter.length > 0) { 368 newFilter.push("and"); 369 newFilter.push(params.filter); 370 } 371 params.filter = newFilter; 372 } 373 374 params.filter = JSON.stringify(params.filter); 375 params.skip = loadOptions.skip || _options.defaultSkip; 376 params.take = loadOptions.take || _options.defaultTake; 377 378 if(!_options.canCache){ 379 params.force = true; 380 } 381 params = $.extend({}, _options.defaultParams, params ); 382 383 $.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier, params) 384 .done(function (data) { 385 d.resolve(data.Items, { totalCount: data.TotalCount }); 386 }) 387 .fail(function (jqXHR, textStatus, errorThrown) { 388 d.reject(jqXHR, textStatus, errorThrown); 389 }); 390 return d.promise(); 391 } 392 }, 393 },baseStoreOptions); 394 395 var customStore = new DevExpress.data.CustomStore(storeOptions); 396 customStore.getOptions = function(){ 397 return $.extend({},_options); 398 } 399 400 customStore.option = function( key, value ) { 401 var options = key; 402 var parts; 403 var curOption; 404 var i; 405 406 if ( arguments.length === 0 ) { 407 return $.extend( {}, _options ); 408 } 409 410 if ( typeof key === "string" ) { 411 412 // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } 413 options = {}; 414 parts = key.split( "." ); 415 key = parts.shift(); 416 if ( parts.length ) { 417 curOption = options[ key ] = $.extend( {}, _options[ key ] ); 418 for ( i = 0; i < parts.length - 1; i++ ) { 419 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; 420 curOption = curOption[ parts[ i ] ]; 421 } 422 key = parts.pop(); 423 if ( arguments.length === 1 ) { 424 return curOption[ key ] === undefined ? null : curOption[ key ]; 425 } 426 curOption[ key ] = value; 427 } else { 428 if ( arguments.length === 1 ) { 429 return _options[ key ] === undefined ? null : _options[ key ]; 430 } 431 options[ key ] = value; 432 } 433 } 434 435 for ( key in options ) { 436 _options[ key ] = options[ key ]; 437 } 438 439 return this; 440 } 441 442 customStore.execute = function (values) { 443 values = $.extend({ }, _options.defaultValues, values); 444 var d = new $.Deferred(); 445 $.ajax({ 446 url: _options.endpoint + "/api/query/" + _options.typeIdentifier + '?force=true', 447 contentType: "application/json", 448 method: "POST", 449 data: JSON.stringify(values) 450 }) 451 .done(function (data) { 452 d.resolve({Items: data.Items, TotalCount: data.TotalCount}); 453 }) 454 .fail(function (jqXHR, textStatus, errorThrown) { 455 d.reject(jqXHR, textStatus, errorThrown); 456 }); 457 return d.promise(); 458 }; 459 460 customStore.query = function (values) { 461 values = $.extend({ }, _options.defaultValues, values); 462 var d = new $.Deferred(); 463 values.force = true; 464 $.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier,values) 465 .done(function (data) { 466 d.resolve({Items: data.Items, TotalCount: data.TotalCount}); 467 }) 468 .fail(function (jqXHR, textStatus, errorThrown) { 469 d.reject(jqXHR, textStatus, errorThrown); 470 }); 471 return d.promise(); 472 }; 473 474 return customStore; 475} 476 477function CombineFilters(baseFilter, filter){ 478 var combinedFilter = []; 479 if((baseFilter || []).length > 0){ 480 combinedFilter.push(baseFilter); 481 } 482 if((filter || []).length > 0){ 483 if(combinedFilter.length > 0) 484 combinedFilter.push('and'); 485 combinedFilter.push(filter); 486 } 487 return combinedFilter; 488} 489 490function CreateTypeStore(options) 491{ 492 switch((options.type || 'entity').toLowerCase()){ 493 case 'query' : return CreateQueryStore(options); 494 default : return CreateStore(options); 495 } 496} 497 498/*Proxy for legacy calls*/ 499function GetApiWRXCustomStore(options) 500{ 501 options = $.extend({},options,{ 502 endpoint:new URL(window.location.href).origin 503 }); 504 return CreateStore(options); 505} 506 507/* WRX27 Freestyle compatibility: legacy lookup datasource helper mined from old global assets. 508 * Required by existing admin clone-to-channel dialogs; keep this narrow and do not re-import owrx.uix.global. 509 */ 510(function (global) { 511 "use strict"; 512 513 if (typeof global.getLookupEntityDataSource === "function") { 514 return; 515 } 516 517 global.getLookupEntityDataSource = function getLookupEntityDataSource(entity, filter, sort, search) { 518 var ds = new DevExpress.data.DataSource({ 519 store: new DevExpress.data.CustomStore({ 520 load: function (loadOptions) { 521 var d = new $.Deferred(); 522 var params = {}; 523 524 if (loadOptions.filter) { 525 if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) { 526 var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue]; 527 528 if (Array.isArray(loadOptions.filter)) { 529 loadOptions.filter = [loadOptions.filter, "and", searchFilter]; 530 } else { 531 loadOptions.filter = "[" + loadOptions.filter + ",'and'," + JSON.stringify(searchFilter) + "]"; 532 } 533 } 534 535 params.filter = Array.isArray(loadOptions.filter) ? JSON.stringify(loadOptions.filter) : loadOptions.filter; 536 } else if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) { 537 params.filter = JSON.stringify([loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue]); 538 } 539 540 if (loadOptions.sort) { 541 params.sort = Array.isArray(loadOptions.sort) ? JSON.stringify(loadOptions.sort) : loadOptions.sort; 542 } 543 544 if (loadOptions.group) { 545 params.group = JSON.stringify(loadOptions.group); 546 } 547 548 params.skip = loadOptions.skip; 549 params.take = loadOptions.take; 550 551 $.getJSON("/api/entity/" + entity, params) 552 .done(function (data) { 553 d.resolve(data.Items, { totalCount: data.TotalCount }); 554 }) 555 .fail(function (jqXHR, textStatus, errorThrown) { 556 d.reject(jqXHR, textStatus, errorThrown); 557 }); 558 559 return d.promise(); 560 }, 561 562 byKey: function (key) { 563 if (!key) { 564 return Promise.reject(); 565 } 566 567 var d = new $.Deferred(); 568 var params = {}; 569 570 if (filter) {
571 params.filter = filter; 572 } 573 574 $.getJSON("/api/entity/" + entity + "/" + encodeURIComponent(key), params) 575 .done(function (data) { 576 d.resolve(data.Items && data.Items.length ? data.Items[0] : null); 577 }) 578 .fail(function (jqXHR, textStatus, errorThrown) { 579 d.reject(jqXHR, textStatus, errorThrown); 580 }); 581 582 return d.promise(); 583 } 584 }) 585 }); 586 587 if (filter) { 588 ds.filter(filter); 589 } 590 591 if (sort) { 592 ds.sort(sort); 593 } 594 595 if (search) { 596 ds.searchExpr(search); 597 } 598 599 return ds; 600 }; 601})(window);
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.