2
2
3
3
< head >
4
4
< title > Test</ title >
5
- < script src ="../dist /js/index.js "> </ script >
5
+ < script src ="/js/index.js "> </ script >
6
6
</ head >
7
7
8
8
< body >
9
- < h1 > Tests</ h1 >
9
+ <!-- NAV -->
10
+ < nav class ="navbar sticky-top navbar navbar-dark navbar-expand-md bg-primary " id ="nav ">
11
+ < div class ="container-fluid ">
12
+ < a class ="navbar-brand " href ="/ "> < strong > The VFX Cooperative</ strong > </ a >
13
+ < button class ="navbar-toggler " type ="button " data-bs-toggle ="collapse " data-bs-target ="#navbar-items "
14
+ aria-expanded ="false ">
15
+ < span class ="navbar-toggler-icon "> </ span >
16
+ </ button >
17
+ < div class ="collapse navbar-collapse " id ="navbar-items ">
18
+ < ul class ="navbar-nav me-auto mb-2 mb-lg-0 ">
19
+ < li class ="nav-item " id ="nav_home ">
20
+ < a class ="nav-link " href ="/ "> Home</ a >
21
+ </ li >
22
+ < li class ="nav-item " id ="nav_projects ">
23
+ < a class ="nav-link " href ="/projects/ "> Projects</ a >
24
+ </ li >
25
+ < li class ="nav-item " id ="nav_dataio ">
26
+ < a class ="nav-link " href ="/dataio/ "> DataIO</ a >
27
+ </ li >
28
+ < li class ="nav-item " id ="nav_docs ">
29
+ < a class ="nav-link " href ="/docs/ "> Docs</ a >
30
+ </ li >
31
+ < li class ="nav-item " id ="nav_status ">
32
+ < a class ="nav-link " href ="/status/ "> Status</ a >
33
+ </ li >
34
+ </ ul >
35
+ </ div >
36
+ </ div >
37
+ </ nav >
38
+
39
+ <!-- PLUS BUTTON -->
40
+ < div class ="fixed-bottom d-flex flex-row-reverse ">
41
+ < button id ="plus " class ="btn btn-circle bg-danger text-white onclick-item " title ="Add "> +</ button >
42
+ </ div >
43
+
44
+ <!-- TOAST -->
45
+ < div class ="toast-container position-absolute bottom-0 end-0 p-3 d-none " style ="z-index: 9999; ">
46
+ < div class ="toast " id ="toast " role ="alert ">
47
+ < div class ="toast-header ">
48
+ < strong class ="me-auto _title "> </ strong >
49
+ < small class ="text-muted _code "> </ small >
50
+ < button type ="button " class ="btn-close " data-bs-dismiss ="toast " aria-label ="Close "> </ button >
51
+ </ div >
52
+ < div class ="toast-body _reason "> </ div >
53
+ </ div >
54
+ </ div >
55
+
56
+
57
+ <!-- FORM -->
58
+ < div class ="modal fade " id ="form " tabindex ="-1 " role ="dialog " aria-hidden ="true ">
59
+ < div class ="modal-dialog " role ="document ">
60
+ < div class ="modal-content ">
61
+ < form class ="needs-validation " novalidate >
62
+ < div class ="modal-header ">
63
+ < h5 class ="modal-title "> Create New Project</ h5 >
64
+ < button type ="button " class ="btn-close " data-bs-dismiss ="modal " aria-label ="Close "> </ button >
65
+ </ div >
66
+ < div class ="modal-body ">
67
+ < div class ="row mb-3 ">
68
+ < label for ="new-name " class ="col-sm-4 col-form-label "> Title</ label >
69
+ < div class ="col-sm-8 ">
70
+ < input class ="form-control " name ="name " id ="new-name " required >
71
+ < div class ="form-text "> The name of the project</ div >
72
+ </ div >
73
+ </ div >
74
+ < div class ="row mb-3 ">
75
+ < label class ="col-sm-4 col-form-label "> Radio Buttons</ label >
76
+ < div class ="col-sm-8 ">
77
+ < div class ="form-check form-check-inline ">
78
+ < input class ="form-check-input " type ="radio " name ="radio "
79
+ id ="inlineRadio1 " value ="option1 ">
80
+ < label class ="form-check-label " for ="inlineRadio1 "> 1</ label >
81
+ </ div >
82
+ < div class ="form-check form-check-inline ">
83
+ < input class ="form-check-input " type ="radio " name ="radio "
84
+ id ="inlineRadio2 " value ="option2 ">
85
+ < label class ="form-check-label " for ="inlineRadio2 "> 2</ label >
86
+ </ div >
87
+ </ div >
88
+ </ div >
89
+ < div class ="row mb-3 ">
90
+ < label for ="range " class ="col-sm-4 col-form-label "> Range</ label >
91
+ < div class ="col-sm-6 ">
92
+ < input type ="range " class ="form-range " id ="range " name ="range ">
93
+ </ div >
94
+ < div class ="col-sm-2 _range ">
95
+ [V]
96
+ </ div >
97
+ </ div >
98
+ < div class ="row mb-3 ">
99
+ < label for ="range " class ="col-sm-4 col-form-label "> Select</ label >
100
+ < div class ="col-sm-8 ">
101
+ < select class ="form-select " name ="select " aria-label ="Default select example " required >
102
+ < option value ="" selected > Open this select menu</ option >
103
+ < option value ="1 "> One</ option >
104
+ < option value ="2 "> Two</ option >
105
+ < option value ="3 "> Three</ option >
106
+ </ select >
107
+ </ div >
108
+ </ div >
109
+ </ div >
110
+ < div class ="modal-footer ">
111
+ < button type ="submit " id ="create " class ="btn btn-primary "> Create</ button >
112
+ </ div >
113
+ </ form >
114
+ </ div >
115
+ </ div >
116
+ </ div >
117
+
118
+ <!-- APPLICATION -->
10
119
< script >
11
- class StrModel extends mvc . Model {
12
- constructor ( data ) {
13
- super ( { value : data } ) ;
14
- }
15
- }
16
-
17
- mvc . Model . define ( StrModel , {
18
- "value" : "string" ,
19
- } ) ;
120
+ window . addEventListener ( "DOMContentLoaded" , ( event ) => {
121
+ var app = mvc . Controller . New ( ) ;
20
122
21
- class KeyModel extends mvc . Model {
22
- constructor ( data ) {
23
- super ( data ) ;
24
- }
25
- getClassName ( ) {
26
- return this . $className ;
27
- }
28
- get override ( ) {
29
- return "done!" ;
30
- }
31
- }
32
-
33
- mvc . Model . define ( KeyModel , {
34
- "str" : "_id string" ,
35
- "map" : "{}number" ,
36
- "arr" : "[]StrModel" ,
37
- "override" : "string" ,
38
- } ) ;
123
+ // Models
124
+ class Project extends mvc . Model { } ;
125
+
126
+ // Add objects to the application
127
+ app . Add ( 'nav' , new mvc . Nav ( document . querySelector ( "#nav" ) ) ) ;
128
+ app . Add ( 'toast' , new mvc . Toast ( document . querySelector ( "#toast" ) ) ) ;
129
+ app . Add ( 'plus' , new mvc . Button ( document . querySelector ( "#plus" ) ) ) ;
130
+ app . Add ( 'form' , new mvc . Form ( document . querySelector ( "#form" ) ) ) ;
131
+ app . Add ( 'projects' , new mvc . Provider ( Project , 'https://rpi4b.mutablelogic.com' ) ) ;
132
+
133
+ // Show toast when button pressed
134
+ app . plus . addEventListener ( 'mvc.button.click' , ( sender , target ) => {
135
+ app . form . replace ( "._range" , '' ) ;
136
+ app . form . show ( {
137
+ name : 'default' ,
138
+ radio : 'option2' ,
139
+ range : '0' ,
140
+ select : '3' ,
141
+ } ) ;
142
+ } ) ;
143
+
144
+ // Hide form when submitted
145
+ app . form . addEventListener ( 'mvc.form.submit' , ( sender , target ) => {
146
+ // Hide form
147
+ app . form . hide ( ) ;
148
+
149
+ // Show toast of values
150
+ app . toast . show ( JSON . stringify ( app . form . values ) , target . id ) ;
151
+ } ) ;
152
+
153
+ // Form range value
154
+ app . form . addEventListener ( 'mvc.form.change' , ( sender , target ) => {
155
+ if ( target . name == "range" ) {
156
+ app . form . replace ( "._range" , target . value ) ;
157
+ }
158
+ } ) ;
159
+
160
+ // Request projects
161
+ app . projects . request ( '/api/project/' ) ;
39
162
40
- var obj = new KeyModel ( { _id : "[this is the key]" , map : { a : 1 , b : 2 } , arr : [ "a" , "b" ] , override : "not done" } ) ;
41
- obj . $type . forEach ( ( v , k ) => {
42
- console . log ( `${ k } => ` , v ) ;
43
- } ) ;
44
- console . log ( "className=" , obj . $className ) ;
45
- console . log ( "getClassName=" , obj . getClassName ( ) ) ;
46
- console . log ( "str=" , obj . str ) ;
47
- console . log ( "map=" , obj . map ) ;
48
- console . log ( "arr=" , obj . arr ) ;
49
- console . log ( "override=" , obj . override ) ;
50
- console . log ( "toString=" , "" + obj ) ;
51
-
52
- var provider = new mvc . Provider ( ) ;
53
- provider . addEventListener ( 'mvc.provider.completed' , ( sender ) => {
54
- console . log ( "Completed" , sender ) ;
55
- } ) ;
56
- provider . addEventListener ( 'mvc.provider.error' , ( sender , error ) => {
57
- console . log ( "Error" , error ) ;
58
- } ) ;
59
- provider . fetch ( 'https://rpi4b.mutablelogic.com/' , {
60
- mode : 'no-cors' ,
61
163
} ) ;
62
164
</ script >
63
165
</ body >
64
166
65
- </ html >
167
+ </ html >
0 commit comments