mushy 0.13.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/mushy +5 -0
- data/lib/mushy/builder/api.rb +1 -1
- data/lib/mushy/builder/bulma.rb +11717 -0
- data/lib/mushy/builder/index.rb +149 -60
- data/lib/mushy/fluxs/simple_python_program.rb +4 -0
- data/lib/site.rb +5 -0
- data/mushy.gemspec +1 -1
- metadata +2 -1
data/lib/mushy/builder/index.rb
CHANGED
@@ -4,38 +4,86 @@ module Mushy
|
|
4
4
|
def self.file
|
5
5
|
|
6
6
|
<<-ENDEND
|
7
|
+
<!DOCTYPE html>
|
7
8
|
<html>
|
8
9
|
<head>
|
9
|
-
<
|
10
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
11
|
+
<link rel="stylesheet" href="/bulma.css">
|
10
12
|
<script src="/vue.js"></script>
|
11
13
|
<script src="/axios.js"></script>
|
12
14
|
</head>
|
13
15
|
<body>
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
<
|
20
|
-
|
21
|
-
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
<div
|
35
|
-
|
36
|
-
|
16
|
+
<div id="app">
|
17
|
+
|
18
|
+
<div class="columns">
|
19
|
+
<div class="column is-one-fifth">
|
20
|
+
<aside class="menu">
|
21
|
+
<p class="menu-label">
|
22
|
+
General
|
23
|
+
</p>
|
24
|
+
<ul class="menu-list">
|
25
|
+
<li><a v-on:click.prevent.stop="setup.showFlux = false;">Fluxs</a></li>
|
26
|
+
<li>
|
27
|
+
<ul>
|
28
|
+
<li v-for="flux in flow.fluxs"><a v-on:click.prevent.stop="editFlux({ flux: flux, setup: setup, configs: configs })">{{flux.name}}</a></li>
|
29
|
+
</ul>
|
30
|
+
</li>
|
31
|
+
</ul>
|
32
|
+
</aside>
|
33
|
+
</div>
|
34
|
+
<div class="column" v-if="setup.showFlux == false">
|
35
|
+
|
36
|
+
<div class="container">
|
37
|
+
<table class="table is-fullwidth">
|
38
|
+
<tr>
|
39
|
+
<th>Name</th>
|
40
|
+
<th>Receives Events From</th>
|
41
|
+
<th>Actions</th>
|
42
|
+
</tr>
|
43
|
+
<tr v-for="flux in flow.fluxs">
|
44
|
+
<td>{{flux.name}}</td>
|
45
|
+
<td>{{flux_name_for(flux.parents, flow.fluxs)}}</td>
|
46
|
+
<td>
|
47
|
+
<button v-on:click.prevent.stop="editFlux({ flux: flux, setup: setup, configs: configs })" class="button is-primary">Edit</button>
|
48
|
+
<button v-on:click.prevent.stop="deleteFlux({ flux: flux, flow: flow })" class="button is-danger">Delete</button>
|
49
|
+
</td>
|
50
|
+
</tr>
|
51
|
+
</table>
|
52
|
+
<button v-on:click.prevent.stop="startNew({ setup: setup, configs: configs })" class="button is-link">Add a New Flux To This Flow</button>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
<div class="column" v-if="setup.showFlux">
|
56
|
+
<div class="columns">
|
57
|
+
<div class="column is-half">
|
58
|
+
<mip-heavy :data="setup"></mip-heavy>
|
59
|
+
<mip-mediumred v-for="(data, id) in configs" v-show="setup.flux.value === id" :data="data" medium="hey"></mip-mediumred>
|
60
|
+
</div>
|
61
|
+
<div class="column is-half">
|
62
|
+
<mip-mediumgreen v-for="(data, id) in configs" v-show="setup.flux.value === id" :data="data" medium="hey"></mip-mediumgreen>
|
63
|
+
|
64
|
+
<div v-bind:class="setup.testResultModal">
|
65
|
+
<div class="modal-background"></div>
|
66
|
+
<div class="modal-card">
|
67
|
+
<header class="modal-card-head">
|
68
|
+
<p class="modal-card-title">Test Results</p>
|
69
|
+
<div v-if="results.errorMessage"></div>
|
70
|
+
<div v-else>{{results.length}} result{{results.length == 1 ? "" : "s"}}</div>
|
71
|
+
<button class="delete" aria-label="close" v-on:click.prevent.stop="setup.testResultModal['is-active'] = false"></button>
|
72
|
+
</header>
|
73
|
+
<section class="modal-card-body">
|
74
|
+
<div v-if="results.errorMessage">{{results.errorMessage}}</div>
|
75
|
+
<mip-heavy v-for="data in results" :data="data"></mip-heavy>
|
76
|
+
</section>
|
77
|
+
<footer class="modal-card-foot">
|
78
|
+
<button class="button is-primary" v-on:click.prevent.stop="setup.testResultModal['is-active'] = false">Done</button>
|
79
|
+
</footer>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
</div>
|
37
84
|
</div>
|
38
85
|
</div>
|
86
|
+
</div>
|
39
87
|
</body>
|
40
88
|
</html>
|
41
89
|
|
@@ -56,7 +104,7 @@ module Mushy
|
|
56
104
|
var components = {
|
57
105
|
label: {
|
58
106
|
props: ['label', 'description', 'hide_description'],
|
59
|
-
template: '<label :for="id" v-if="label != \\'\\'">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></label>'
|
107
|
+
template: '<label :for="id" v-if="label != \\'\\'" class="label">{{label || ' + fancyName('id') + '}} <i v-show="description && !hide_description">({{description}})</i></label>'
|
60
108
|
},
|
61
109
|
h1: {
|
62
110
|
props: ['label', 'description', 'hide_description'],
|
@@ -76,7 +124,7 @@ module Mushy
|
|
76
124
|
},
|
77
125
|
text: {
|
78
126
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
79
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><input type="text" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value);" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></div>'
|
127
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><input type="text" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value);" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'" class="input"></div></div>'
|
80
128
|
},
|
81
129
|
hide: {
|
82
130
|
props: ['label', 'description'],
|
@@ -84,19 +132,19 @@ module Mushy
|
|
84
132
|
},
|
85
133
|
integer: {
|
86
134
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
87
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><input type="text" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value);" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></div>'
|
135
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><input type="text" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value);" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'" class="input"></div></div>'
|
88
136
|
},
|
89
137
|
email: {
|
90
138
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
91
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><input type="email" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></div>'
|
139
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><input type="email" :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'" class="input"></div></div>'
|
92
140
|
},
|
93
141
|
textarea: {
|
94
142
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
95
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><textarea :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></textarea></div>'
|
143
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><textarea :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'" class="textarea"></textarea></div></div>'
|
96
144
|
},
|
97
145
|
json: {
|
98
146
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'shrink'],
|
99
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><textarea :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'"></textarea></div>'
|
147
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><textarea :name="id" v-if="value || !shrink" :placeholder="placeholder" v-bind:value="value" v-on:input="$emit(\\'update:value\\', $event.target.value)" :disabled="disabled == \\'true\\'" :readonly="readonly == \\'true\\'" class="textarea"></textarea></div>'
|
100
148
|
},
|
101
149
|
jsonview: {
|
102
150
|
data: function() {
|
@@ -107,19 +155,19 @@ module Mushy
|
|
107
155
|
};
|
108
156
|
},
|
109
157
|
props: ['label', 'placeholder', 'disabled', 'readonly', 'value', 'description', 'view'],
|
110
|
-
template: '<div><mip-h4 :id="id" :label="label" :description="description"></mip-h4> <pre><code>{{show(view, value)}}</code></pre><button :disabled="view==\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)">View Pretty</button><button :disabled="view!=\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)">View Smaller</button><button v-on:click.prevent.stop="copy(view, value)">Copy</button></div>'
|
158
|
+
template: '<div><mip-h4 :id="id" :label="label" :description="description"></mip-h4> <pre><code>{{show(view, value)}}</code></pre><button :disabled="view==\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)" class="button ml-3 is-success">View Pretty</button><button :disabled="view!=\\'beautiful\\'" v-on:click.prevent.stop="view=toggle(view)" class="button ml-3 is-success">View Smaller</button><button v-on:click.prevent.stop="copy(view, value)" class="button ml-3 is-primary">Copy</button></div>'
|
111
159
|
},
|
112
160
|
radio: {
|
113
161
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
114
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div v-for="option in options"><input type="radio" :name="id" v-bind:value="option" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)" :checked="value == option"> <label for="option">{{option}}</label></div></div>'
|
162
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div v-for="option in options"><input type="radio" :name="id" v-bind:value="option" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)" :checked="value == option"> <label for="option">{{option}}</label></div></div>'
|
115
163
|
},
|
116
164
|
select: {
|
117
165
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
118
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><select :name="id" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)"><option v-for="option in options" v-bind:value="option" :selected="value == option">{{option}}</option></select></div>'
|
166
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><select :name="id" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)" class="select"><option v-for="option in options" v-bind:value="option" :selected="value == option">{{option}}</option></select></div></div>'
|
119
167
|
},
|
120
168
|
selectrecord: {
|
121
169
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
122
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><select :name="id" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)"><option v-for="option in options" v-bind:value="option.id" :selected="value == option.id">{{option.name}}</option></select></div>'
|
170
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><select :name="id" v-if="value || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)" class="select"><option v-for="option in options" v-bind:value="option.id" :selected="value == option.id">{{option.name}}</option></select></div></div>'
|
123
171
|
},
|
124
172
|
selectmanyrecords: {
|
125
173
|
data: function() {
|
@@ -145,15 +193,15 @@ module Mushy
|
|
145
193
|
};
|
146
194
|
},
|
147
195
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
148
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a> <span v-for="option in options" v-if="value && value.includes(option.id)">{{option.name}} <a href="#" v-on:click.prevent.stop="remove(option.id, value);$emit(\\'update:value\\', value)">[X]</a> </span> <a href="#" v-on:click.prevent.stop="doit(selectedValue, value);$emit(\\'update:value\\', value)">ADD</a> <select :name="id" v-if="value || !shrink" v-on:input="selectedValue=$event.target.value;"><option v-for="option in options" v-bind:value="option.id">{{option.name}}</option></select></div>'
|
196
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a> <span v-for="option in options" v-if="value && value.includes(option.id)">{{option.name}} <a href="#" v-on:click.prevent.stop="remove(option.id, value);$emit(\\'update:value\\', value)">[X]</a> </span> <a href="#" v-on:click.prevent.stop="doit(selectedValue, value);$emit(\\'update:value\\', value)">ADD</a> <div class="control"><select :name="id" v-if="value || !shrink" v-on:input="selectedValue=$event.target.value;" class="select"><option v-for="option in options" v-bind:value="option.id">{{option.name}}</option></select></div></div>'
|
149
197
|
},
|
150
198
|
boolean: {
|
151
199
|
props: ['label', 'value', 'options', 'description', 'shrink'],
|
152
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><select :name="id" v-if="(value != undefined && value != null && value != \\'\\') || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)"><option v-for="option in [true, false]" v-bind:value="option" :selected="value == option">{{option}}</option></select></div>'
|
200
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && !value">[^]</a><div class="control"><select :name="id" v-if="(value != undefined && value != null && value != \\'\\') || !shrink" v-on:input="$emit(\\'update:value\\', $event.target.value)" class="select"><option v-for="option in [true, false]" v-bind:value="option" :selected="value == option">{{option}}</option></select></div></div>'
|
153
201
|
},
|
154
202
|
table: {
|
155
203
|
props: ['value', 'description'],
|
156
|
-
template: '<table><tr><th v-for="(d, i) in value[0]">{{' + fancyName('i') + '}}</th></tr><tr v-for="v in value"><td v-for="(d, i) in v">{{d}}</td></tr></table>'
|
204
|
+
template: '<table class="table"><tr><th v-for="(d, i) in value[0]">{{' + fancyName('i') + '}}</th></tr><tr v-for="v in value"><td v-for="(d, i) in v">{{d}}</td></tr></table>'
|
157
205
|
},
|
158
206
|
editgrid: {
|
159
207
|
data: function() {
|
@@ -171,7 +219,7 @@ module Mushy
|
|
171
219
|
};
|
172
220
|
},
|
173
221
|
props: ['value', 'editors', 'label', 'description', 'shrink'],
|
174
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && value.length == 0">[^]</a><table v-if="value.length > 0 || !shrink"><tr><th v-for="(d, i) in value[0]">{{' + fancyName('i') + '}}</th></tr><tr v-for="(v, z) in value"><td v-for="(d, i) in v">{{d}}</td><td><a href="#" v-on:click.prevent.stop="removeRecord(v, value, z)">[x]</a></td></tr><tr><td v-for="editor in editors"><mip-thing :data="editor.field" :id="editor.id"></mip-thing></td><td><a href="#" v-on:click.prevent.stop="addRecord(editors, value)">[Add]</a></td></tr></table></div>'
|
222
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink && value.length == 0">[^]</a><table v-if="value.length > 0 || !shrink" class="table"><tr><th v-for="(d, i) in value[0]">{{' + fancyName('i') + '}}</th></tr><tr v-for="(v, z) in value"><td v-for="(d, i) in v">{{d}}</td><td><a href="#" v-on:click.prevent.stop="removeRecord(v, value, z)">[x]</a></td></tr><tr><td v-for="editor in editors"><mip-thing :data="editor.field" :id="editor.id"></mip-thing></td><td><a href="#" v-on:click.prevent.stop="addRecord(editors, value)">[Add]</a></td></tr></table></div>'
|
175
223
|
},
|
176
224
|
keyvalue: {
|
177
225
|
data: function() {
|
@@ -186,11 +234,21 @@ module Mushy
|
|
186
234
|
};
|
187
235
|
},
|
188
236
|
props: ['value', 'label', 'editors', 'description', 'shrink'],
|
189
|
-
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink">[^]</a><table v-if="JSON.stringify(value) != \\'{}\\' || !shrink"><tr v-for="(v, k) in value"><td>{{k}}</td><td>{{v}}</td><td><button v-on:click.prevent.stop="removeRecord(value, k)">Remove {{k}}</button></td></tr><tr><td v-for="editor in editors"><mip-thing :data="editor.field" :id="editor.id"></mip-thing></td><td><button v-on:click.prevent.stop="addRecord(editors, value)" v-show="editors[0].field.value">{{actionText(editors[0].field.value, value)}} {{editors[0].field.value}}</button></td></tr></table></div>'
|
237
|
+
template: '<div><mip-label :id="id" :label="label" :description="description" :hide_description="shrink && !value"></mip-label> <a href="#" v-on:click.prevent.stop="shrink=false" v-show="shrink">[^]</a><table v-if="JSON.stringify(value) != \\'{}\\' || !shrink" class="table"><tr v-for="(v, k) in value"><td>{{k}}</td><td>{{v}}</td><td><button v-on:click.prevent.stop="removeRecord(value, k)" class="button">Remove {{k}}</button></td></tr><tr><td v-for="editor in editors"><mip-thing :data="editor.field" :id="editor.id"></mip-thing></td><td><button v-on:click.prevent.stop="addRecord(editors, value)" v-show="editors[0].field.value" class="button">{{actionText(editors[0].field.value, value)}} {{editors[0].field.value}}</button></td></tr></table></div>'
|
190
238
|
},
|
191
239
|
button: {
|
192
|
-
|
193
|
-
|
240
|
+
data: function() {
|
241
|
+
return {
|
242
|
+
buttonStyles: function(x) {
|
243
|
+
var colors = {};
|
244
|
+
if (x.color && x.color != '')
|
245
|
+
colors[x.color] = true;
|
246
|
+
return colors;
|
247
|
+
}
|
248
|
+
};
|
249
|
+
},
|
250
|
+
props: ['click', 'description', 'name', 'color'],
|
251
|
+
template: '<button v-on:click.prevent.stop="click(pull(this), thisComponent())" class="button" v-bind:class="buttonStyles(this)">{{name || id}}</button>'
|
194
252
|
}
|
195
253
|
};
|
196
254
|
|
@@ -198,8 +256,9 @@ module Mushy
|
|
198
256
|
{
|
199
257
|
var props = JSON.parse(JSON.stringify(components[property].props));
|
200
258
|
props.push('id');
|
259
|
+
const theData = components[property].data ?? function() { return {}; };
|
201
260
|
Vue.component('mip-' + property, {
|
202
|
-
data:
|
261
|
+
data: function () {
|
203
262
|
var foundIt = this.$parent;
|
204
263
|
var counter = 0;
|
205
264
|
while (foundIt.$parent.constructor.name == "VueComponent" && counter < 10)
|
@@ -207,18 +266,22 @@ module Mushy
|
|
207
266
|
foundIt = foundIt.$parent;
|
208
267
|
counter += 1;
|
209
268
|
}
|
210
|
-
|
269
|
+
var dataToReturn = {
|
211
270
|
console: console,
|
212
271
|
pull: function(x) { return thingToData(foundIt.data); },
|
213
272
|
thisComponent: function() { return foundIt.data; },
|
214
|
-
}
|
273
|
+
};
|
274
|
+
var data = theData();
|
275
|
+
for(var p in data)
|
276
|
+
dataToReturn[p] = data[p];
|
277
|
+
return dataToReturn;
|
215
278
|
},
|
216
279
|
props: props,
|
217
280
|
template: components[property].template
|
218
281
|
});
|
219
282
|
}
|
220
283
|
|
221
|
-
var thingTemplate = '<div>';
|
284
|
+
var thingTemplate = '<div v-bind:class="{ \\\'ml-3\\\': data.foghat==\\\'free\\\', \\\'column\\\': data.foghat!=\\\'free\\\', \\\'is-full\\\': data.foghat!=\\\'half\\\' && data.foghat!=\\\'free\\\', \\\'is-half\\\': data.foghat==\\\'half\\\' }">';
|
222
285
|
for (var property in components)
|
223
286
|
thingTemplate = thingTemplate + '<mip-' + property + ' v-if="data.type == \\'' + property + '\\'" :id="id" ' + components[property].props.map(function(x){ return ':' + x + '.sync="data.' + x + '"';}).join(' ') + '></mip-' + property + '>'
|
224
287
|
thingTemplate = thingTemplate + '</div>';
|
@@ -229,7 +292,7 @@ module Mushy
|
|
229
292
|
console: console,
|
230
293
|
}
|
231
294
|
},
|
232
|
-
props: ['data', 'value', 'id', 'model'],
|
295
|
+
props: ['data', 'value', 'id', 'model', 'foghat'],
|
233
296
|
template: thingTemplate
|
234
297
|
});
|
235
298
|
|
@@ -240,7 +303,27 @@ module Mushy
|
|
240
303
|
}
|
241
304
|
},
|
242
305
|
props: ['data'],
|
243
|
-
template: '<div><mip-thing v-for="(d, id) in data" :data="d" :id="id"></mip-thing></div>',
|
306
|
+
template: '<div class="columns is-multiline"><mip-thing v-for="(d, id) in data" :data="d" :id="id"></mip-thing></div>',
|
307
|
+
});
|
308
|
+
|
309
|
+
Vue.component('mip-mediumgreen', {
|
310
|
+
data: function () {
|
311
|
+
return {
|
312
|
+
console: console,
|
313
|
+
}
|
314
|
+
},
|
315
|
+
props: ['data', 'medium'],
|
316
|
+
template: '<div class="columns is-multiline"><mip-thing v-for="(d, id) in data" :data="d" :id="id" v-if="d.medium == medium"></mip-thing></div>',
|
317
|
+
});
|
318
|
+
|
319
|
+
Vue.component('mip-mediumred', {
|
320
|
+
data: function () {
|
321
|
+
return {
|
322
|
+
console: console,
|
323
|
+
}
|
324
|
+
},
|
325
|
+
props: ['data', 'medium'],
|
326
|
+
template: '<div class="columns is-multiline"><mip-thing v-for="(d, id) in data" :data="d" :id="id" v-if="d.medium != medium"></mip-thing></div>',
|
244
327
|
});
|
245
328
|
|
246
329
|
var app = null;
|
@@ -304,6 +387,10 @@ module Mushy
|
|
304
387
|
|
305
388
|
var setup = {
|
306
389
|
showFlux: false,
|
390
|
+
testResultModal: {
|
391
|
+
"modal": true,
|
392
|
+
"is-active": false,
|
393
|
+
},
|
307
394
|
id: { type: 'hide', value: '' },
|
308
395
|
name: { type: 'text', value: '' },
|
309
396
|
flux: { type: 'select', value: fluxdata.fluxs[0].name, options: options},
|
@@ -312,20 +399,9 @@ module Mushy
|
|
312
399
|
|
313
400
|
for (var key in configs)
|
314
401
|
{
|
315
|
-
configs[key].
|
316
|
-
saveTheFlux({ app: app, config: config });
|
317
|
-
saveTheFlow({ setup: app.setup, flow: app.flow });
|
318
|
-
app.setup.showFlux = false;
|
319
|
-
}
|
320
|
-
};
|
321
|
-
configs[key].cancel = { type: 'button', name: 'Ignore Changes', click: function() {
|
322
|
-
app.setup.showFlux = false;
|
323
|
-
}
|
324
|
-
};
|
325
|
-
|
326
|
-
configs[key].test_event = { type: 'json', value: '{}', default: '{}' };
|
402
|
+
configs[key].test_event = { type: 'json', value: '{}', default: '{}', medium: 'hey' };
|
327
403
|
|
328
|
-
configs[key].run_test = { type: 'button', name: 'Test Run This Flux', click: function(c, hey) {
|
404
|
+
configs[key].run_test = { type: 'button', name: 'Test Run This Flux', medium: 'hey', color: 'is-link', click: function(c, hey) {
|
329
405
|
var previousName = hey.run_test.name;
|
330
406
|
Vue.set(hey.run_test, 'name', 'Loading');
|
331
407
|
app.results = [];
|
@@ -334,6 +410,7 @@ module Mushy
|
|
334
410
|
the_setup.event = c.test_event;
|
335
411
|
axios.post('/run', { config: c, setup: the_setup })
|
336
412
|
.then(function(r){
|
413
|
+
Vue.set(app.setup.testResultModal, 'is-active', true);
|
337
414
|
var index = 1;
|
338
415
|
for (var key in r.data.result)
|
339
416
|
{
|
@@ -349,6 +426,18 @@ module Mushy
|
|
349
426
|
Vue.set(hey.run_test, 'name', previousName);
|
350
427
|
});
|
351
428
|
} };
|
429
|
+
|
430
|
+
configs[key].save = { type: 'button', name: 'Save Changes', foghat: 'free', medium: 'hey', color: 'is-primary', click: function(config) {
|
431
|
+
saveTheFlux({ app: app, config: config });
|
432
|
+
saveTheFlow({ setup: app.setup, flow: app.flow });
|
433
|
+
app.setup.showFlux = false;
|
434
|
+
}
|
435
|
+
};
|
436
|
+
configs[key].cancel = { type: 'button', name: 'Ignore Changes', foghat: 'free', medium: 'hey', color: 'is-warning', click: function() {
|
437
|
+
app.setup.showFlux = false;
|
438
|
+
}
|
439
|
+
};
|
440
|
+
|
352
441
|
}
|
353
442
|
|
354
443
|
var loadThisFlux = function(args)
|
data/lib/site.rb
CHANGED
data/mushy.gemspec
CHANGED
@@ -4,7 +4,7 @@ require 'mushy/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'mushy'
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.15.0'
|
8
8
|
s.date = '2020-11-23'
|
9
9
|
s.summary = 'Process streams of work using common modules.'
|
10
10
|
s.description = 'This tool assists in the creation and processing of workflows.'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mushy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darren Cauthon
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- lib/mushy.rb
|
176
176
|
- lib/mushy/builder/api.rb
|
177
177
|
- lib/mushy/builder/axios.rb
|
178
|
+
- lib/mushy/builder/bulma.rb
|
178
179
|
- lib/mushy/builder/dark.rb
|
179
180
|
- lib/mushy/builder/index.rb
|
180
181
|
- lib/mushy/builder/vue.rb
|