1+ define ( function ( ) {
2+
3+ var portfolio = {
4+ github : {
5+ link : 'https://github.com/n7best' ,
6+ desc : 'My github profile'
7+ } ,
8+ codepen : {
9+ link : 'https://codepen.io/n7best/' ,
10+ desc : 'My codepen profile'
11+ } ,
12+ 'react-weui' : {
13+ link : 'https://github.com/weui/react-weui' ,
14+ desc : 'WeUI Builds on React'
15+ } ,
16+ designs : {
17+ desc : 'My graphic designs' ,
18+ gallery : [
19+ {
20+ thumb : 'https://source.unsplash.com/CpHNKNRwXps/100x100' ,
21+ src : 'https://source.unsplash.com/CpHNKNRwXps/1600x900' ,
22+ title : 'Space' ,
23+ desc : 'Test image'
24+ } ,
25+ {
26+ thumb : 'https://source.unsplash.com/VBNb52J8Trk/100x100' ,
27+ src : 'https://source.unsplash.com/VBNb52J8Trk/1600x900' ,
28+ title : 'Space' ,
29+ desc : 'Test image'
30+ } ,
31+ {
32+ thumb : 'https://source.unsplash.com/n463SoeSiVY/100x100' ,
33+ src : 'https://source.unsplash.com/n463SoeSiVY/1600x900' ,
34+ title : 'Space' ,
35+ desc : 'Test image'
36+ }
37+ ]
38+ } ,
39+ dailyui : {
40+ desc : 'My DailyUI designs' ,
41+ gallery : [
42+ {
43+ thumb : 'images/dailyui/1-signup/preview.jpg' ,
44+ src : 'images/dailyui/1-signup/preview.jpg' ,
45+ title : '#1 SignUp' ,
46+ desc : '#1 SignUp'
47+ } ,
48+ {
49+ thumb : 'images/dailyui/2-creditcard/preview.jpg' ,
50+ src : 'images/dailyui/2-creditcard/preview.jpg' ,
51+ title : '#2 Credit Card Checkout' ,
52+ desc : '#2 Credit Card Checkout'
53+ }
54+ ]
55+ }
56+ }
57+
58+ return function ( args ) {
59+ if ( args . length > 0 ) {
60+ if ( typeof portfolio [ args [ 0 ] ] == 'undefined' ) return 'Portfolio no found'
61+
62+ var port = portfolio [ args [ 0 ] ]
63+ if ( port . link ) {
64+ return '<p class="portfolio-link">Link: <a href="' + port . link + '" target="_blank">' + port . link + '</a></p>'
65+ }
66+
67+ if ( port . gallery ) {
68+ var $ul = document . createElement ( "ul" ) ;
69+ $ul . classList . add ( 'gallery' )
70+
71+ port . gallery . forEach ( function ( image ) {
72+ var $li = document . createElement ( "li" ) ;
73+
74+ var $image = document . createElement ( "div" ) ;
75+ $image . classList . add ( 'gallery-image' ) ;
76+
77+ var $img = document . createElement ( "img" ) ;
78+ $img . classList . add ( 'image-thumb' ) ;
79+
80+ var $loadertext = document . createElement ( "p" ) ;
81+ $loadertext . classList . add ( 'image-loader' ) ;
82+ $loadertext . innerHTML = 'loading...'
83+
84+ var $p = document . createElement ( "p" ) ;
85+ $p . classList . add ( 'image-title' )
86+
87+
88+ $p . innerHTML = image . title
89+ $image . append ( $img )
90+ $image . append ( $loadertext )
91+ $image . append ( $p )
92+ $li . append ( $image )
93+
94+ var downloadingImage = new Image ( ) ;
95+ downloadingImage . onload = function ( ) {
96+ $img . src = this . src ;
97+ $loadertext . style . display = 'none' ;
98+ } ;
99+ downloadingImage . src = image . thumb ;
100+
101+
102+ $li . addEventListener ( 'click' , function ( e ) {
103+
104+ if ( $li . classList . contains ( 'active' ) ) {
105+ $img . src = downloadingImage . src ;
106+ $li . classList . remove ( 'active' )
107+ } else {
108+ $loadertext . style . display = 'block' ;
109+ $img . style . display = 'none'
110+ var fullimg = new Image ( ) ;
111+ fullimg . onload = function ( ) {
112+ $img . src = this . src ;
113+ $loadertext . style . display = 'none' ;
114+ $img . style . display = 'block'
115+ } ;
116+ fullimg . src = image . src ;
117+
118+ $li . classList . add ( 'active' )
119+ }
120+ } )
121+
122+ $ul . appendChild ( $li ) ;
123+ } )
124+
125+ return $ul
126+ }
127+
128+ return 'Not yet finish, constructing...'
129+ } else {
130+
131+ var $ul = document . createElement ( "ul" ) ;
132+ $ul . classList . add ( 'help' )
133+ Object . keys ( portfolio ) . forEach ( function ( key ) {
134+ var $cmd = document . createElement ( "cmd" )
135+ $cmd . dataset . cmd = 'portfolio ' + key
136+
137+ var $li = document . createElement ( "li" ) ;
138+ $li . innerHTML = '<p class="help-key">' + key + '</p><p class="help-desc">' + portfolio [ key ] . desc + '</p>'
139+
140+ $cmd . appendChild ( $li ) ;
141+ $ul . appendChild ( $cmd ) ;
142+ } )
143+
144+ return $ul . outerHTML
145+ }
146+ } ;
147+ } ) ;
0 commit comments