@@ -22,6 +22,14 @@ var ui_builder = function() {
22
22
patternlab . patternPaths [ pattern . patternGroup ] [ pattern . patternBaseName ] = pattern . name ;
23
23
}
24
24
25
+ function writeFile ( filePath , data , callback ) {
26
+ if ( callback ) {
27
+ fs . outputFile ( filePath , data , callback ) ;
28
+ } else {
29
+ fs . outputFile ( filePath , data ) ;
30
+ }
31
+ }
32
+
25
33
/*
26
34
* isPatternExcluded
27
35
* returns whether or not the pattern should be excluded from direct rendering or navigation on the front end
@@ -123,27 +131,62 @@ var ui_builder = function() {
123
131
return styleguidePatterns ;
124
132
}
125
133
134
+ /*
135
+ * injectDocumentationBlock
136
+ * take the given pattern, fina and construct the view-all pattern block for the group
137
+ */
138
+ function injectDocumentationBlock ( pattern , patternlab , isSubtypePattern ) {
139
+
140
+ var docPattern = patternlab . subtypePatterns [ 'viewall-' + pattern . patternGroup + ( isSubtypePattern ? '-' + pattern . patternSubGroup : '' ) ] ;
141
+
142
+ if ( docPattern ) {
143
+ return docPattern ;
144
+ }
145
+
146
+
147
+ console . log ( pattern ) ;
148
+
149
+ var docPattern = new Pattern . createEmpty (
150
+ {
151
+ name : pattern . flatPatternPath ,
152
+ patternDesc : '' ,
153
+ patternPartial : 'viewall-' + pattern . patternGroup + ( isSubtypePattern ? '-' + pattern . patternSubGroup : '' ) ,
154
+ patternSectionSubtype : true ,
155
+ patternLink : pattern . flatPatternPath + path . sep + 'index.html' ,
156
+ isPattern : false ,
157
+ engine : null ,
158
+ flatPatternPath : pattern . patternGroup + ( isSubtypePattern ? '-' + pattern . patternSubGroup : '' )
159
+ }
160
+ ) ;
161
+
162
+ return docPattern ;
163
+ }
164
+
126
165
/*
127
166
* groupPatterns
128
167
* returns an object representing how the front end styleguide and navigation is structured
129
168
*/
130
169
function groupPatterns ( patternlab ) {
131
- var groupedPatterns = { } ;
170
+ var groupedPatterns = {
171
+ patternGroups : { }
172
+ } ;
132
173
133
174
_ . forEach ( patternlab . patterns , function ( pattern ) {
134
175
135
176
pattern . omitFromStyleguide = isPatternExcluded ( pattern , patternlab ) ;
136
177
137
- if ( pattern . omitFromStyleguide ) { return ; }
178
+ if ( pattern . omitFromStyleguide ) { return ; }
138
179
139
180
if ( ! groupedPatterns . patternGroups [ pattern . patternGroup ] ) {
140
181
groupedPatterns . patternGroups [ pattern . patternGroup ] = { } ;
182
+ //todo: test this
183
+ //groupedPatterns.patternGroups[pattern.patternGroup]['viewall-' + pattern.patternGroup] = injectDocumentationBlock(pattern, patternlab, false);
141
184
}
142
185
if ( ! groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] ) {
143
186
groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] = { } ;
187
+ groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] [ 'viewall-' + pattern . patternGroup + '-' + pattern . patternSubGroup ] = injectDocumentationBlock ( pattern , patternlab , true ) ;
144
188
}
145
189
groupedPatterns . patternGroups [ pattern . patternGroup ] [ pattern . patternSubGroup ] [ pattern . patternBaseName ] = pattern ;
146
-
147
190
} ) ;
148
191
return groupedPatterns ;
149
192
}
@@ -473,6 +516,36 @@ var ui_builder = function() {
473
516
}
474
517
}
475
518
519
+ function buildViewAllPages2 ( mainPageHeadHtml , patternlab , styleguidePatterns ) {
520
+
521
+ console . log ( mainPageHeadHtml ) ;
522
+
523
+ var paths = patternlab . config . paths ;
524
+
525
+ //loop through the grouped styleguide patterns, building at each level
526
+ _ . forEach ( styleguidePatterns . patternGroups , function ( patternTypeObj , patternType ) {
527
+
528
+ _ . forOwn ( patternTypeObj , function ( patternSubtypes , patternSubtype ) {
529
+
530
+ var patternPartial = patternType + '-' + patternSubtype ;
531
+ console . log ( patternPartial ) ;
532
+
533
+ //render the footer needed for the viewall template
534
+ var footerHTML = buildFooterHTML ( patternlab , patternPartial ) ;
535
+
536
+ //render the viewall template
537
+ var subtypePatterns = _ . values ( patternSubtypes ) ;
538
+ var viewAllHTML = buildViewAllHTML ( patternlab , subtypePatterns , patternPartial ) ;
539
+
540
+ //todo this feels brittle, why doesn't [0] work?
541
+ console . log ( subtypePatterns [ 0 ] ) ;
542
+ writeFile ( paths . public . patterns + subtypePatterns [ 1 ] . flatPatternPath + '/index.html' , mainPageHeadHtml + viewAllHTML + footerHTML ) ;
543
+
544
+ } ) ;
545
+
546
+ } ) ;
547
+ }
548
+
476
549
function sortPatterns ( patternsArray ) {
477
550
return patternsArray . sort ( function ( a , b ) {
478
551
@@ -553,6 +626,14 @@ var ui_builder = function() {
553
626
}
554
627
writeFile ( path . resolve ( paths . public . root , 'index.html' ) , patternlabSiteHtml ) ;
555
628
629
+ //write out the data to be read by the client
630
+ exportData ( patternlab ) ;
631
+ }
632
+
633
+ function exportData ( patternlab ) {
634
+ var annotation_exporter = new ae ( patternlab ) ;
635
+ var paths = patternlab . config . paths ;
636
+
556
637
//write out the data
557
638
var output = '' ;
558
639
@@ -587,43 +668,69 @@ var ui_builder = function() {
587
668
writeFile ( path . resolve ( paths . public . annotations , 'annotations.js' ) , annotations ) ;
588
669
}
589
670
590
- function writeFile ( filePath , data , callback ) {
591
- if ( callback ) {
592
- fs . outputFile ( filePath , data , callback ) ;
593
- } else {
594
- fs . outputFile ( filePath , data ) ;
595
- }
596
- }
671
+
597
672
598
673
function buildFrontend2 ( patternlab ) {
599
674
675
+ var paths = patternlab . config . paths ;
676
+
600
677
//determine which patterns should be included in the front-end rendering
601
678
var styleguidePatterns = groupPatterns ( patternlab ) ;
602
679
603
-
604
680
//sort all the patterns explicitly
605
-
681
+ //TODO
606
682
607
683
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
608
-
684
+ var headerPartial = pattern_assembler . renderPattern ( patternlab . header , {
685
+ cacheBuster : patternlab . cacheBuster
686
+ } ) ;
687
+ var headerHTML = pattern_assembler . renderPattern ( patternlab . userHead , {
688
+ patternLabHead : headerPartial ,
689
+ cacheBuster : patternlab . cacheBuster
690
+ } ) ;
609
691
610
692
//set the pattern-specific footer by compiling the general-footer with data, and then adding it to the meta footer
611
-
693
+ var footerPartial = pattern_assembler . renderPattern ( patternlab . footer , {
694
+ patternData : '{}' ,
695
+ cacheBuster : patternlab . cacheBuster
696
+ } ) ;
697
+ var footerHTML = pattern_assembler . renderPattern ( patternlab . userFoot , {
698
+ patternLabFoot : footerPartial
699
+ } ) ;
612
700
613
701
//build the viewall pages
614
-
702
+ //todo so close
703
+ buildViewAllPages2 ( headerHTML , patternlab , styleguidePatterns ) ;
615
704
616
705
//build the main styleguide page
706
+ //todo broken
707
+ var styleguideHtml = pattern_assembler . renderPattern ( patternlab . viewAll ,
708
+ {
709
+ partials : _ . values ( styleguidePatterns ) ,
710
+ cacheBuster : patternlab . cacheBuster
711
+ } , {
712
+ patternSection : patternlab . patternSection ,
713
+ patternSectionSubType : patternlab . patternSectionSubType
714
+ } ) ;
617
715
716
+ //writeFile(path.resolve(paths.public.styleguide, 'html/styleguide.html'), headerHTML + styleguideHtml + footerHTML);
618
717
619
718
//build the patternlab navigation
620
-
719
+ //todo
621
720
622
721
//move the index file from its asset location into public root
722
+ var patternlabSiteHtml ;
723
+ try {
724
+ patternlabSiteHtml = fs . readFileSync ( path . resolve ( paths . source . styleguide , 'index.html' ) , 'utf8' ) ;
725
+ } catch ( error ) {
726
+ console . log ( error ) ;
727
+ console . log ( "\nERROR: Could not load one or more styleguidekit assets from" , paths . source . styleguide , '\n' ) ;
728
+ process . exit ( 1 ) ;
729
+ }
730
+ //writeFile(path.resolve(paths.public.root, 'index.html'), patternlabSiteHtml);
623
731
624
-
625
- //write out patternlab.data object
626
-
732
+ //write out patternlab.data object to be read by the client
733
+ //exportData(patternlab);
627
734
}
628
735
629
736
return {
@@ -635,6 +742,9 @@ var ui_builder = function() {
635
742
} ,
636
743
isPatternExcluded : function ( pattern , patternlab ) {
637
744
return isPatternExcluded ( pattern , patternlab ) ;
745
+ } ,
746
+ groupPatterns : function ( patternlab ) {
747
+ return groupPatterns ( patternlab ) ;
638
748
}
639
749
} ;
640
750
0 commit comments