{"version":3,"file":"/pc/common/js/dropdownModel.js.map","sources":["/pc/common/js/dropdownModel.js"],"sourcesContent":["/**\n * Created by luojianguo on 2016/7/13.\n */\ndefine([\"ko\", \"jquery\", \"typeJs\", \"jsonpath\", \"strhelp\"], function (ko, $, typeJs, jsonpath, strhelp) {\n\n\n var pageModel = function (params) {\n\n var self = this;\n var closedDeferred;\n $.fn.getClosedDeferred = function () {\n return closedDeferred;\n };\n $.fn.newClosedDeferred = function () {\n //定义一个延迟通知对象\n closedDeferred = (function () {\n var dfd = $.Deferred();\n return dfd;\n })();\n return closedDeferred;\n };\n $.fn.openDropdownList = function (sync) {\n if (sync) $(this).data('stopautohidden', true);//同步打开的时候规避 ,被bootstrap的下拉关闭\n $(this).find('.dropdown-toggle').dropdown('toggle');\n };\n $.fn.getDropSelectItem= function(){\n\n var tileElement = $(this).find('.droptitle');\n if(tileElement.length > 0){\n tileElement = tileElement[0];\n }else{\n return {};\n }\n if(!$(tileElement).data('bind')){\n return {};\n }else{\n if($(tileElement).data('bind').indexOf('firstKeyText') <0){\n return {};\n }else{\n return {key:$(tileElement).attr('data-key'),text:$(tileElement).text()};\n }\n }\n };\n this.list = params.list;\n this.onChange = params.onChange;\n this.keyField = params.keyField;\n this.from = params.from;\n this.textField = params.textField;\n if(params.dropClass){\n this.dropClass = params.dropClass;\n }else{\n this.dropClass = \"\";\n }\n this.listObj = this.list();\n this.firstKeyText = ko.observable();\n this.firstKeyTextHis = ko.observable();\n this.needSelectFirst = params.needSelectFirst;\n this.defaultSelect = params.defaultSelect; //默认选项\n this.needStopNotifyListChange = false;\n if (this.keyField || this.textField) {\n //使用外部字段名\n if (!this.textField) this.textField = this.keyField;\n } else {\n this.keyField = \"key\";\n this.textField = \"text\";\n }\n var composeKeyVal = function (key, text) {\n var ret = {};\n ret[self.keyField] = key;\n ret[self.textField] = text;\n return ret;\n };\n\n var getTitleFromParas = function(title){\n if(!title){\n return null;\n }\n if(typeJs.isFunction(title)){\n return title();\n }\n if(typeJs.isObject(title)){\n return title;\n }else{\n return composeKeyVal(\"\", title);\n }\n };\n\n var getTitleFromList = function(list){\n if(list && list.length > 0){\n var tempFirstKey = self.list()[0][self.keyField];\n var tempFirstText = self.list()[0][self.textField];\n return composeKeyVal(tempFirstKey, tempFirstText);\n }\n }\n\n var getDafaultText = function(val){\n var text;\n $.each(self.list(), function(index, el) {\n if (val == el.key){\n text = el.text;\n return false;\n }\n });\n return text;\n }\n\n this.title = getTitleFromParas(params.title);\n if(this.title){\n this.firstKeyText(self.title);\n }else if(self.list && self.list().length > 0 && self.needSelectFirst){\n this.firstKeyText(getTitleFromList(self.list()));\n }\n\n //如果外部没有指定第一行显示信息,就取第一条\n this.list.subscribe(function (newVal) {\n //输入框带来的更新忽略对暂存对象 listObj 的操作\n if(self.needStopNotifyListChange){\n self.needStopNotifyListChange = false;\n return;\n }\n self.listObj = newVal;\n if (newVal && newVal.length > 0 && self.needSelectFirst) { //列表更新,如果无标题声明,用第一条\n self.firstKeyText( getTitleFromList(newVal));\n }else{\n self.firstKeyText(self.title);\n }\n });\n\n\n this.list.extend({notify: 'always'});\n\n if (this.defaultSelect){\n this.defaultSelect.subscribe(function (newVal) {\n var text = getDafaultText(newVal);\n self.firstKeyText({key:newVal,text:text});\n });\n }\n \n this.firstKeyText.subscribe(function (newVal) {\n if(!newVal){\n return;\n }\n if(typeJs.isEmpty( newVal[self.keyField])){\n return;\n }\n //if (self.firstKeyText()[self.textField] != newVal[self.keyField] && self.onChange) {\n var selectRecord = jsonpath.parse(self.list(), strhelp.format(\"$.[?(@.{0}=='{1}')]\", self.keyField, newVal[self.keyField]));\n if(!selectRecord[0] && !self.from){//from是从订单列表进来的,如果有from的话不要return要走onchange\n return;\n }\n self.onChange(newVal[self.keyField], newVal[self.textField], selectRecord[0]);\n // }\n });\n //点击历史触发\n this.firstKeyTextHis.subscribe(function (newVal) {\n if(!newVal){\n return;\n }\n if(typeJs.isEmpty( newVal[self.keyField])){\n return;\n }\n var selectRecord = jsonpath.parse(self.gameList(), strhelp.format(\"$.[?(@.{0}=='{1}')]\", self.keyField, newVal[self.keyField]));\n if(!selectRecord[0] && !self.from){//from是从订单列表进来的,如果有from的话不要return要走onchange\n return;\n }\n self.onChange(newVal[self.keyField], newVal[self.textField], selectRecord[0]);\n });\n this.setTitle = function(key,val){\n self.firstKeyText(composeKeyVal(key,val));\n };\n\n this.onItemSelected = function (item, e) {\n // if(item[self.keyField] == self.firstKeyText()[self.keyField]){\n // return true; //没有改变\n // }\n self.firstKeyText(composeKeyVal(item[self.keyField], item[self.textField]));\n return true;\n };\n this.onItemSelectedHis = function (item, e) {\n self.firstKeyText(composeKeyVal(item[self.keyField], item[self.textField]));\n self.firstKeyTextHis(composeKeyVal(item[self.keyField], item[self.textField]));\n return true;\n };\n this.openDropdownList = function (item, e, element) {\n $(e.currentTarget).find('span.arrow_d').removeClass('arrow_d').addClass('arrow_u');\n return true;\n };\n\n this.checkNeedHidden = function (item, e) {\n var stopautohidden = $(e.currentTarget).data('stopautohidden');\n if (stopautohidden) {\n $(e.currentTarget).data('stopautohidden', false);\n return false;\n }\n return true;\n };\n\n this.closeDropdownList = function (item, e) {\n\n $(e.currentTarget).find('span.arrow_u').removeClass('arrow_u').addClass('arrow_d');\n if ($(e.currentTarget).getClosedDeferred()) {\n $(e.currentTarget).getClosedDeferred().resolve();\n }\n return true;\n };\n\n };\n return pageModel;\n})"],"names":["define","ko","$","typeJs","jsonpath","strhelp","pageModel","params","closedDeferred","self","this","fn","getClosedDeferred","newClosedDeferred","dfd","Deferred","openDropdownList","sync","data","find","dropdown","getDropSelectItem","tileElement","length","indexOf","key","attr","text","list","onChange","keyField","from","textField","dropClass","listObj","firstKeyText","observable","firstKeyTextHis","needSelectFirst","defaultSelect","needStopNotifyListChange","composeKeyVal","ret","getTitleFromParas","title","isFunction","isObject","getTitleFromList","tempFirstKey","tempFirstText","getDafaultText","val","each","index","el","subscribe","newVal","extend","notify","isEmpty","selectRecord","parse","format","gameList","setTitle","onItemSelected","item","onItemSelectedHis","e","currentTarget","removeClass","addClass","checkNeedHidden","stopautohidden","closeDropdownList","resolve"],"mappings":"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"}