@@ -33,7 +33,7 @@ export class XmlTemplateHelper {
3333 . item ( 0 )
3434 . getAttribute ( 'val' )
3535
36- const elementIds = this . elementCreationIds ( slideXml )
36+ const elementIds = this . elementCreationIds ( slideXml , archive )
3737
3838 creationIds . push ( {
3939 id : Number ( creationIdSlide ) ,
@@ -52,7 +52,7 @@ export class XmlTemplateHelper {
5252 )
5353 }
5454
55- elementCreationIds ( slideXml ) : ElementInfo [ ] {
55+ elementCreationIds ( slideXml , archive ) : ElementInfo [ ] {
5656 const slideElements = slideXml
5757 . getElementsByTagName ( 'p:cNvPr' )
5858
@@ -64,25 +64,50 @@ export class XmlTemplateHelper {
6464 . getElementsByTagName ( 'a16:creationId' )
6565 if ( creationIdElement . item ( 0 ) ) {
6666 elementIds . push (
67- this . getElementInfo ( slideElement )
67+ this . getElementInfo ( slideElement , archive )
6868 )
6969 }
7070 }
7171 }
7272 return elementIds
7373 }
7474
75- getElementInfo ( slideElement ) : ElementInfo {
75+ getElementInfo ( slideElement , archive ) : ElementInfo {
7676 const elementName = slideElement . getAttribute ( 'name' )
77- const type = slideElement . parentNode . parentNode . tagName
77+ let type = slideElement . parentNode . parentNode . tagName
7878 const creationId = slideElement
7979 . getElementsByTagName ( 'a16:creationId' )
8080 . item ( 0 )
8181 . getAttribute ( 'id' )
8282
83+ const mapUriType = {
84+ 'http://schemas.openxmlformats.org/drawingml/2006/table' : 'table' ,
85+ 'http://schemas.openxmlformats.org/drawingml/2006/chart' : 'chart'
86+ }
87+
88+ type = type . replace ( 'p:' , '' )
89+
90+ switch ( type ) {
91+ case 'graphicFrame' :
92+ const graphicData = slideElement . parentNode . parentNode . getElementsByTagName ( 'a:graphicData' ) [ 0 ]
93+ const uri = graphicData . getAttribute ( 'uri' )
94+ type = ( mapUriType [ uri ] ) ? mapUriType [ uri ] : type
95+ break
96+ }
97+
98+ switch ( type ) {
99+ case 'chart' :
100+ // const slideXml = await XmlHelper.getXmlFromArchive(
101+ // archive,
102+ // 'ppt/' + slideRel.file
103+ // )
104+ // XmlHelper.dump(slideElement.parentNode.parentNode)
105+ break
106+ }
107+
83108 return {
84109 name : elementName ,
85- type : type . replace ( 'p:' , '' ) ,
110+ type : type ,
86111 id : creationId
87112 }
88113 }
0 commit comments