PdDataStore.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*******************************************************************************
  2. * IBM Confidential
  3. *
  4. * OCO Source Materials
  5. *
  6. * A and PM: PD
  7. *
  8. * (c) Copyright IBM Corp. 2014
  9. *
  10. * The source code for this program is not published or otherwise divested of
  11. * its trade secrets, irrespective of what has been deposited with the U.S.
  12. * Copyright Office.
  13. ******************************************************************************/
  14. define([
  15. "dojo/_base/declare",
  16. "dojo/store/Memory",
  17. "dojox/xml/parser",
  18. "dojo/_base/array",
  19. "dojo/query"
  20. ],function(declare, store, xmlParser, array, query){
  21. var PREVIEW_DATA_SIZE = 50;
  22. var PdDataStore = declare("pd/data/PdDataStore", [store], {
  23. constructor: function(args) {
  24. if (!args.xmlInput){
  25. throw new Error(PDMSG.ERR.IDS_ERR_MISSING_XMLDOC_PARAM);
  26. }
  27. if (typeof(args.xmlInput) == "string"){
  28. this.xmlDoc = xmlParser.parse(dojo.trim(args.xmlInput));
  29. } else {
  30. this.xmlDoc = args.xmlInput;
  31. }
  32. this.xmlDoc.setProperty('SelectionLanguage', 'XPath');
  33. this.xmlDoc.setProperty('SelectionNamespaces', 'xmlns:d="http://developer.cognos.com/schemas/xmldata/1/"');
  34. args.data = this.generateDataFromXml();
  35. this.inherited(arguments);
  36. },
  37. generateDataFromXml: function() {
  38. var data = [];
  39. var self = this;
  40. var numberOfRow = 1;
  41. var xmlDoc = this.xmlDoc.selectSingleNode("/pdSpec/personalPreview/d:data");
  42. if (xmlDoc != null) {
  43. array.some(
  44. xmlDoc.childNodes, function(rowNode, index, arr){
  45. if (numberOfRow > PREVIEW_DATA_SIZE) {
  46. return false;
  47. }
  48. numberOfRow++;
  49. var dataItem = {};
  50. var n = 0;
  51. array.forEach(
  52. rowNode.childNodes, function (cellNode) {
  53. dataItem["col" + n] = cellNode.text;
  54. n++;
  55. }
  56. );
  57. data.push(dataItem);
  58. }
  59. );
  60. }
  61. return data;
  62. },
  63. pdGetOriginalStructure: function() {
  64. var structure = [];
  65. var xmlDoc = this.xmlDoc.selectSingleNode("/pdSpec/personalData");
  66. var n = 0;
  67. array.forEach(
  68. query("item", xmlDoc), function(node, idx, arr){
  69. var structureItem = {};
  70. structureItem.name = node.getAttribute("name");
  71. structureItem.noresize = true;
  72. structureItem.simpletype = node.getAttribute("simpletype");
  73. structureItem.regularAggregate = node.getAttribute("regularAggregate");
  74. structureItem.field = "col" + n;
  75. structureItem.classes = "pd_idx" + n;
  76. structureItem.hidden = node.getAttribute("hidden") == "true";
  77. structure.push(structureItem);
  78. n++;
  79. }
  80. );
  81. return [structure];
  82. }
  83. });
  84. return PdDataStore;
  85. });