AssociatedDocument.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
  2. MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Element", null, false);
  3. MWF.xApplication.process.FormDesigner.Module.AssociatedDocument = MWF.FCAssociatedDocument = new Class({
  4. Extends: MWF.FC$Element,
  5. Implements: [Options, Events],
  6. options: {
  7. "style": "default",
  8. "propertyPath": "../x_component_process_FormDesigner/Module/AssociatedDocument/associateddocument.html"
  9. },
  10. initialize: function(form, options){
  11. this.setOptions(options);
  12. this.path = "../x_component_process_FormDesigner/Module/AssociatedDocument/";
  13. this.cssPath = "../x_component_process_FormDesigner/Module/AssociatedDocument/"+this.options.style+"/css.wcss";
  14. this._loadCss();
  15. this.moduleType = "element";
  16. this.moduleName = "associatedDocument";
  17. this.form = form;
  18. this.container = null;
  19. this.containerNode = null;
  20. },
  21. _resetModuleDomNode: function(){
  22. // this.contentNode = this.node.getElement(".MWFADContent");
  23. // this.buttonContainer = this.node.getElement(".MWFADButtonContainer");
  24. // this.buttonArea = this.node.getElement(".MWFADButtonArea");
  25. // this.buttonNode = this.node.getElement(".MWFADBbutton");
  26. this.node.empty();
  27. this.loadContent();
  28. this.loadButton();
  29. },
  30. _createMoveNode: function(){
  31. this.moveNode = new Element("div", {
  32. "MWFType": "associatedDocument",
  33. "id": this.json.id,
  34. "styles": this.css.moduleNodeMove,
  35. "events": {
  36. "selectstart": function(){
  37. return false;
  38. }
  39. }
  40. }).inject(this.form.container);
  41. },
  42. _createNode: function(){
  43. this.node = this.moveNode.clone(true, true);
  44. this.node.setStyles(this.css.moduleNode);
  45. this.node.set("id", this.json.id);
  46. this.node.addEvent("selectstart", function(){
  47. return false;
  48. });
  49. this.loadContent();
  50. this.loadButton();
  51. },
  52. loadContent: function(){
  53. this.contentNode = new Element("div.MWFADContent", {
  54. "styles": this.json.documentListNodeStyles
  55. }).inject(this.node);
  56. this.contentArea = new Element("div", {
  57. "styles": this.css.contentArea
  58. }).inject(this.contentNode);
  59. this.loadIcon();
  60. },
  61. loadIcon: function(){
  62. this.iconNode = new Element("div", {
  63. "styles": this.css.iconNode
  64. }).inject(this.contentArea);
  65. new Element("div", {
  66. "styles": this.css.iconNodeIcon
  67. }).inject(this.iconNode);
  68. new Element("div", {
  69. "styles": this.css.iconNodeText,
  70. "text": "associatedDocument"
  71. }).inject(this.iconNode);
  72. },
  73. loadButton: function(){
  74. this.buttonContainer = new Element("div.MWFADButtonContainer", {
  75. styles : { "width" : "100%", "overflow" : "hidden", "text-align":"center" }
  76. });
  77. this.buttonArea = new Element("div.MWFADButtonArea").inject( this.buttonContainer );
  78. this.buttonNode = new Element("button.MWFADBbutton", {
  79. "styles": this.json.buttonStyles || {},
  80. "text": this.json.buttonText
  81. }).inject( this.buttonArea );
  82. this.setButtonPosition();
  83. },
  84. clearTemplateStyles: function(styles){
  85. if (styles){
  86. if (styles.styles) this.removeStyles(styles.styles, "styles");
  87. if (styles.buttonStyles) this.removeStyles(styles.buttonStyles, "buttonStyles");
  88. }
  89. },
  90. setTemplateStyles: function(styles){
  91. if (styles.styles) this.copyStyles(styles.styles, "styles");
  92. if (styles.buttonStyles) this.copyStyles(styles.buttonStyles, "buttonStyles");
  93. },
  94. setAllStyles: function(){
  95. this.setPropertiesOrStyles("styles");
  96. this.setPropertiesOrStyles("properties");
  97. this.setPropertiesOrStyles("buttonStyles");
  98. this.reloadMaplist();
  99. },
  100. setPropertiesOrStyles: function(name){
  101. switch (name) {
  102. case "styles":
  103. try{
  104. this.setCustomStyles();
  105. }catch(e){}
  106. break;
  107. case "properties":
  108. try{
  109. this.setCustomProperties();
  110. }catch(e){}
  111. break;
  112. case "buttonStyles":
  113. try{
  114. if( this.buttonNode ){
  115. this.buttonNode.clearStyles();
  116. this.buttonNode.setStyles(this.json.buttonStyles||{});
  117. }
  118. }catch(e){}
  119. break;
  120. case "documentListNodeStyles":
  121. this.contentNode.setStyles( this.json.contentStyle );
  122. }
  123. },
  124. _setEditStyle_custom: function(name, obj, oldValue){
  125. switch ( name ){
  126. case "buttonText":
  127. this.buttonNode.set("text", this.json.buttonText);
  128. break;
  129. case "buttonPosition":
  130. this.setButtonPosition();
  131. break;
  132. }
  133. },
  134. _checkView: function(callback, name, oldValue, newValue){
  135. if( name !== "queryView" )return;
  136. if( !oldValue ){
  137. oldValue = [];
  138. }else{
  139. oldValue = typeOf(oldValue) === "array" ? oldValue : [oldValue];
  140. }
  141. if( !newValue ){
  142. newValue = [];
  143. }else{
  144. newValue = typeOf(newValue) === "array" ? newValue : [newValue];
  145. }
  146. if( !this.json.viewFilterScriptList )this.json.viewFilterScriptList = [];
  147. var list = [];
  148. newValue.each(function (n) {
  149. var vf = this.json.viewFilterScriptList.filter(function (viewFilter) {
  150. return n.id === viewFilter.id;
  151. }.bind(this));
  152. if( vf.length ){
  153. list.push( vf[0] );
  154. }else{
  155. list.push({
  156. id: n.id,
  157. title: n.name + MWF.xApplication.process.FormDesigner.LP.propertyTemplate.filterCond,
  158. script: {"code": "", "html": ""}
  159. })
  160. }
  161. }.bind(this));
  162. this.json.viewFilterScriptList.each(function (vf) {
  163. var ns = newValue.filter(function (n) {
  164. return n.id === vf.id;
  165. });
  166. if( !ns.length ){
  167. var id1 = "scriptArea_"+vf.id;
  168. if( this.property[ id1 ] ){
  169. this.property[ id1 ].destroy();
  170. this.property[ id1 ] = null;
  171. }
  172. }
  173. }.bind(this))
  174. this.json.viewFilterScriptList = list;
  175. this.property.loadScriptListArea();
  176. },
  177. setButtonPosition: function () {
  178. var position = ["leftTop","centerTop","rightTop"].contains( this.json.buttonPosition ) ? "top" : "bottom";
  179. this.buttonContainer.inject(this.node, position);
  180. switch ( this.json.buttonPosition ) {
  181. case "leftTop":
  182. case "leftBottom":
  183. this.buttonArea.setStyles({ "float" : "left", "margin" : "0px" });
  184. break;
  185. case "rightTop":
  186. case "rightBottom":
  187. this.buttonArea.setStyles({ "float" : "right", "margin" : "0px" });
  188. break;
  189. default:
  190. this.buttonArea.setStyles({ "float" : "none", "margin" : "0px auto" });
  191. break;
  192. }
  193. }
  194. });