Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thomas Leymonerie
slapos.core
Commits
6ac251db
Commit
6ac251db
authored
Jun 13, 2012
by
Thomas Lechauve
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Instance page created
parent
6ade1e25
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
233 additions
and
109 deletions
+233
-109
vifib/index.html
vifib/index.html
+64
-6
vifib/static/js/core.js
vifib/static/js/core.js
+163
-101
vifib/static/js/fake.js
vifib/static/js/fake.js
+0
-1
vifib/static/js/jquery.urljs.js
vifib/static/js/jquery.urljs.js
+6
-1
No files found.
vifib/index.html
View file @
6ac251db
...
...
@@ -15,13 +15,13 @@
}
.content-primary
{
float
:
right
;
width
:
6
5
%
;
width
:
6
7
%
;
}
[
data-role
=
footer
]
{
width
:
30%
;
}
}
.
ui-content
.ui-listview
{
.
content-primary
.ui-listview
{
margin-top
:
0px
;
margin-bottom
:
0px
;
}
...
...
@@ -36,7 +36,7 @@
<
a
href
=
"
{{ link }}
"
data
-
direction
=
"
reverse
"
data
-
role
=
"
button
"
data
-
icon
=
"
{{ icon }}
"
data
-
iconpos
=
"
notext
"
title
=
"
{{ title }}
"
><
/a
>
{{
/
leftbutton
}}
{{
#
rightbutton
}}
<
a
href
=
"
{{ link }}
"
data
-
inline
=
"
true
"
data
-
mini
=
"
true
"
data
-
role
=
"
button
"
title
=
"
{{ title }}
"
><
/a
>
<
a
href
=
"
{{ link }}
"
data
-
role
=
"
button
"
data
-
icon
=
"
{{ icon }}
"
data
-
iconpos
=
"
notext
"
title
=
"
{{ title }}
"
><
/a
>
{{
/
rightbutton
}}
{{
#
headmenu
}}
<
div
data
-
role
=
"
navbar
"
>
...
...
@@ -94,7 +94,15 @@
<
/div
>
<
/div
>
</script>
<script
id=
"actions"
type=
"text/html"
>
<!--<
div
data
-
role
=
"
controlgroup
"
data
-
type
=
"
horizontal
"
>-->
{{
#
actions
}}
<
a
href
=
"
{{ link }}
"
data
-
role
=
"
button
"
data
-
inline
=
"
true
"
data
-
mini
=
"
true
"
>
{{
name
}}
<
/a
>
{{
/
actions
}}
<!--<
/div>--
>
</script>
<script
id=
"service-inlist"
type=
"text/html"
>
<
li
><
a
href
=
"
{{ link }}
"
><
h4
>
{{
name
}}
<
/h4></
a
><
/li
>
</script>
...
...
@@ -167,6 +175,53 @@
<
h3
>
{{
name
}}
<
/h3
>
<
/a
>
</script>
<!--
-INSTANCE // SERVICE
-->
<script
id=
"instance"
type=
"text/html"
>
{{
>
headbar
}}
{{
>
content
}}
</script>
<script
id=
"instancePanel"
type=
"text/html"
>
{{
>
actions
}}
<
ul
data
-
role
=
"
listview
"
>
{{
#
information
}}
<
li
>
{{
name
}}
<
h4
>
{{
value
}}
<
/h4
>
<
/li
>
{{
/
information
}}
<
/ul
>
</script>
<script
id=
"instance.list"
type=
"text/html"
>
<
form
id
=
"
search-form
"
>
<
div
data
-
role
=
"
fieldcontain
"
class
=
"
ui-hide-label
"
>
<
label
for
=
"
search
"
><
/label
>
<
input
type
=
"
search
"
name
=
"
search
"
placeholder
=
"
Search
"
/>
<
/div
>
<
/form
>
<
ul
data
-
role
=
"
listview
"
id
=
"
instance-list
"
><
/ul
>
</script>
<script
id=
"instance.listitem"
type=
"text/html"
>
<
a
href
=
"
{{ instance_url }}
"
>
{{
#
thumb_url
}}
<
img
src
=
"
{{ thumb_url }}
"
/>
{{
/
thumb_url
}}
<
h3
>
{{
instance_id
}}
<
/h3
>
<
/a
>
</script>
<script
id=
"instance.bangPanel"
type=
"text/html"
>
<
form
id
=
"
form-bang
"
>
<
label
for
=
"
reasons
"
>
Why
bang
this
instance
?
<
/label
>
<
textarea
name
=
"
reasons
"
><
/textarea
>
<
div
class
=
"
ui-body ui-body-b
"
>
<
fieldset
class
=
"
ui-grid-a
"
>
<
button
type
=
"
submit
"
data
-
theme
=
"
a
"
>
Connexion
<
/button
>
<
button
type
=
"
submit
"
data
-
theme
=
"
a
"
>
Cancel
<
/button
>
<
/fieldset
>
<
/div
>
<
/form
>
</script>
<!--
-LOGIN
-->
...
...
@@ -207,7 +262,7 @@
<
a
data
-
iconpos
=
"
top
"
data
-
icon
=
"
star
"
data
-
role
=
"
button
"
href
=
"
#/network
"
>
Networks
<
/a
>
<
/div
>
<
div
class
=
"
ui-block-a
"
>
<
a
data
-
iconpos
=
"
top
"
data
-
icon
=
"
star
"
data
-
role
=
"
button
"
href
=
"
#/
servi
ce
"
>
Services
<
/a
>
<
a
data
-
iconpos
=
"
top
"
data
-
icon
=
"
star
"
data
-
role
=
"
button
"
href
=
"
#/
instan
ce
"
>
Services
<
/a
>
<
/div
>
<
div
class
=
"
ui-block-b
"
>
<
a
data
-
iconpos
=
"
top
"
data
-
icon
=
"
star
"
data
-
role
=
"
button
"
href
=
"
#/computer
"
>
Computers
<
/a
>
...
...
@@ -221,6 +276,10 @@
<
/div
>
</script>
<script
id=
"root"
type=
"text/html"
>
<
div
data
-
role
=
"
page
"
data
-
theme
=
"
c
"
><
/div
>
</script>
<script
src=
"http://code.jquery.com/jquery-1.7.1.min.js"
></script>
<script
type=
"text/javascript"
src=
"static/js/ICanHaz.min.js"
></script>
<script
type=
"text/javascript"
src=
"static/js/modernizr-2.5.3.js"
></script>
...
...
@@ -232,6 +291,5 @@
<script
src=
"http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"
></script>
</head>
<body>
<div
data-role=
"page"
data-theme=
"c"
></div>
</body>
</html>
vifib/static/js/core.js
View file @
6ac251db
...
...
@@ -59,7 +59,7 @@
methods
=
{
init
:
function
()
{
var
routes
=
[[[
'
/
'
,
methods
[
'
showRoot
'
]
]]];
var
routes
=
[[[
'
/
'
,
methods
.
showRoot
]]];
return
this
.
each
(
function
()
{
// JQM configuration
// Initialize slapos in this context
...
...
@@ -81,13 +81,17 @@
},
genInstanceUrl
:
function
(
uri
)
{
return
$
.
router
.
genHash
([
'
instance
'
,
encodeURIComponent
(
uri
)]);
return
$
.
router
.
genHash
([
'
instance
'
,
'
id
'
,
encodeURIComponent
(
uri
)]);
},
genSoftwareUrl
:
function
(
uri
)
{
return
$
.
router
.
genHash
([
'
library
'
,
'
software
'
,
encodeURIComponent
(
uri
)]);
},
genBangUrl
:
function
(
uri
)
{
return
methods
.
genInstanceUrl
(
uri
)
+
"
/bang
"
;
},
extractInstanceURIFromHref
:
function
()
{
return
decodeURIComponent
(
$
(
this
).
attr
(
'
href
'
).
split
(
'
/
'
).
pop
());
},
...
...
@@ -98,10 +102,6 @@
return
(
i
!==
-
1
&&
loc
.
length
>
i
)
?
decodeURIComponent
(
loc
[
i
+
1
])
:
""
;
},
genBangUrl
:
function
(
uri
)
{
return
$
.
router
.
genHash
([
"
instance
"
,
encodeURIComponent
(
uri
),
"
bang
"
]);
},
authenticate
:
function
(
data
)
{
var
d
;
for
(
d
in
data
)
{
...
...
@@ -132,25 +132,27 @@
showRoot
:
function
(
params
)
{
var
route
=
$
.
router
.
routes
.
current
,
nextLevel
=
route
.
level
+
1
;
$
(
this
).
vifib
(
'
render
'
,
'
root
'
);
$
.
router
.
routes
.
add
(
'
/homepage
'
,
nextLevel
,
methods
.
showHomepage
,
$
(
"
:jqmData(role=page)
"
));
$
.
router
.
routes
.
add
(
'
/library
'
,
nextLevel
,
methods
.
showLibrary
,
$
(
"
:jqmData(role=page)
"
));
$
.
router
.
routes
.
add
(
'
/documentation
'
,
nextLevel
,
methods
.
showDocumentation
,
$
(
"
:jqmData(role=page)
"
));
$
.
router
.
routes
.
add
(
'
/dashboard
'
,
nextLevel
,
methods
.
showDashboard
,
$
(
"
:jqmData(role=page)
"
));
$
.
router
.
routes
.
add
(
'
/instance
'
,
nextLevel
,
methods
.
showInstanceList
,
$
(
"
:jqmData(role=page)
"
));
$
.
router
.
routes
.
add
(
'
/login
'
,
nextLevel
,
methods
.
showLogin
,
$
(
"
:jqmData(role=page)
"
));
// default page
if
(
params
.
route
===
'
/
'
)
{
if
(
$
.
router
.
routes
.
isCurrent
(
params
.
route
)
)
{
$
.
router
.
redirect
(
'
/homepage
'
);
}
else
{
$
.
router
.
start
(
params
.
route
,
nextLevel
);
}
$
.
router
.
start
(
params
.
route
,
nextLevel
);
},
//HOMEPAGE
showHomepage
:
function
(
params
)
{
return
this
.
each
(
function
()
{
var
mainPanel
=
$
(
this
).
vifib
(
'
getRender
'
,
'
homepagePanel
'
),
options
=
{
var
options
=
{
'
title
'
:
'
Vifib
'
,
'
mainPanel
'
:
mainPanel
,
'
mainPanel
'
:
$
(
this
).
vifib
(
'
getRender
'
,
'
homepagePanel
'
)
,
'
headmenu
'
:
true
,
'
headlinks
'
:
[
{
'
name
'
:
'
Software library
'
,
'
link
'
:
'
#/library
'
},
...
...
@@ -301,28 +303,161 @@
})
});
},
// SERVICES // INSTANCES
showInstanceList
:
function
(
params
)
{
return
this
.
each
(
function
()
{
var
nextLevel
=
$
.
router
.
routes
.
current
.
level
+
1
,
statusCode
=
{
401
:
redirect
,
402
:
payment
,
404
:
notFound
,
500
:
serverError
,
503
:
serverError
},
options
=
{
'
title
'
:
'
My Services
'
,
'
mainPanel
'
:
$
(
this
).
vifib
(
'
getRender
'
,
'
instance.list
'
),
'
leftbutton
'
:
{
'
link
'
:
$
(
this
).
vifib
(
'
isAuthenticated
'
)
?
'
#/dashboard
'
:
'
#/homepage
'
,
'
icon
'
:
'
home
'
,
'
title
'
:
'
Homepage
'
},
'
rightbutton
'
:
{
'
link
'
:
'
/instance/new
'
,
'
icon
'
:
'
plus
'
,
'
title
'
:
'
add service
'
}
},
listview
=
$
(
this
).
vifib
(
'
render
'
,
'
instance
'
,
options
).
find
(
'
#instance-list
'
);
// Routing
$
.
router
.
routes
.
add
(
'
/instance/id/:id
'
,
nextLevel
,
methods
.
showInstance
,
$
(
this
));
if
(
params
.
route
!==
'
/instance
'
)
{
$
.
router
.
start
(
params
.
route
,
nextLevel
);
}
else
{
//table.vifib('refresh', methods.refreshListInstance, 30);
$
(
this
).
slapos
(
'
instanceList
'
,
{
success
:
function
(
data
)
{
if
(
typeof
(
data
)
!==
"
object
"
)
{
data
=
$
.
parseJSON
(
data
);
}
$
.
each
(
data
.
list
,
function
()
{
var
url
=
this
.
toString
(),
row
=
$
(
'
<li></li>
'
).
vifib
(
'
fillRowInstance
'
,
url
);
//row.vifib('refresh', methods.refreshRowInstance, 30);
listview
.
append
(
row
).
listview
(
'
refresh
'
);
});
},
statusCode
:
statusCode
});
}
});
},
showInstance
:
function
(
uri
)
{
fillRowInstance
:
function
(
url
)
{
return
this
.
each
(
function
()
{
$
(
this
).
slapos
(
'
instanceInfo
'
,
url
,
{
success
:
function
(
instance
)
{
if
(
typeof
(
instance
)
!==
"
object
"
)
{
instance
=
$
.
parseJSON
(
instance
);
}
$
.
extend
(
instance
,
{
'
instance_url
'
:
methods
.
genInstanceUrl
(
url
)});
$
(
this
).
vifib
(
'
render
'
,
'
instance.listitem
'
,
instance
);
}
});
});
},
showInstance
:
function
(
params
)
{
return
this
.
each
(
function
()
{
var
statusCode
=
{
401
:
redirect
,
402
:
payment
,
404
:
notFound
,
500
:
serverError
},
nextLevel
=
$
.
router
.
routes
.
current
.
level
+
1
;
$
.
router
.
routes
.
add
(
'
/instance/id/:id/bang
'
,
nextLevel
,
methods
.
showBangInstance
,
$
(
this
).
find
(
'
.content-primary
'
));
if
(
$
.
router
.
routes
.
isCurrent
(
params
.
route
)
===
false
)
{
$
.
router
.
start
(
params
.
route
);
}
$
(
this
).
slapos
(
'
instanceInfo
'
,
params
.
id
,
{
success
:
function
(
response
)
{
if
(
typeof
(
response
)
!==
"
object
"
)
{
response
=
$
.
parseJSON
(
response
);
}
var
content
=
{
'
information
'
:
[
{
'
name
'
:
'
Reference
'
,
'
value
'
:
response
.
instance_id
},
{
'
name
'
:
'
Status
'
,
'
value
'
:
response
.
status
},
{
'
name
'
:
'
Software release
'
,
'
value
'
:
response
.
software_release
},
{
'
name
'
:
'
Software type
'
,
'
value
'
:
response
.
software_type
}
],
'
actions
'
:
[
{
'
name
'
:
'
Bang
'
,
'
link
'
:
methods
.
genBangUrl
(
params
.
id
)},
{
'
name
'
:
'
Rename
'
,
'
link
'
:
'
#/instance/rename
'
}
]
},
options
=
{
'
title
'
:
response
.
instance_id
,
'
mainPanel
'
:
$
(
this
).
vifib
(
'
getRender
'
,
'
instancePanel
'
,
content
),
'
leftbutton
'
:
{
'
link
'
:
$
(
this
).
vifib
(
'
isAuthenticated
'
)
?
'
#/dashboard
'
:
'
#/homepage
'
,
'
icon
'
:
'
home
'
,
'
title
'
:
'
Homepage
'
},
'
menu
'
:
true
,
'
menulinks
'
:
[
{
'
link
'
:
'
#/instance
'
,
'
name
'
:
'
All services
'
}
],
'
menu-extension
'
:
'
instances bound
'
,
'
menuextlinks
'
:
[
{
'
link
'
:
'
#/instance/id/kvm
'
,
'
name
'
:
'
INST-2
'
}
]
};
//response.status = $(this).vifib('getRender', 'instance.' + response.status);
response
.
actions
=
[
{
'
name
'
:
"
Bang
"
,
'
url
'
:
methods
.
genBangUrl
(
decodeURIComponent
(
params
.
id
))}
];
$
(
this
).
vifib
(
'
render
'
,
'
instance
'
,
options
);
//var form = $(this).find("#instance-form");
//form.vifib('prepareForm');
},
statusCode
:
statusCode
});
})
},
showBangInstance
:
function
(
params
)
{
var
statusCode
=
{
400
:
bad_request
,
401
:
redirect
,
402
:
payment
,
404
:
notFound
,
500
:
serverError
};
$
(
this
).
slapos
(
'
instanceInfo
'
,
uri
,
{
success
:
function
(
infos
)
{
if
(
typeof
(
infos
)
!==
"
object
"
)
{
infos
=
$
.
parseJSON
(
infos
);
}
infos
.
status
=
$
(
this
).
vifib
(
'
getRender
'
,
'
instance.
'
+
infos
.
status
);
infos
.
actions
=
[
{
name
:
"
Bang
"
,
url
:
methods
.
genBangUrl
(
decodeURIComponent
(
uri
))}
];
$
(
this
).
vifib
(
'
render
'
,
'
instance
'
,
infos
);
var
form
=
$
(
this
).
find
(
"
#instance-form
"
);
form
.
vifib
(
'
prepareForm
'
);
},
statusCode
:
statusCode
return
this
.
each
(
function
()
{
$
(
this
).
vifib
(
'
render
'
,
'
instance.bangPanel
'
);
$
(
this
).
find
(
'
#form-bang
'
).
submit
(
function
()
{
var
data
=
$
(
this
).
serializeObject
(),
uri
=
methods
.
extractInstanceURIFromHashtag
();
$
(
this
).
slapos
(
'
instanceBang
'
,
uri
,
{
data
:
data
,
statusCode
:
statusCode
,
success
:
function
()
{
$
.
redirect
([
'
instance
'
,
encodeURIComponent
(
uri
)]);
}
});
return
false
;
});
});
},
changeStatusInstance
:
function
(
status
)
{
var
uri
=
methods
.
extractInstanceURIFromHashtag
(),
data
=
$
(
this
).
vifib
(
'
extractInstanceInfo
'
);
data
.
status
=
status
;
$
(
this
).
vifib
(
'
requestAsking
'
,
data
,
function
()
{
$
(
this
).
vifib
(
'
refreshInstanceForm
'
);
});
},
...
...
@@ -364,40 +499,6 @@
return
false
;
},
showBangInstance
:
function
()
{
var
statusCode
=
{
400
:
bad_request
,
401
:
redirect
,
402
:
payment
,
404
:
notFound
,
500
:
serverError
};
return
this
.
each
(
function
()
{
$
(
this
).
vifib
(
"
render
"
,
'
form.bang.instance
'
);
$
(
this
).
find
(
"
#form-bang
"
).
submit
(
function
()
{
var
data
=
$
(
this
).
serializeObject
(),
uri
=
methods
.
extractInstanceURIFromHashtag
();
$
(
this
).
slapos
(
'
instanceBang
'
,
uri
,
{
data
:
data
,
statusCode
:
statusCode
,
success
:
function
()
{
$
.
redirect
([
'
instance
'
,
encodeURIComponent
(
uri
)]);
}
});
return
false
;
});
});
},
changeStatusInstance
:
function
(
status
)
{
var
uri
=
methods
.
extractInstanceURIFromHashtag
(),
data
=
$
(
this
).
vifib
(
'
extractInstanceInfo
'
);
data
.
status
=
status
;
$
(
this
).
vifib
(
'
requestAsking
'
,
data
,
function
()
{
$
(
this
).
vifib
(
'
refreshInstanceForm
'
);
});
},
getCurrentList
:
function
()
{
var
list
=
[];
$
.
each
(
$
(
this
).
find
(
'
a
'
),
function
()
{
...
...
@@ -417,19 +518,6 @@
});
},
fillRowInstance
:
function
(
url
)
{
return
this
.
each
(
function
()
{
$
(
this
).
slapos
(
'
instanceInfo
'
,
url
,
{
success
:
function
(
instance
)
{
if
(
typeof
(
instance
)
!==
"
object
"
)
{
instance
=
$
.
parseJSON
(
instance
);
}
$
.
extend
(
instance
,
{
'
url
'
:
methods
.
genInstanceUrl
(
url
)});
$
(
this
).
vifib
(
'
render
'
,
'
instance.list.elem
'
,
instance
);
}
});
});
},
refreshListInstance
:
function
()
{
var
currentList
=
$
(
this
).
vifib
(
'
getCurrentList
'
);
...
...
@@ -450,33 +538,6 @@
});
},
listInstances
:
function
()
{
var
$this
=
$
(
this
),
statusCode
=
{
401
:
redirect
,
402
:
payment
,
404
:
notFound
,
500
:
serverError
,
503
:
serverError
},
table
=
$
(
this
).
vifib
(
'
render
'
,
'
instance.list
'
).
find
(
'
#instance-table
'
);
table
.
vifib
(
'
refresh
'
,
methods
.
refreshListInstance
,
30
);
$
(
this
).
slapos
(
'
instanceList
'
,
{
success
:
function
(
data
)
{
if
(
typeof
(
data
)
!==
"
object
"
)
{
data
=
$
.
parseJSON
(
data
);
}
$
.
each
(
data
.
list
,
function
()
{
var
url
=
this
.
toString
(),
row
=
$
(
'
<tr></tr>
'
).
vifib
(
'
fillRowInstance
'
,
url
);
row
.
vifib
(
'
refresh
'
,
methods
.
refreshRowInstance
,
30
);
table
.
append
(
row
);
});
},
statusCode
:
statusCode
});
},
listInvoices
:
function
()
{
$
(
this
).
vifib
(
'
render
'
,
'
invoice.list
'
);
},
...
...
@@ -551,6 +612,7 @@
raw
=
raw
||
true
;
return
this
.
each
(
function
()
{
$
(
this
).
html
(
ich
[
template
](
data
,
raw
));
$
(
this
).
page
();
$
(
this
).
trigger
(
'
pagecreate
'
);
});
},
...
...
@@ -613,7 +675,7 @@ $(document).bind("mobileinit", function(){
$
.
mobile
.
defaultPageTransition
=
'
none
'
;
});
$
(
document
).
bind
(
'
pagecreate
'
,
function
()
{
$
(
'
:jqmData(role=page)
'
).
vifib
();
$
(
'
body
'
).
vifib
();
});
$
(
document
).
bind
(
'
pagebeforecreate
'
,
function
(
e
,
data
)
{
//e.preventDefault();
...
...
vifib/static/js/fake.js
View file @
6ac251db
...
...
@@ -113,7 +113,6 @@ var tmp = $.ajax;
$
.
ajax
=
function
(
url
,
options
){
// it will not work with cache set to false
if
(
url
.
hasOwnProperty
(
'
cache
'
))
{
url
.
cache
=
true
;
}
console
.
log
(
url
)
var
result
=
tmp
(
url
,
options
);
fakeserver
.
respond
();
return
result
;
...
...
vifib/static/js/jquery.urljs.js
View file @
6ac251db
...
...
@@ -70,7 +70,6 @@ $.extend({
}
this
.
current
=
this
.
list
[
i
][
j
];
this
.
clean
(
this
.
list
[
i
][
j
].
level
+
1
);
console
.
log
(
this
.
list
[
i
][
j
].
route
);
this
.
list
[
i
][
j
].
callback
(
hash
);
}
j
+=
1
;
...
...
@@ -81,6 +80,12 @@ $.extend({
isLastLevel
:
function
()
{
return
this
.
current
.
level
===
(
this
.
list
.
length
-
1
);
},
isCurrent
:
function
(
hash
)
{
var
extracted
=
$
.
router
.
extractKeys
(
this
.
current
.
route
),
regex
=
new
RegExp
(
'
^
'
+
extracted
.
regex
+
'
$
'
);
return
regex
.
test
(
hash
);
}
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment