{"version":3,"file":"kanban.js","sources":["../sources/header.js","../sources/helpers/image.js","../sources/common.js","../sources/list.js","../sources/dataview.js","../sources/uploader.js","../sources/kanban.js","../sources/locale.js","../sources/locales/en.js","../sources/editor.js","../sources/userlist.js","../sources/menu.js","../sources/comments.js"],"sourcesContent":["webix.protoUI({\n\tname:\"kanbanheader\",\n\t$kanban:true,\n\t$skin:function(){\n\t\tthis.defaults.height = webix.skin.$active.barHeight;\n\t\tthis._template_types.sub.height = webix.skin.$active.barHeight - 12;\n\t},\n\t$init:function(config){\n\t\tlet subtype = this._template_types[config.type];\n\t\tif (subtype)\n\t\t\twebix.extend(config, subtype);\n\t},\n\tdefaults:{\n\t\tcss:\"webix_kanban_header\",\n\t\tborderless:true,\n\t\ttemplate:function(){\n\t\t\tlet icon = this.icon||(this.link?\"webix_kanban_icon kbi-plus-circle\":\"\");\n\t\t\treturn (icon ? \"\" : \"\") +\n\t\t\t\t\"\"+(this.label||\"\")+\"\";\n\t\t},\n\t},\n\t_template_types:{\n\t\t\"sub\":{\n\t\t\tcss:\"webix_kanban_sub_header\"\n\t\t}\n\t},\n\ton_click:{\n\t\t\"webix_kanban_add_icon\":function(){\n\t\t\tlet obj = { text:\"\" };\n\t\t\tlet kanban = this.getKanban();\n\t\t\tlet list = kanban.queryView({id:this.config.link});\n\n\t\t\tif (list && this.callEvent(\"onBeforeCardAdd\",[obj, list])){\n\t\t\t\tkanban.setListStatus(obj, list);\n\t\t\t\tkanban.add(obj);\n\t\t\t}\n\t\t}\n\t},\n\tgetKanban(){\n\t\treturn webix.$$(this.config.master);\n\t},\n}, webix.MouseEvents, webix.ui.template);","const images = { jpg:true, jpeg:true, png:true, gif:true };\n\nconst icons = { ppt:\"-powerpoint\", pptx:\"-powerpoint\", pptm:\"-powerpoint\", pps:\"-powerpoint\", ppsx:\"-powerpoint\", ppsm:\"-powerpoint\",\n\tdoc:\"-word\", docx:\"-word\", docm:\"-word\", xls:\"-excel\", xlsx:\"-excel\", xlsm:\"-excel\", xlsb:\"-excel\", pdf:\"-pdf\",\n\twav:\"-audio\", aif:\"-audio\", mp3:\"-audio\", mid:\"-audio\", mpg:\"-video\", mov:\"-video\", wmv:\"-video\", avi:\"-video\", mp4:\"-video\",\n\tzip:\"-archive\", jar:\"-archive\", rar:\"-archive\", gz:\"-archive\", jpg:\"-image\", jpeg:\"-image\", png:\"-image\", gif:\"-image\"\n};\n\nexport function isImage(key){\n\treturn images[key.toString().toLowerCase()];\n}\n\nexport function getIconName(key){\n\treturn icons[key.toString().toLowerCase()] || \"\";\n}","import {isImage} from \"./helpers/image\";\n\nexport var type = {\n\theight:\"auto\",\n\ticons:[\n\t\t{ id:\"attachments\", icon:\"webix_kanban_icon kbi-file\", show:function(obj) { return obj.attachments? obj.attachments.length: false; }, template:\"#attachments.length#\"},\n\t\t{ id:\"comments\", icon:\"webix_kanban_icon kbi-comment\" , show:function(obj,kanban) { return !!kanban.config.comments; },\n\t\t\ttemplate:function(obj) { return obj.comments?(obj.comments.length||\"\"):\"\"; }\n\t\t},\n\t\t{ id:\"editor\", icon:\"webix_kanban_icon kbi-pencil\", show:function(obj,kanban) { return (kanban.config.editor && !kanban.config.cardActions);} },\n\t\t{ id:\"menu\", icon:\"webix_kanban_icon kbi-cogs\", show:function(obj,kanban) { return !!kanban.config.cardActions;} }\n\t],\n\ttemplateTags: function(obj,common,kanban){\n\t\tlet res = [];\n\t\tif(obj.tags){\n\t\t\tlet tags = kanban._tags;\n\t\t\tfor (let i = 0; i < obj.tags.length; i++){\n\t\t\t\tlet tag = obj.tags[i];\n\t\t\t\tif (tags.exists(tag))\n\t\t\t\t\ttag = tags.getItem(tag).value;\n\t\t\t\tres.push(\"\"+tag+\"\");\n\t\t\t}\n\t\t}\n\t\treturn \"
\" +(res.length?res.join(\"\"):\" \")+\"
\";\n\t},\n\ttemplateIcons: function(obj,common,kanban){\n\t\tvar icons = [];\n\t\tvar icon = null;\n\t\tvar html = \"\";\n\t\tfor (var i = 0; i < common.icons.length; i++){\n\t\t\ticon = common.icons[i];\n\t\t\tif(!icon.show || icon.show(obj,kanban)){\n\t\t\t\thtml = \"\";\n\t\t\t\thtml += \"\";\n\n\t\t\t\tif(icon.template){\n\t\t\t\t\thtml += \"\"+webix.template(icon.template)(obj)+\"\";\n\t\t\t\t}\n\t\t\t\thtml += \"\";\n\t\t\t\ticons.push(html);\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t},\n\ttemplateAvatar: function(obj,common,kanban){\n\t\tlet users = kanban._users;\n\t\tlet user = (obj.user_id && users.exists(obj.user_id)) ? users.getItem(obj.user_id) : {};\n\t\tif (user.image)\n\t\t\treturn \"\";\n\t\treturn \"\";\n\t},\n\ttemplateBody: function(obj){\n\t\treturn obj.text;\n\t},\n\ttemplateAttachments: function(obj){\n\t\tif(obj.attachments){\n\t\t\tfor (let i in obj.attachments){\n\t\t\t\tlet v = obj.attachments[i];\n\t\t\t\tlet type = v.link.split(\".\").pop();\n\t\t\t\tif (isImage(type))\n\t\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t},\n\ttemplateFooter: function(obj,common,kanban){\n\t\tvar tags = common.templateTags(obj,common,kanban);\n\t\treturn (tags?tags:\" \") + common.templateIcons(obj,common,kanban);\n\t},\n\ttemplateStart:webix.template(\"
\"),\n\ttemplate:function(obj, common){\n\t\tlet kanban = webix.$$(common.master);\n\n\t\tvar color = kanban._colors.exists(obj.color) ? kanban._colors.getItem(obj.color).color : obj.color;\n\t\tvar avatar = \"
\"+common.templateAvatar(obj,common,kanban)+\"
\";\n\t\tvar body = \"
\"+common.templateBody(obj,common,kanban)+avatar+\"
\";\n\t\tvar attachments = kanban.config.attachments ? common.templateAttachments(obj,common,kanban) : \"\";\n\t\tvar footer = \"\";\n\t\treturn \"
\"+attachments+body+footer+\"
\";\n\t}\n};\n\nwebix.KanbanView = {\n\t$kanban:true,\n\ton_context:{},\n\t$skin:function(){\n\t\t// prevent default list's item skin height\n\t},\n\tgetKanban(){\n\t\treturn webix.$$(this.config.master);\n\t},\n\t_kanban_event(s, t, i){\n\t\tthis.attachEvent(s,function(...rest){\n\t\t\trest[i] = this;\n\t\t\treturn this.getKanban().callEvent(t, rest);\n\t\t});\n\t},\n\t_fixOrder(){\n\t\tthis.data.each((a,i) => a.$index = i+1);\n\t},\n\tmove(sid,tindex,tobj, details){\n\t\ttobj = tobj || this;\n\t\tdetails = details || {};\n\t\t// normally only one item is dragged\n\t\t// still, it possible to enable multi-selection through API\n\t\tif (webix.isArray(sid)){\n\t\t\treturn webix.DataMove.move.call(this, sid,tindex,tobj, details);\n\t\t}\n\n\t\tconst statusChange = (tobj !== this);\n\t\tconst kanban = this.getKanban();\n\t\tconst item = kanban.getItem(sid);\n\t\tconst dp = webix.dp.$$(kanban.config.id);\n\n\t\tif (statusChange){\n\t\t\tif (!kanban.callEvent(\"onBeforeStatusChange\", [sid,tobj.config.status,tobj])) return;\n\n\t\t\tkanban.setListStatus(item, tobj);\n\n\t\t\tif (dp){\n\t\t\t\tdp.ignore(() => kanban.updateItem(sid));\n\t\t\t} else kanban.updateItem(sid);\n\t\t}\n\n\t\twebix.DataMove.move.call(tobj, sid, tindex);\n\n\t\tthis._fixOrder();\n\t\tif (this !== tobj) tobj._fixOrder();\n\n\t\t// trigger data saving\n\t\tif (dp){\n\t\t\tconst update = webix.copy(item);\n\t\t\tupdate.webix_move_index = tindex;\n\t\t\tupdate.webix_move_id = tobj.data.order[tindex+1];\n\t\t\t// we need to identify the target list on server side\n\t\t\t// when we have a complex status ( object or function )\n\t\t\t// use separate property\n\t\t\tupdate.webix_move_parent = tobj.config.serverStatus || tobj.config.status;\n\t\t\tdp.save(sid, \"update\", update);\n\t\t}\n\n\t\tif (statusChange)\n\t\t\tkanban.callEvent(\"onAfterStatusChange\", [sid,tobj.config.status,tobj]);\n\n\t\treturn sid;\n\t},\n\t_setHandlers(){\n\t\tthis.attachEvent(\"onAfterSelect\", function(){\n\t\t\tthis.eachOtherList(function(list){\n\t\t\t\tlist.unselect();\n\t\t\t});\n\t\t});\n\n\t\tthis._kanban_event(\"onBeforeSelect\", \"onListBeforeSelect\", 2);\n\t\tthis._kanban_event(\"onAfterSelect\", \"onListAfterSelect\", 1);\n\t\tthis._kanban_event(\"onBeforeContextMenu\", \"onListBeforeContextMenu\", 3);\n\t\tthis._kanban_event(\"onAfterContextMenu\", \"onListAfterContextMenu\", 3);\n\t\tthis._kanban_event(\"onItemClick\", \"onListItemClick\", 3);\n\t\tthis._kanban_event(\"onItemDblClick\", \"onListItemDblClick\", 3);\n\t\tthis._kanban_event(\"onBeforeDrag\", \"onListBeforeDrag\", 2);\n\t\tthis._kanban_event(\"onBeforeDrop\", \"onListBeforeDrop\", 2);\n\t\tthis._kanban_event(\"onAfterDrop\",\"onListAfterDrop\", 2);\n\t\tthis._kanban_event(\"onBeforeDragIn\", \"onListBeforeDragIn\", 2);\n\t\tthis._kanban_event(\"onDragOut\", \"onListDragOut\", 2);\n\n\t\tthis.on_click.webix_kanban_user_avatar = this._handle_icons;\n\t\tthis.on_click.webix_kanban_footer_icon = this._handle_icons;\n\t},\n\t_handle_icons(e,id,node){\n\t\tvar icon = node.getAttribute(\"webix_icon_id\");\n\t\tvar all = this.type.icons;\n\n\t\t//per-icon click handlers\n\t\tif (all){\n\t\t\tfor (var i=0; i
\";\n\t},\n\teachOtherList:function(code){\n\t\tvar self = this.config.id;\n\t\tvar master = this.getKanban();\n\n\t\tmaster.eachList(function(view){\n\t\t\tif (view.config.id != self)\n\t\t\t\tcode.call(webix.$$(self), view);\n\t\t});\n\t},\n\tdefaults:{\n\t\tdrag:\"move\",\n\t\tselect:true\n\t}\n};","import {type} from \"./common\";\n\nwebix.protoUI({\n\tname:\"kanbanlist\",\n\t$init(){\n\t\tthis.$view.className += \" webix_kanban_list\";\n\t\tthis.$ready.push(webix.bind(this._setHandlers,this));\n\t},\n\tdefaults:{\n\t\tscroll:\"auto\",\n\t},\n\ttype: type\n}, webix.ui.list, webix.KanbanView);","import {type} from \"./common\";\n\nvar dtype = webix.copy(type);\ndtype.width = 200;\n\nwebix.protoUI({\n\tname:\"kanbandataview\",\n\t$init(){\n\t\tthis.$view.className += \" webix_kanban_list\";\n\t\tthis.$ready.push(webix.bind(this._setHandlers,this));\n\t},\n\tdefaults:{\n\t\tprerender:true,\n\t},\n\ttype:dtype\n}, webix.ui.dataview, webix.KanbanView);","import {isImage, getIconName} from \"./helpers/image\";\n\nwebix.protoUI({\n\tname:\"kanbanuploader\",\n\t$init(){\n\t\tthis.files.data.scheme({\n\t\t\t$init:(obj) =>{\n\t\t\t\tif (typeof obj.link === \"string\" && obj.link){\n\t\t\t\t\tobj.name = obj.name || obj.link.split(\"/\").pop();\n\t\t\t\t\tobj.type = obj.type || obj.name.split(\".\").pop();\n\t\t\t\t\tobj.status = obj.status || \"server\";\n\t\t\t\t}\n\t\t\t\tobj.sizetext = obj.sizetext || this._format_size(obj.size);\n\t\t\t}\n\t\t});\n\n\t\tthis.files.data.attachEvent(\"onStoreUpdated\", () => {\n\t\t\tlet view = webix.$$(this.config.link);\n\t\t\tlet html = \"\" + (webix.i18n.kanban.dnd||\"\") + \"\";\n\t\t\tif (!this.files.data.count())\n\t\t\t\tview.showOverlay(html);\n\t\t\telse view.hideOverlay();\n\t\t});\n\t},\n\tdefaults:{\n\t\ticon:\"webix_kanban_icon kbi-upload\",\n\t},\n\tgetValue(){\n\t\tlet data = [];\n\t\tthis.files.data.each(function(obj){\n\t\t\tif (obj.status === \"server\")\n\t\t\t\tdata.push( {id:obj.id, link:obj.link, size:obj.size} );\n\t\t});\n\t\treturn data;\n\t},\n\t_format_size(size){\n\t\tlet index = 0;\n\t\twhile (size > 1024){\n\t\t\tindex++;\n\t\t\tsize = size/1024;\n\t\t}\n\t\treturn Math.round(size*100)/100 + \" \" + webix.i18n.fileSize[index];\n\t}\n}, webix.ui.uploader);\n\nwebix.type(webix.ui.dataview, {\n\tname:\"uploader\",\n\theight:91,\n\twidth:161,\n\ttemplate:(obj, common) => {\n\t\treturn `\n\t\t\t\t${common.body(obj)}\n\t\t\t\t${common.title(obj,common)}\n\t\t\t\t${common.removeIcon(obj)}`;\n\t},\n\tbody:function(obj){\n\t\tif (obj.status === \"server\" && isImage(obj.type))\n\t\t\treturn `
`;\n\n\t\treturn `
\n\t\t\t\t\t\n\t\t\t\t
`;\n\t},\n\ttitle:function(obj,common){\n\t\treturn `
\n\t\t\t\t\t${common.progress(obj)}\n\t\t\t\t\t
${obj.name}
\n\t\t\t\t
`;\n\t},\n\tprogress:function(obj){\n\t\tswitch(obj.status){\n\t\t\tcase \"client\": return \"\"+obj.sizetext+\"\";\n\t\t\tcase \"transfer\": return \"\"+obj.percent+\"%\";\n\t\t\tcase \"server\": return \"\"+obj.sizetext+\"\";\n\t\t\tdefault: return \"ERROR\";\n\t\t}\n\t},\n\tremoveIcon:function(){\n\t\treturn \"
\";\n\t},\n\ton_click:{\n\t\t\"webix_kanban_remove_upload\":function(ev, id){\n\t\t\twebix.$$(this.config.uploader).files.remove(id);\n\t\t\treturn webix.html.preventEvent(ev);\n\t\t}\n\t}\n});","import \"./header\";\nimport \"./list\";\nimport \"./dataview\";\nimport \"./editor\";\nimport \"./userlist\";\nimport \"./menu\";\nimport \"./comments\";\n\nimport \"./locale\";\n\nfunction defaultSetter(a, sub){\n\tvar status = sub.config.status;\n\n\tif (typeof status === \"object\"){\n\t\tfor (var key in status)\n\t\t\ta[key] = status[key];\n\t} else if (typeof status === \"function\"){\n\t\tstatus.call(sub, a, true);\n\t} else {\n\t\ta.status = status;\n\t}\n}\nfunction defaultFilter(sub){\n\tvar status = sub.config.status;\n\n\tif (typeof status === \"object\")\n\t\treturn function(a){\n\t\t\tfor (var key in status){\n\t\t\t\tif (a[key] != status[key])\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\tif (typeof status === \"function\")\n\t\treturn function(a){ return status.call(sub, a); };\n\n\treturn function(a){ return a.status === status; };\n}\n\nwebix.protoUI({\n\tname:\"kanban\",\n\tdefaults:{\n\t\tdelimiter:\",\"\n\t},\n\t$skin:function(){\n\t\tthis.defaults.type = \"space\";\n\t},\n\t$init(config){\n\t\tthis.$view.className += \" webix_kanban\";\n\n\t\tthis.data.provideApi(this, true);\n\t\tthis.data.scheme({\n\t\t\t$change:(obj) =>{\n\t\t\t\tif (typeof obj.tags === \"string\")\n\t\t\t\t\tobj.tags = this._strToArr(obj.tags);\n\t\t\t}\n\t\t});\n\t\tthis._destroy_with_me = [];\n\n\t\tthis._statuses = new webix.DataCollection();\n\t\tthis._destroy_with_me.push(this._statuses);\n\n\t\tthis._tags = this._data_unification(config.tags);\n\t\tthis._users = this._data_unification(config.users);\n\t\tthis._colors = this._data_unification(config.colors);\n\t\tthis.$ready.push(function(){\n\t\t\tthis.reconstruct();\n\t\t\tthis._initEditor();\n\t\t\tthis._initUserList();\n\t\t\tthis._initMenu();\n\t\t\tthis._initComments();\n\t\t\tthis.data.attachEvent(\"onStoreUpdated\",\n\t\t\t\t(id, data, mode) => this._applyOrder(id, data, mode));\n\t\t\tthis.data.attachEvent(\"onIdChange\",\n\t\t\t\t(oldid, newid) => {\n\t\t\t\t\tthis.getOwnerList(oldid).data.changeId(oldid, newid);\n\t\t\t\t});\n\t\t\tthis.attachEvent(\"onDestruct\", () => {\n\t\t\t\tfor (let i = 0; i < this._destroy_with_me.length; i++)\n\t\t\t\t\tthis._destroy_with_me[i].destructor();\n\t\t\t});\n\t\t});\n\n\t\t//override default api of datastore\n\t\tthis.serialize = this._serialize;\n\t},\n\t_strToArr(value){\n\t\tif (value){\n\t\t\treturn value.split(this.config.delimiter);\n\t\t}\n\t\treturn [];\n\t},\n\tgetTags(){\n\t\treturn this._tags;\n\t},\n\tgetUsers(){\n\t\treturn this._users;\n\t},\n\tgetColors(){\n\t\treturn this._colors;\n\t},\n\tgetStatuses(){\n\t\treturn this._statuses.serialize();\n\t},\n\tcardActions_setter(value){\n\t\tif (value === true) value = [\"edit\", \"copy\", \"remove\"];\n\t\tif (webix.isArray(value)){\n\t\t\treturn value.map((v) => {\n\t\t\t\treturn { id:v, value:webix.i18n.kanban.menu[v]||v };\n\t\t\t});\n\t\t}\n\t},\n\tshowEditor(obj){\n\t\tlet editor = this.getEditor();\n\t\tif (this.callEvent(\"onBeforeEditorShow\", [editor, obj]) && editor){\n\t\t\teditor.setValues(obj);\n\t\t\teditor.show();\n\t\t\tthis.callEvent(\"onAfterEditorShow\", [editor, obj]);\n\t\t}\n\t},\n\tcopy(id){\n\t\tif (this.callEvent(\"onBeforeCopy\", [id])){\n\t\t\tlet item = webix.copy(this.getItem(id));\n\t\t\tdelete item.id;\n\t\t\titem.text = webix.i18n.kanban.copy + \" \" + (item.text || \"\");\n\t\t\tlet sid = this.add(item);\n\t\t\tlet list = this.getOwnerList(sid);\n\t\t\tlist.move(sid, list.getIndexById(id)+1, list);\n\n\t\t\tthis.callEvent(\"onAfterCopy\", [id]);\n\t\t}\n\t},\n\t_removeCard(id){\n\t\tvar promise = webix.promise.defer();\n\n\t\tif (webix.i18n.kanban.confirm){\n\t\t\twebix.confirm({\n\t\t\t\ttext:webix.i18n.kanban.confirm,\n\t\t\t\tcallback:(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.remove(id);\n\t\t\t\t\t\tpromise.resolve();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.remove(id);\n\t\t\tpromise.resolve();\n\t\t}\n\n\t\treturn promise;\n\t},\n\t_data_unification(value){\n\t\tif (value && value.getItem)\n\t\t\treturn value;\n\t\telse {\n\t\t\tlet data = new webix.DataCollection();\n\t\t\tthis._destroy_with_me.push(data);\n\t\t\tif(value && typeof value === \"string\")\n\t\t\t\tdata.load(value);\n\t\t\telse\n\t\t\t\tdata.parse(value||[]);\n\t\t\treturn data;\n\t\t}\n\t},\n\tgetEditor(){\n\t\treturn webix.$$(this._editor);\n\t},\n\tgetUserList(){\n\t\treturn webix.$$(this._userList);\n\t},\n\tgetMenu(){\n\t\treturn webix.$$(this._menu);\n\t},\n\tgetComments(){\n\t\treturn webix.$$(this._comments);\n\t},\n\t_initEditor(){\n\t\tif (this.config.editor){\n\t\t\tlet editor = webix.ui( {view:\"kanbaneditor\", master:this.config.id} );\n\n\t\t\tthis._editor = editor.config.id;\n\t\t\tthis._destroy_with_me.push(editor);\n\n\t\t\tthis.attachEvent(\"onListIconClick\", (icon, id) => {\n\t\t\t\tif (icon === \"editor\") this.showEditor(webix.copy( this.getItem(id) ));\n\t\t\t});\n\t\t\tthis.attachEvent(\"onListItemDblClick\", (id) => this.showEditor(webix.copy( this.getItem(id) )));\n\t\t}\n\t},\n\t_initUserList(){\n\t\tif (this.config.userList){\n\t\t\tlet userlist = typeof this.config.userList === \"object\"?this.config.userList:{};\n\t\t\twebix.extend(userlist, {view:\"kanbanuserlist\", masterId:this.config.id, data:this._users}, true);\n\t\t\tuserlist = webix.ui(userlist);\n\n\t\t\tthis._userList = userlist.config.id;\n\t\t\tthis._destroy_with_me.push(userlist);\n\t\t\t\n\t\t\tthis.attachEvent(\"onAvatarClick\", (id, e, node) => {\n\t\t\t\tlet userList = this.getUserList();\n\t\t\t\tuserList.setContext({id:id, user_id:this.getItem(id).user_id});\n\t\t\t\tuserList.show(node);\n\t\t\t});\n\t\t}\n\t},\n\t_initMenu(){\n\t\tif (this.config.cardActions){\n\t\t\tlet menu = webix.ui( {view:\"kanbanmenu\", data:this.config.cardActions, masterId:this.config.id} );\n\n\t\t\tthis._menu = menu.config.id;\n\t\t\tthis._destroy_with_me.push(menu);\n\n\t\t\tthis.attachEvent(\"onListIconClick\", (icon, id, e, node) => {\n\t\t\t\tif (icon === \"menu\"){\n\t\t\t\t\tlet menu = this.getMenu();\n\t\t\t\t\tmenu.setContext( {id:id} );\n\t\t\t\t\tmenu.show(node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\t_initComments(){\n\t\tif (this.config.comments){\n\t\t\tlet body = typeof this.config.comments === \"object\"?this.config.comments:{};\n\t\t\tbody = webix.extend({width:400, height:400}, body, true);\n\t\t\twebix.extend(body, { view:\"comments\", users:this._users }, true);\n\t\t\tlet comments = webix.ui( {view:\"kanbanchat\", body:body, masterId:this.config.id} );\n\n\t\t\tthis._comments = comments.config.id;\n\t\t\tthis._destroy_with_me.push(comments);\n\n\t\t\tthis.attachEvent(\"onListIconClick\", (icon, id, e, node) => {\n\t\t\t\tif (icon === \"comments\" && this.callEvent(\"onBeforeCommentsShow\", [id, e, node])){\n\t\t\t\t\tlet chat = this.getComments();\n\t\t\t\t\tlet pos = webix.html.offset(node);\n\t\t\t\t\tpos.y += pos.height;\n\t\t\t\t\t\n\t\t\t\t\tchat.hide();\n\t\t\t\t\tlet comments = chat.getBody();\n\t\t\t\t\tlet data = this.getItem(id).comments || [];\n\n\t\t\t\t\tcomments.parse( webix.copy(data) );\n\t\t\t\t\tchat.setContext( {id:id} );\n\t\t\t\t\tchat.show(pos);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\t_serialize(){\n\t\tvar d = [];\n\t\tthis.eachList(function(l){ d = d.concat(l.serialize()); });\n\t\treturn d;\n\t},\n\t_applyOrder(id, data, mode){\n\t\tif (!id) return this._syncData();\n\n\t\tswitch(mode){\n\t\t\tcase \"add\":\n\t\t\t\tif (this._assignList(data) >= 0){\n\t\t\t\t\tthis.getOwnerList(id).add(data);\n\t\t\t\t\tdata.$index = this._sublists[data.$list].count();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"delete\": {\n\t\t\t\tconst subList = this._sublists[data.$list];\n\t\t\t\tif (subList && subList.exists(id))\n\t\t\t\t\tsubList.remove(id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"paint\":\n\t\t\tcase \"update\": {\n\t\t\t\tif (this.getIndexById(id) === -1) break;\n\n\t\t\t\tconst prevList = data.$list;\n\t\t\t\tconst list = this._assignList(data);\n\n\t\t\t\tif (prevList === list){\n\t\t\t\t\tif (list >= 0)\n\t\t\t\t\t\tthis.getOwnerList(id).updateItem(id, data);\n\t\t\t\t} else {\n\t\t\t\t\tif (this._sublists[prevList])\n\t\t\t\t\t\tthis._sublists[prevList].remove(id);\n\t\t\t\t\tif (list >= 0)\n\t\t\t\t\t\tthis.getOwnerList(id).add(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tsetListStatus(obj, list){\n\t\tfor (var i=0; i a.$kanban, \"all\");\n\n\t\tfor (let i = 0; i < views.length; i++) {\n\t\t\tlet sub = views[i];\n\t\t\tif ( sub.config.view !== \"kanbanheader\")\n\t\t\t\tthis._sublists.push(sub);\n\t\t\telse sub.config.master = this.config.id;\n\t\t}\n\n\t\tfor (let i = 0; i < this._sublists.length; i++) {\n\t\t\tlet sub = this._sublists[i];\n\t\t\tthis._subfilters[i] = defaultFilter(sub);\n\n\t\t\tif (this.config.icons){\n\t\t\t\tsub.type.icons = sub.type.icons || this.config.icons;\n\t\t\t}\n\n\t\t\tlet value = sub.config.name || (typeof sub.config.status === \"string\" && sub.config.status ?\n\t\t\t\tsub.config.status[0].toUpperCase() + sub.config.status.slice(1) : sub.config.id);\n\t\t\tstatuses.push( {id:i.toString(), value:value} );\n\n\t\t\tsub.config.master = this.config.id;\n\t\t\tsub.type.master = this.config.id;\n\t\t}\n\n\t\tthis._statuses.clearAll();\n\t\tthis._statuses.parse(statuses);\n\t},\n\t_syncData(){\n\t\tconst sets = [];\n\t\tfor (let i=0; i= 0)\n\t\t\t\tsets[j].push(item);\n\t\t}, this);\n\n\t\tfor (let i=0; i 1 && data[0].$index)\n\t\t\t\tdata.sort( (a,b) => a.$index > b.$index ? 1 : -1 );\n\n\t\t\tthis._sublists[i].clearAll();\n\t\t\tthis._sublists[i].data.importData(data);\n\t\t\tthis._sublists[i]._fixOrder();\n\t\t}\n\t},\n\t_assignList(data){\n\t\tfor (var i = 0; i < this._sublists.length; i++) {\n\t\t\tif (this._subfilters[i](data)){\n\t\t\t\treturn data.$list = i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\tgetSelectedId(){\n\t\tvar selected = null;\n\t\tthis.eachList(function(list){ selected = list.getSelectedId() || selected; });\n\t\treturn selected;\n\t},\n\tselect(id){\n\t\tthis.getOwnerList(id).select(id);\n\t},\n\tgetOwnerList(id){\n\t\tvar item = this.getItem(id);\n\t\treturn item ? this._sublists[item.$list] : null;\n\t},\n\teachList(code){\n\t\tfor (var i=0; i this._close()}\n\t\t\t]\n\t\t};\n\n\t\tlet c = kanban.config.editor;\n\t\tlet form = { view:\"form\", borderless:true, padding:0, elementsConfig:{ labelPosition:\"top\" } };\n\t\tlet elements = [\n\t\t\t{ view:\"textarea\", label:webix.i18n.kanban.editor.text, name:\"text\", height:90},\n\t\t\t{ view:\"multicombo\", label:webix.i18n.kanban.editor.tags, name:\"tags\", options:kanban._tags, $hide:true},\n\t\t\t{ margin:8,\n\t\t\t\tcols:[\n\t\t\t\t\t{ view:\"combo\", label:webix.i18n.kanban.editor.assign, name:\"user_id\", $hide:true, options:{\n\t\t\t\t\t\tbody:{ data:kanban._users, yCount:5 }\n\t\t\t\t\t}},\n\t\t\t\t\t{ view:\"richselect\", label:webix.i18n.kanban.editor.color, name:\"color\", $hide:true, options:{\n\t\t\t\t\t\tbody:{\n\t\t\t\t\t\t\tyCount:5, data:kanban._colors, css:\"webix_kanban_colorpicker\",\n\t\t\t\t\t\t\ttemplate:\"#value#\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}},\n\t\t\t\t\t{ view:\"richselect\", label:webix.i18n.kanban.editor.status, name:\"$list\", options:{\n\t\t\t\t\t\tbody:{ data:kanban._statuses, yCount:5 }\n\t\t\t\t\t}}\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\t\tif (webix.isArray(c))\n\t\t\tform.elements = c;\n\t\telse if (typeof c === \"object\"){\n\t\t\tform = webix.extend(form, c, true);\n\t\t\tform.view = \"form\";\n\t\t\tform.elements = form.elements || form.rows || (form.cols ? [{cols:form.cols}] : elements);\n\t\t\tdelete form.rows; delete form.cols;\n\t\t} else form.elements = elements;\n\n\t\tif (kanban.config.attachments)\n\t\t\tform.elements.push({ margin:0, rows:[\n\t\t\t\t{\n\t\t\t\t\tcols:[\n\t\t\t\t\t\t{ view:\"label\", label:webix.i18n.kanban.editor.attachments },\n\t\t\t\t\t\t{ view:\"kanbanuploader\", label:webix.i18n.kanban.editor.upload, upload:kanban.config.attachments,\n\t\t\t\t\t\t\tname:\"attachments\", autowidth:true, css:\"webix_transparent webix_kanban_uploader\", type:\"icon\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{ view:\"dataview\", localId:\"$kanban_dataview_uploader\", yCount:1, borderless:true,\n\t\t\t\t\ttype:\"uploader\", css:\"webix_kanban_dataview_uploader\",\n\t\t\t\t\ton:{\n\t\t\t\t\t\tonItemDblClick:(id, e, node) => {\n\t\t\t\t\t\t\tlet link = node.getElementsByTagName(\"a\")[0];\n\t\t\t\t\t\t\tlink.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]});\n\n\t\tconfig.body = { paddingX:17, paddingY:0, margin:16,\n\t\t\trows:[\n\t\t\t\tform,\n\t\t\t\t{\n\t\t\t\t\tcols:[\n\t\t\t\t\t\t{ view:\"button\", label:webix.i18n.kanban.remove, type:\"danger\", autowidth:true,\n\t\t\t\t\t\t\thidden:true, localId:\"$kanban_remove\",\n\t\t\t\t\t\t\tclick:() => {\n\t\t\t\t\t\t\t\tlet values = this.getValues({hidden:false});\n\t\t\t\t\t\t\t\tlet kanban = this.getKanban();\n\t\t\t\t\t\t\t\tif (!kanban.callEvent(\"onBeforeEditorAction\", [\"remove\", this, values])) return;\n\n\t\t\t\t\t\t\t\tkanban._removeCard(values.id).then(() => this._close());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ },\n\t\t\t\t\t\t{ view:\"button\", label:webix.i18n.kanban.save, type:\"form\", autowidth:true,\n\t\t\t\t\t\t\tclick:() => {\n\t\t\t\t\t\t\t\tlet values = this.getValues({hidden:false});\n\t\t\t\t\t\t\t\tlet kanban = this.getKanban();\n\t\t\t\t\t\t\t\tif (!kanban.callEvent(\"onBeforeEditorAction\", [\"save\", this, values])) return;\n\n\t\t\t\t\t\t\t\tthis._fixStatus(values, kanban);\n\t\t\t\t\t\t\t\tif ( kanban.exists(values.id) ){\n\t\t\t\t\t\t\t\t\tvalues.$list = kanban.getItem(values.id).$list;\n\t\t\t\t\t\t\t\t\tkanban.updateItem(values.id, values);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse kanban.add(values);\n\t\t\t\t\t\t\t\tthis._close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{ height:1 }\n\t\t\t]\n\n\t\t};\n\n\t\tthis.$ready.push(this._afterInit);\n\t},\n\t_afterInit:function(){\n\t\tthis._form = this.queryView({view:\"form\"});\n\t\tthis._removeBtn = this.queryView({localId:\"$kanban_remove\"});\n\t\tthis._header = this.queryView({localId:\"$kanban_header\"});\n\n\t\tlet uploader = this.queryView({view:\"kanbanuploader\"});\n\t\tif (uploader){\n\t\t\tlet dataview = this.queryView({localId:\"$kanban_dataview_uploader\"});\n\t\t\tuploader.define( \"link\", dataview.config.id );\n\t\t\tuploader.addDropZone(dataview.$view);\n\t\t\twebix.extend(dataview, webix.OverlayBox);\n\t\t}\n\n\t\tlet views = this.queryView({$hide:true}, \"all\");\n\t\tif (views.length)\n\t\t\tthis.attachEvent(\"onShow\", () => {\n\t\t\t\tfor (let i=0; i\"+obj.value;\n\n\t\t\treturn \"\"+obj.value;\n\t\t}\n\t},\n\t$init(){\n\t\tthis.$ready.push(function(){\n\t\t\tthis.attachEvent(\"onShow\", () => {\n\t\t\t\tlet user_id = this.getContext().user_id;\n\n\t\t\t\tif ( user_id && this.exists(user_id) ){\n\t\t\t\t\tthis.select(user_id);\n\t\t\t\t\tthis.showItem(user_id);\n\t\t\t\t} else this.unselectAll();\n\t\t\t});\n\n\t\t\tthis.attachEvent(\"onMenuItemClick\", (id) => {\n\t\t\t\tlet kanban = this.getKanban();\n\t\t\t\tlet selectedTask = this.getContext().id;\n\n\t\t\t\tkanban.updateItem(selectedTask, {user_id:id});\n\t\t\t});\n\n\t\t\tthis.type.master = this.config.masterId;\n\t\t});\n\t},\n\tgetKanban(){\n\t\treturn webix.$$(this.config.masterId);\n\t}\n}, webix.ui.contextmenu);\n","webix.protoUI({\n\tname:\"kanbanmenu\",\n\t$init(){\n\t\tthis.$ready.push(function(){\n\t\t\tthis.attachEvent(\"onItemClick\", function(id){\n\t\t\t\tlet cid = this.getContext().id;\n\t\t\t\tlet kanban = this.getKanban();\n\n\t\t\t\tif ( kanban.callEvent(\"onBeforeCardAction\", [id, cid]) ){\n\t\t\t\t\tswitch(id){\n\t\t\t\t\t\tcase \"edit\":\n\t\t\t\t\t\t\tkanban.showEditor(webix.copy( kanban.getItem(cid) ));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"copy\":\n\t\t\t\t\t\t\tkanban.copy(cid);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"remove\":\n\t\t\t\t\t\t\tkanban._removeCard(cid);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t},\n\tgetKanban(){\n\t\treturn webix.$$(this.config.masterId);\n\t}\n}, webix.ui.contextmenu);","webix.protoUI({\n\tname:\"kanbanchat\",\n\t$init(config){\n\t\tconfig.padding = 0;\n\n\t\tthis.$ready.push(function(){\n\t\t\tthis.attachEvent(\"onHide\", this._hide_chat);\n\n\t\t\tlet list = this.queryView({view:\"list\"});\n\t\t\tlist.data.attachEvent(\"onStoreUpdated\", (id, obj, mode)=>{\n\t\t\t\tif (mode && mode !== \"paint\")\n\t\t\t\t\tthis._save();\n\t\t\t});\n\t\t});\n\t},\n\t_save(){\n\t\tlet context = this.getContext();\n\t\tlet comments = this.getBody();\n\t\tlet kanban = this.getKanban();\n\n\t\tif (context && kanban.exists(context.id))\n\t\t\tkanban.updateItem(context.id, {comments:comments.serialize()});\n\t},\n\t_hide_chat(){\n\t\tlet comments = this.getBody();\n\t\tcomments.queryView({view:\"form\"}).clear();\n\t\tcomments.queryView({view:\"list\"}).clearAll();\n\t},\n\tgetKanban(){\n\t\treturn webix.$$(this.config.masterId);\n\t}\n}, webix.ui.context);\n"],"names":["webix","protoUI","name","$kanban","$skin","defaults","height","skin","$active","barHeight","_template_types","sub","$init","config","subtype","this","type","extend","css","borderless","template","icon","link","label","on_click","obj","text","kanban","getKanban","list","queryView","id","callEvent","setListStatus","add","$$","master","MouseEvents","ui","images","jpg","jpeg","png","gif","icons","ppt","pptx","pptm","pps","ppsx","ppsm","doc","docx","docm","xls","xlsx","xlsm","xlsb","pdf","wav","aif","mp3","mid","mpg","mov","wmv","avi","mp4","zip","jar","rar","gz","isImage","key","toString","toLowerCase","show","attachments","length","comments","editor","cardActions","templateTags","common","res","tags","_tags","i","tag","exists","getItem","value","push","join","templateIcons","html","tooltip","templateAvatar","users","_users","user","user_id","image","templateBody","templateAttachments","v","split","pop","templateFooter","templateStart","color","_colors","avatar","body","KanbanView","on_context","_kanban_event","s","t","attachEvent","rest","_fixOrder","data","each","a","$index","move","sid","tindex","tobj","details","isArray","DataMove","call","statusChange","item","dp","status","ignore","updateItem","update","copy","webix_move_index","webix_move_id","order","webix_move_parent","serverStatus","save","_setHandlers","eachOtherList","unselect","webix_kanban_user_avatar","_handle_icons","webix_kanban_footer_icon","e","node","getAttribute","all","_typeof","click","$dragCreate","DragControl","$drag","drag_container","document","createElement","innerHTML","className","appendChild","$dropHTML","code","self","eachList","view","drag","select","$view","$ready","bind","scroll","dtype","width","prerender","dataview","files","scheme","sizetext","_this","_format_size","size","i18n","dnd","count","hideOverlay","showOverlay","getValue","index","Math","round","fileSize","uploader","title","removeIcon","getIconName","progress","percent","ev","remove","preventEvent","defaultSetter","defaultFilter","position","modal","head","paddingX","paddingY","elements","localId","_close","c","form","padding","elementsConfig","labelPosition","options","$hide","margin","cols","assign","yCount","_statuses","rows","upload","autowidth","on","onItemDblClick","getElementsByTagName","hidden","values","getValues","_removeCard","then","_fixStatus","$list","_afterInit","_form","_removeBtn","_header","define","addDropZone","OverlayBox","views","getList","hide","Number","_sublists","getForm","setValues","listIndex","_assignList","_prepareEditor","edit","refresh","clear","window","layout","autoheight","getContext","showItem","unselectAll","selectedTask","masterId","contextmenu","cid","showEditor","_hide_chat","mode","_save","context","getBody","serialize","clearAll","delimiter","provideApi","$change","_strToArr","_destroy_with_me","DataCollection","_data_unification","colors","reconstruct","_initEditor","_initUserList","_initMenu","_initComments","_this2","_applyOrder","oldid","newid","getOwnerList","changeId","destructor","_serialize","getTags","getUsers","getColors","getStatuses","cardActions_setter","map","menu","getEditor","getIndexById","promise","defer","confirm","callback","result","_this3","resolve","load","parse","_editor","getUserList","_userList","getMenu","_menu","getComments","_comments","_this4","userList","userlist","_this5","setContext","_this6","_this7","chat","pos","offset","y","d","l","concat","_syncData","subList","prevList","_prepareLists","_subfilters","statuses","toUpperCase","slice","sets","j","sort","b","importData","getSelectedId","selected","DataLoader","EventSystem","headerlayout"],"mappings":"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"}