function HnsOptionControl(quote){ var _this = this; this.quote = quote; HnsOptionControl.prototype.setQuote(quote); var pick = function(obj, keys){ var newObj = {} keys.forEach(function(key){ newObj[key] = obj[key] }) return newObj } this.optionControl = function(type, keyValMap, doAfter){ var requiredKeysMap = { wireUl: ['shape', 'leftSidePartsSeries', 'leftSideContactNo', 'leftSideHousingNo', 'rightSidePartsSeries', 'rightSideContactNo', 'rightSideHousingNo'], wireDiameter: ['shape', 'wireUl', 'leftSidePartsSeries', 'leftSideContactNo', 'leftSideHousingNo', 'rightSidePartsSeries', 'rightSideContactNo', 'rightSideHousingNo'], usage: ['wireUl', 'wireDiameter'], leftSidePartsMaker: ['shape','wireUl','wireDiameter','usage'], leftSidePartsSeries: ['shape','wireUl','wireDiameter','usage','leftSidePartsMaker'], leftSideContactNoOrLeftSideHousingNo: ['shape','wireUl','wireDiameter','leftSidePartsSeries'], rightSidePartsMaker: ['shape','wireUl','wireDiameter','usage','leftSideContactNo','leftSideHousingNo'], rightSidePartsSeries: ['shape','wireUl','wireDiameter','usage','leftSideContactNo','leftSideHousingNo','rightSidePartsMaker'], rightSideContactNoOrRightSideHousingNo: ['shape','wireUl','wireDiameter','leftSideContactNo','leftSideHousingNo','rightSidePartsSeries'], optionTwisted: ['shape', 'wireDiameter', 'leftSideHousingNo'], optionWiringPattern: ['shape'], } switch(type){ case 'wireUl': case 'wireDiameter': case 'usage': case 'leftSidePartsMaker': case 'leftSidePartsSeries': case 'leftSideContactNoOrLeftSideHousingNo': case 'rightSidePartsMaker': case 'rightSidePartsSeries': case 'rightSideContactNoOrRightSideHousingNo': case 'optionTwisted': case 'optionWiringPattern': if(_this.contains(keyValMap, requiredKeysMap[type])){ _this._optionControl(type, pick(keyValMap, requiredKeysMap[type]), doAfter); break; } default : console.error(type, keyValMap) throw new Error('NOT IMPLEMNTED [optionControl("")]'); } } this._optionControl = function(name, _keyValMap, doAfterOrigin){ var keyValMap = {}; Object.keys(_keyValMap).forEach(function(key){ var isNullOrUndefined = _keyValMap[key] === null || _keyValMap[key] === undefined keyValMap[key] = isNullOrUndefined ? '' : _keyValMap[key]; }) //controlが完了するまで、exeボタンは押せなくする。 if(_this.quote.loadingControl){ _this.quote.loadingControl.entryLoading(); } var _doAfter = function(map){ _this['doAfter_' + name](map); //Loading完了 if(_this.quote.loadingControl){ _this.quote.loadingControl.exitLoading(); } if(doAfterOrigin){ doAfterOrigin(); } }; if(_this.hasPooled(keyValMap)){ _this.executeDoAfterFunction(keyValMap, _doAfter); } else { //一般処理 _this._callAjaxGetOpts(keyValMap, _doAfter); } } this._callAjaxGetOpts = function(keyValMap, doAfter){ _this._ajaxGetOpts("/kiban/utf-8/hns/csHnsEst:quoteItemOptions.do", keyValMap, doAfter); } this.doAfter_wireUl = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'wireUl', 'NONE', true, map); _this.setOptions(map, defaultValMap); } this.doAfter_wireDiameter = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'wireDiameter', null, true, map); const currentWireUl = _this.quote._getVal('wireUl') const currentWireDiameter = _this.quote._getVal('wireDiameter') if(stopEstimateItems.includesWireCombination(currentWireUl, currentWireDiameter)){ defaultValMap['wireDiameter'] = null; } _this.setOptions(map, defaultValMap); stopEstimateItems.disableWireDiameter(); } this.doAfter_usage = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'usage', '0', true, map); _this.setOptions(map, defaultValMap); } this.doAfter_leftSidePartsMaker = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'leftSidePartsMaker', null, true, map); _this.setOptions(map, defaultValMap); } this.doAfter_leftSidePartsSeries = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'leftSidePartsSeries', null, true, map); _this.setOptions(map, defaultValMap); } this.doAfter_leftSideContactNoOrLeftSideHousingNo = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'leftSideContactNo', null, true, map); _this._setDefaultValMap(defaultValMap, 'leftSideHousingNo', null, true, map); _this.setOptions(map, defaultValMap); stopEstimateItems.disableLeftSideContactNo(); stopEstimateItems.disableLeftSideHousingNo(); } this.doAfter_rightSidePartsMaker = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'rightSidePartsMaker', null, true, map); _this.setOptions(map, defaultValMap); } this.doAfter_rightSidePartsSeries = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'rightSidePartsSeries', null, true, map); _this.setOptions(map, defaultValMap); } this.doAfter_rightSideContactNoOrRightSideHousingNo = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'rightSideContactNo', null, true, map); _this._setDefaultValMap(defaultValMap, 'rightSideHousingNo', null, true, map); _this.setOptions(map, defaultValMap); stopEstimateItems.disableRightSideContactNo(); stopEstimateItems.disableRightSideHousingNo(); } this.doAfter_optionTwisted = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'optionTwisted', '0', true, map); _this.setOptions(map, defaultValMap, ['optionTwisted'], null, null, null); //選択不可のメッセージ表示/非表示切替 if(map.optionTwisted && map.optionTwisted.length > 1){ $('#optionTwistedMessage1').hide(); }else{ $('#optionTwistedMessage1').show(); } } this.doAfter_optionWiringPattern = function(map){ var defaultValMap = {}; _this._setDefaultValMap(defaultValMap, 'optionWiringPattern', '1', true, map); _this.setOptions(map, defaultValMap, ['optionWiringPattern'], null, null, null); //選択不可のメッセージ表示/非表示切替 if(map.optionWiringPattern && map.optionWiringPattern.length > 1){ $('#optionWiringPatternMessage1').hide(); }else{ $('#optionWiringPatternMessage1').show(); } } } HnsOptionControl.prototype = new AbstractOptionControl();