123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- /// <reference path="../js/jquery-1.11.1.min.js" />
- /// <reference path="../js/knockout-3.1.0.js" />
- /// <reference path="../js/dx.all.js" />
- (function() {
- var endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints);
- var handleServiceError = BemsWebApplication.db._errorHandler;
- var odataServiceConfig = $.extend(true, {}, BemsWebApplication.config.odata, {
- db: {
- url: endpointSelector.urlFor("odata"),
- // To enable JSONP support, uncomment the following line
- //jsonp: !window.WinJS,
- // To allow cookies and HTTP authentication with CORS, uncomment the following line
- // withCredentials: true,
- errorHandler: handleServiceError
- }
- });
- // Enable partial CORS support for IE < 10
- $.support.cors = true;
- BemsWebApplication.odata = new DevExpress.data.ODataContext(odataServiceConfig.db);
- BemsWebApplication.api = {
- url: endpointSelector.urlFor("api"),
- postWithDataGrid: function(apiName, datagridId, formatObject) {
- var postData = utils.datagrid.getSelectedRowsDataWithFormatObject(datagridId, formatObject);
- $.each(formatObject, function(name, value) {
- if (value === null) {
- delete formatObject[name];
- }
- });
- return this.post(apiName, postData, formatObject);
- },
- postWithArray: function(apiName, array, formatObject, notKeys) {
- array = typeof array === 'function' ? array() : array;
- var koValue = $KoValue;
- return this.post(
- apiName,
- array.map(function(x) {
- return BWA.DataUtil.mapObject(formatObject, undefined, function(name, value) {
- return value || koValue(x[name]);
- });
- }),
- BWA.DataUtil.mapObject(formatObject, function(name, value) {
- if (notKeys && notKeys.indexOf(name) >= 0) {
- return null;
- }
- return value === null ? null : name;
- })
- );
- },
- // delete 는 키워드
- del: function(apiName, postData, parameters) {
- var url = this.makeApiUriWithParameters(apiName, parameters);
- var promise = $.ajax({
- url: url,
- dataType: 'json',
- contentType: 'application/json',
- method: "DELETE",
- data: JSON.stringify(postData)
- });
- promise.fail(handleServiceError);
- return promise;
- },
- post: function(apiName, postData, parameters) {
- var url = this.makeApiUriWithParameters(apiName, parameters);
- var promise = $.ajax({
- url: url,
- dataType: 'json',
- contentType: 'application/json',
- method: "POST",
- data: JSON.stringify(postData)
- });
- promise.fail(handleServiceError);
- return promise;
- },
- get: function(apiName, parameters) {
- var url = this.makeApiUriWithParameters(apiName, parameters);
- var promise = $.ajax({
- url: url,
- method: "GET",
- });
- promise.fail(handleServiceError);
- return promise;
- },
- 'delete': function(apiName, parameters) {
- var url = this.makeApiUriWithParameters(apiName, parameters);
- var promise = $.ajax({
- url: url,
- method: "DELETE",
- });
- promise.fail(handleServiceError);
- return promise;
- },
- makeApiUriWithParameters: function(apiName, parameters) {
- var uri = [this.url, '/'];
- uri.push(apiName);
- if (typeof parameters === 'object') {
- uri.push('?');
- $.each(parameters, function(name, value) {
- if (value == null) return true;
- uri.push('&');
- uri.push(name);
- uri.push('=');
- uri.push(value);
- });
- }
- return uri.join('');
- },
- // createODataSource: function(apiName,
- };
- BemsWebApplication.db.createViewModel = function(data) {
- var viewModel = {};
- (function setViewModel(item, prefix) {
- $.each(item, function(name, value) {
- if (name.indexOf('__') >= 0) return true;
- if (value !== null && value instanceof Date === false && typeof value === "object") {
- setViewModel(value, (prefix || '') + name + '_');
- //$.each( value, function( subName, subValue ) {
- // if( subName.indexOf( '__' ) >= 0 ) return true;
- // viewModel[name + '_' + subName] = ko.observable( subValue );
- //});
- }
- else {
- viewModel[(prefix || '') + name] = ko.observable(value);
- }
- });
- })(data);
- return viewModel;
- };
- BemsWebApplication.db.createViewModelWithMultipleFK = function(data, extendOptions) {
- var viewModel = {};
- var array = [];
- var forceOriginalField = extendOptions ? extendOptions.forceOriginalField || false : false;
- if (_.has(extendOptions, 'multipleItems')) {
- //array = _.map(extendOptions.multipleItems, function(v) {
- // return _.clone(v);
- //});
- extendOptions.multipleItems.forEach(function(item) {
- array.push($.extend(true, {}, item));
- });
- }
- var alterNames = null;
- if (_.has(extendOptions, 'alterNames')) {
- alterNames = extendOptions.alterNames;
- }
- (function setViewModel(item, prefix, multipleItems) {
- $.each(item, function (name, value) {
-
- if (name.indexOf('__') >= 0) return true;
- if (value !== null && typeof value === "object" && value instanceof Date === false) {
- var tempPrefix = (prefix || []).concat([forceOriginalField ? name : name.replace(/[0-9]/, ''), '/']);
- for (var i = 0 ; i < multipleItems.length ; i++) {
- var m = multipleItems[i];
- var entryIndex = m.entries.indexOf(name);
- if (entryIndex >= 0) {
- m.fields.every(function(field, j) {
- if (value[m.id] === item[field]) {
- tempPrefix.push(field);
- tempPrefix.push('/');
- m.fields.splice(j, 1);
- return false;
- }
- return true;
- });
- break;
- }
- };
- setViewModel(value, tempPrefix, multipleItems);
- }
- else {
- var fieldName;
- if (Array.isArray(prefix)) {
- fieldName = (prefix.join('') || '') + name;
- }
- else {
- fieldName = prefix || name;
- }
- if (alterNames) {
- var alterName = alterNames[fieldName];
- if (alterName) {
- fieldName = alterName;
- }
- }
- if (forceOriginalField === false) {
- fieldName = fieldName.replace(/\//g, '_');
- }
- viewModel[fieldName] = ko.observable(value);
- }
- });
- })(data, undefined, array);
- if (alterNames) {
- $.each(alterNames, function(name, value) {
- if (_.isUndefined(viewModel[value])) {
- viewModel[value] = ko.observable('');
- }
- });
- }
- //console.log(viewModel);
- return viewModel;
- };
- BemsWebApplication.db.createDynamicDataSource = function(options) {
- var ds = new DevExpress.data.DataSource({
- store: options.store,
- map: function(item) {
- return new BemsWebApplication[dbModel + 'ViewModel'](item);
- }
- });
- var filter = [];
- if (useSitefilter) {
- filter.push(['SiteId', '=', BWA.UserInfo.SiteId()]);
- }
- if (checkUse) {
- if (useSitefilter) {
- filter.push('and');
- }
- filter.push(['IsUse', '=', true]);
- }
- if (filter.length > 0) ds.filter(filter);
- return ds;
- };
- BemsWebApplication.db.dataSourceCache = {};
- BemsWebApplication.db.createDataSourceWithFilters = function(dbModel, filters) {
- var ds = new DevExpress.data.DataSource({
- store: BemsWebApplication.db[dbModel],
- map: function(item) {
- return new BemsWebApplication[dbModel + 'ViewModel'](item);
- },
- paginate: false,
- });
- ds.filter(filters);
- return ds;
- };
- BemsWebApplication.db.createDataSource = function(dbModel, useSitefilter, checkUse, isNoCache) {
- if (isNoCache !== true && dbModel in this.dataSourceCache) {
- return this.dataSourceCache[dbModel];
- }
- var ds = new DevExpress.data.DataSource({
- store: BemsWebApplication.db[dbModel],
- map: function(item) {
- return new BemsWebApplication[dbModel + 'ViewModel'](item);
- },
- paginate: false,
- });
- var filter = [];
- if (useSitefilter) {
- filter.push(['SiteId', '=', BWA.UserInfo.SiteId()]);
- }
- if (checkUse) {
- if (useSitefilter) {
- filter.push('and');
- }
- filter.push(['IsUse', '=', true]);
- }
- if (filter.length > 0) ds.filter(filter);
- if (isNoCache !== true) this.dataSourceCache[dbModel] = ds;
- return ds;
- };
- BemsWebApplication.db.extractKeysObject = function(dbModelName, dataViewModel) {
- var keys = this[dbModelName].key();
- var idsObject = {};
- keys.forEach(function(key) {
- idsObject[key] = dataViewModel[key]();
- });
- return idsObject;
- };
- BemsWebApplication.db.removeFromViewModel = function(dbModelName, dataViewModel) {
- var keysObject = this.extractKeysObject(dbModelName, dataViewModel);
- return this[dbModelName].remove(keysObject);
- };
- }());
|