LFDetailsWidget.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. /*##############################################################################
  2. # HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. ############################################################################## */
  16. define([
  17. "exports",
  18. "dojo/_base/declare",
  19. "dojo/_base/lang",
  20. "dojo/_base/array",
  21. "dojo/dom",
  22. "dojo/dom-attr",
  23. "dojo/dom-class",
  24. "dojo/dom-form",
  25. "dojo/query",
  26. "dijit/_TemplatedMixin",
  27. "dijit/_WidgetsInTemplateMixin",
  28. "dijit/layout/BorderContainer",
  29. "dijit/layout/TabContainer",
  30. "dijit/layout/ContentPane",
  31. "dijit/Toolbar",
  32. "dijit/TooltipDialog",
  33. "dijit/form/Form",
  34. "dijit/form/SimpleTextarea",
  35. "dijit/form/TextBox",
  36. "dijit/form/Button",
  37. "dijit/form/DropDownButton",
  38. "dijit/TitlePane",
  39. "dijit/registry",
  40. "hpcc/_TabContainerWidget",
  41. "hpcc/ResultWidget",
  42. "hpcc/ECLSourceWidget",
  43. "hpcc/FilePartsWidget",
  44. "hpcc/WUDetailsWidget",
  45. "hpcc/DFUWUDetailsWidget",
  46. "hpcc/TargetSelectWidget",
  47. "hpcc/ESPLogicalFile",
  48. "dojo/text!../templates/LFDetailsWidget.html",
  49. "dijit/TooltipDialog"
  50. ], function (exports, declare, lang, arrayUtil, dom, domAttr, domClass, domForm, query,
  51. _TemplatedMixin, _WidgetsInTemplateMixin, BorderContainer, TabContainer, ContentPane, Toolbar, TooltipDialog, Form, SimpleTextarea, TextBox, Button, DropDownButton, TitlePane, registry,
  52. _TabContainerWidget, ResultWidget, EclSourceWidget, FilePartsWidget, WUDetailsWidget, DFUWUDetailsWidget, TargetSelectWidget,
  53. ESPLogicalFile,
  54. template) {
  55. exports.fixCircularDependency = declare("LFDetailsWidget", [_TabContainerWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {
  56. templateString: template,
  57. baseClass: "LFDetailsWidget",
  58. borderContainer: null,
  59. tabContainer: null,
  60. summaryWidget: null,
  61. contentWidget: null,
  62. contentWidgetLoaded: false,
  63. sourceWidget: null,
  64. sourceWidgetLoaded: false,
  65. defWidget: null,
  66. defWidgetLoaded: false,
  67. xmlWidget: null,
  68. xmlWidgetLoaded: false,
  69. filePartsWidget: null,
  70. filePartsWidgetLoaded: false,
  71. workunitWidget: null,
  72. workunitWidgetLoaded: false,
  73. dfuWorkunitWidget: null,
  74. dfuWorkunitWidgetLoaded: false,
  75. logicalFile: null,
  76. prevState: "",
  77. initalized: false,
  78. postCreate: function (args) {
  79. this.inherited(arguments);
  80. this.summaryWidget = registry.byId(this.id + "_Summary");
  81. this.contentWidget = registry.byId(this.id + "_Content");
  82. this.sourceWidget = registry.byId(this.id + "_Source");
  83. this.defWidget = registry.byId(this.id + "_DEF");
  84. this.xmlWidget = registry.byId(this.id + "_XML");
  85. this.filePartsWidget = registry.byId(this.id + "_FileParts");
  86. this.workunitWidget = registry.byId(this.id + "_Workunit");
  87. this.dfuWorkunitWidget = registry.byId(this.id + "_DFUWorkunit");
  88. this.copyTargetSelect = registry.byId(this.id + "CopyTargetSelect");
  89. this.desprayTargetSelect = registry.byId(this.id + "DesprayTargetSelect");
  90. },
  91. // Hitched actions ---
  92. _onRefresh: function (event) {
  93. this.logicalFile.refresh();
  94. },
  95. _onSave: function (event) {
  96. var context = this;
  97. this.logicalFile.save(dom.byId(context.id + "Description").value);
  98. },
  99. _onDelete: function (event) {
  100. this.logicalFile.doDelete({
  101. load: function (response) {
  102. }
  103. });
  104. },
  105. _onCopyOk: function (event) {
  106. this.logicalFile.copy({
  107. request: domForm.toObject(this.id + "CopyDialog")
  108. });
  109. registry.byId(this.id + "CopyDropDown").closeDropDown();
  110. },
  111. _onCopyCancel: function (event) {
  112. registry.byId(this.id + "CopyDropDown").closeDropDown();
  113. },
  114. _onDesprayOk: function (event) {
  115. this.logicalFile.despray({
  116. request: domForm.toObject(this.id + "DesprayDialog")
  117. });
  118. registry.byId(this.id + "DesprayDropDown").closeDropDown();
  119. },
  120. _onDesprayCancel: function (event) {
  121. registry.byId(this.id + "DesprayDropDown").closeDropDown();
  122. },
  123. _onRenameOk: function (event) {
  124. this.logicalFile.rename({
  125. request: domForm.toObject(this.id + "RenameDialog")
  126. });
  127. registry.byId(this.id + "RenameDropDown").closeDropDown();
  128. },
  129. _onRenameCancel: function (event) {
  130. registry.byId(this.id + "RenameDropDown").closeDropDown();
  131. },
  132. // Implementation ---
  133. init: function (params) {
  134. if (this.initalized)
  135. return;
  136. this.initalized = true;
  137. var context = this;
  138. if (params.Name) {
  139. //dom.byId(this.id + "Name").innerHTML = params.Name;
  140. //dom.byId(this.id + "LogicalFileName2").value = params.Name;
  141. this.logicalFile = ESPLogicalFile.Get(params.Name);
  142. var data = this.logicalFile.getData();
  143. for (key in data) {
  144. this.updateInput(key, null, data[key]);
  145. }
  146. this.logicalFile.watch(function (name, oldValue, newValue) {
  147. context.updateInput(name, oldValue, newValue);
  148. });
  149. this.logicalFile.refresh();
  150. }
  151. this.selectChild(this.summaryWidget, true);
  152. this.copyTargetSelect.init({
  153. Groups: true
  154. });
  155. this.desprayTargetSelect.init({
  156. DropZones: true,
  157. callback: function (value, item) {
  158. context.updateInput("DesprayTargetIPAddress", null, item.machine.Netaddress);
  159. context.updateInput("DesprayTargetPath", null, item.machine.Directory + "/" + context.logicalFile.Filename);
  160. }
  161. });
  162. },
  163. initTab: function() {
  164. var currSel = this.getSelectedChild();
  165. if (currSel.id == this.contentWidget.id && !this.contentWidgetLoaded) {
  166. this.contentWidgetLoaded = true;
  167. this.contentWidget.init({
  168. result: this.logicalFile.result
  169. });
  170. } else if (currSel.id == this.sourceWidget.id && !this.sourceWidgetLoaded) {
  171. this.sourceWidgetLoaded = true;
  172. this.sourceWidget.init({
  173. ECL: this.logicalFile.Ecl
  174. });
  175. } else if (currSel.id == this.defWidget.id && !this.defWidgetLoaded) {
  176. var context = this;
  177. this.logicalFile.fetchDEF(function (response) {
  178. context.defWidgetLoaded = true;
  179. context.defWidget.init({
  180. ECL: response
  181. });
  182. });
  183. } else if (currSel.id == this.xmlWidget.id && !this.xmlWidgetLoaded) {
  184. var context = this;
  185. this.logicalFile.fetchXML(function (response) {
  186. context.xmlWidgetLoaded = true;
  187. context.xmlWidget.init({
  188. ECL: response
  189. });
  190. });
  191. } else if (currSel.id == this.filePartsWidget.id && !this.filePartsWidgetLoaded) {
  192. this.filePartsWidgetLoaded = true;
  193. this.filePartsWidget.init({
  194. fileParts: lang.exists("logicalFile.DFUFileParts.DFUPart", this) ? this.logicalFile.DFUFileParts.DFUPart : []
  195. });
  196. } else if (this.workunitWidget && currSel.id == this.workunitWidget.id && !this.workunitWidgetLoaded) {
  197. this.workunitWidgetLoaded = true;
  198. this.workunitWidget.init({
  199. Wuid: this.logicalFile.Wuid
  200. });
  201. } else if (this.dfuWorkunitWidget && currSel.id == this.dfuWorkunitWidget.id && !this.workunitWidgetLoaded) {
  202. this.dfuWorkunitWidgetLoaded = true;
  203. this.dfuWorkunitWidget.init({
  204. Wuid: this.logicalFile.Wuid
  205. });
  206. }
  207. },
  208. showMessage: function (msg) {
  209. },
  210. /*isComplete: function () {
  211. return true;
  212. },*/
  213. updateInput: function (name, oldValue, newValue) {
  214. var domElem = dom.byId(this.id + name);
  215. if (domElem) {
  216. switch(domElem.tagName) {
  217. case "SPAN":
  218. case "DIV":
  219. domAttr.set(this.id + name, "innerHTML", newValue)
  220. break;
  221. case "INPUT":
  222. case "TEXTAREA":
  223. domAttr.set(this.id + name, "value", newValue)
  224. break;
  225. default:
  226. alert(domElem.tagName);
  227. }
  228. }
  229. if (name === "Wuid") {
  230. if (!newValue) {
  231. this.removeChild(this.workunitWidget);
  232. this.workunitWidget = null;
  233. this.removeChild(this.dfuWorkunitWidget);
  234. this.dfuWorkunitWidget = null;
  235. } else if (this.workunitWidget && newValue[0] === "D") {
  236. this.removeChild(this.workunitWidget);
  237. this.workunitWidget = null;
  238. } else if (this.dfuWorkunitWidget) {
  239. this.removeChild(this.dfuWorkunitWidget);
  240. this.dfuWorkunitWidget = null;
  241. }
  242. }
  243. if (name === "Name") {
  244. this.updateInput("RenameSourceName", oldValue, newValue);
  245. this.updateInput("RenameTargetName", oldValue, newValue);
  246. this.updateInput("DespraySourceName", oldValue, newValue);
  247. this.updateInput("CopySourceName", oldValue, newValue);
  248. this.updateInput("CopyTargetName", oldValue, newValue);
  249. }
  250. /*
  251. var widget = registry.byId(this.id + name);
  252. if (widget) {
  253. if (widget.has("innerHTML")) {
  254. widget.set("innerHTML", newValue);
  255. } else {
  256. widget.set("value", newValue);
  257. }
  258. } else {
  259. var element = dom.byId(this.id + name);
  260. if (element) {
  261. if (element.innerHTML) {
  262. element.innerHTML = newValue;
  263. } else {
  264. element.value = newValue;
  265. }
  266. }
  267. }
  268. if (name === "Filename") {
  269. registry.byId(this.id + "_Summary").set("title", newValue);
  270. }
  271. */
  272. },
  273. refreshFileDetails: function (fileDetails) {
  274. /*
  275. if (fileDetails.Wuid && fileDetails.Wuid[0] == "D" && this.workunitWidget) {
  276. this.removeChild(this.workunitWidget);
  277. this.workunitWidget = null;
  278. } else if (this.dfuWorkunitWidget) {
  279. this.removeChild(this.dfuWorkunitWidget);
  280. this.dfuWorkunitWidget = null;
  281. }
  282. registry.byId(this.id + "_Summary").set("title", fileDetails.Filename);
  283. //registry.byId(this.id + "Summary").set("iconClass", "iconRefresh");
  284. //domClass.remove(this.id + "Test");
  285. //domClass.add(this.id + "Test", "iconRefresh");
  286. dom.byId(this.id + "Owner").innerHTML = fileDetails.Owner;
  287. dom.byId(this.id + "Description").value = fileDetails.Description;
  288. dom.byId(this.id + "JobName").innerHTML = fileDetails.JobName;
  289. dom.byId(this.id + "Wuid").innerHTML = fileDetails.Wuid;
  290. dom.byId(this.id + "Modification").innerHTML = fileDetails.Modified + " (UTC/GMT)";
  291. dom.byId(this.id + "Dir").innerHTML = fileDetails.Dir;
  292. dom.byId(this.id + "RecordSize").innerHTML = fileDetails.RecordSize;
  293. dom.byId(this.id + "Count").innerHTML = fileDetails.RecordCount;
  294. this.contentWidget.set("title", "Content " + "(" + fileDetails.RecordCount + ")");
  295. dom.byId(this.id + "Filesize").innerHTML = fileDetails.Filesize;
  296. dom.byId(this.id + "PathMask").innerHTML = fileDetails.PathMask;
  297. */
  298. }
  299. });
  300. });