Browse Source

readme

master
zeus 3 years ago
parent
commit
8f029da942
  1. 5
      README.md
  2. 8
      dist/css/app.7ebe4e80.css
  3. 10
      dist/css/chunk-vendors.e469b508.css
  4. BIN
      dist/fonts/themify.2c454669.eot
  5. BIN
      dist/fonts/themify.a1ecc3b8.woff
  6. BIN
      dist/fonts/themify.e23a7dca.ttf
  7. BIN
      dist/img/academy.90116857.png
  8. BIN
      dist/img/docker.7b56657d.png
  9. BIN
      dist/img/hybrid-1.852eef88.png
  10. BIN
      dist/img/loading.f4404720.gif
  11. BIN
      dist/img/penguin21a.a2b45b3f.png
  12. BIN
      dist/img/penguinfledgling.7cf62d54.png
  13. 362
      dist/img/themify.9c8e96ec.svg
  14. 1
      dist/index.html
  15. 2
      dist/js/app.d2878685.js
  16. 1
      dist/js/app.d2878685.js.map
  17. 113
      dist/js/chunk-vendors.d8d18fe6.js
  18. 1
      dist/js/chunk-vendors.d8d18fe6.js.map
  19. 103
      src/App.vue
  20. 416
      src/App.vue.backup
  21. 410
      src/components/manageservices/calendarview1.vue
  22. 6
      src/components/manageservices/join-service.vue

5
README.md

@ -13,7 +13,7 @@
### <a name="introduction"></a>
## <b>Swarmlab Hybrid</b> is the Swarmlabs younger, more tech savvy brother.
## <b>Swarmlab Hybrid</b> is Swarmlabs younger, more tech savvy brother.
Swarmlab hybrid provides the user with the unique abillity to create Labrooms (or other applications) and share them as project images expanding the simple swarmlab Labrooms to full-blown systems. An all of that <b>using onlly the browser and the command line</b> of their system.
@ -62,7 +62,8 @@ This way you will be able to :
- create once - scale up or down without rebuilding
- Connect multiple computers through a network.
- Move Labs between environments
- Create your own labs
- Create your own labs.
- Your Labs, are fully portable across the cloud
- open source barebone -> <b>Share them with your friends</b>

8
dist/css/app.7ebe4e80.css

File diff suppressed because one or more lines are too long

10
dist/css/chunk-vendors.e469b508.css

File diff suppressed because one or more lines are too long

BIN
dist/fonts/themify.2c454669.eot

Binary file not shown.

BIN
dist/fonts/themify.a1ecc3b8.woff

Binary file not shown.

BIN
dist/fonts/themify.e23a7dca.ttf

Binary file not shown.

BIN
dist/img/academy.90116857.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

BIN
dist/img/docker.7b56657d.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
dist/img/hybrid-1.852eef88.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
dist/img/loading.f4404720.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

BIN
dist/img/penguin21a.a2b45b3f.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

BIN
dist/img/penguinfledgling.7cf62d54.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

362
dist/img/themify.9c8e96ec.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 229 KiB

1
dist/index.html

@ -1 +0,0 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="/css/app.7ebe4e80.css" rel="preload" as="style"><link href="/css/chunk-vendors.e469b508.css" rel="preload" as="style"><link href="/js/app.d2878685.js" rel="preload" as="script"><link href="/js/chunk-vendors.d8d18fe6.js" rel="preload" as="script"><link href="/css/chunk-vendors.e469b508.css" rel="stylesheet"><link href="/css/app.7ebe4e80.css" rel="stylesheet"></head><body><div id="app"></div><script src="/js/chunk-vendors.d8d18fe6.js"></script><script src="/js/app.d2878685.js"></script></body></html>

2
dist/js/app.d2878685.js

File diff suppressed because one or more lines are too long

1
dist/js/app.d2878685.js.map

File diff suppressed because one or more lines are too long

113
dist/js/chunk-vendors.d8d18fe6.js

File diff suppressed because one or more lines are too long

1
dist/js/chunk-vendors.d8d18fe6.js.map

File diff suppressed because one or more lines are too long

103
src/App.vue

@ -168,16 +168,16 @@
</div>
<!-- /Sidebar max ------------------------------------ -->
<!-- Sidebar min -------------------------------- -->
<div class=" bg-light border-right" id="sidebar-wrapper"
<div class=" bg-light border-right" id="sidebar-wrapper1"
v-if="sidemenou == 'min'"
>
<div class="list-group list-group-flush"
>
<!-- Menou Dashboard -->
<b-list-group-item v-b-toggle.hybrid-dashboard variant="light" name="Dashboard" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('dashboard','')" style="cursor: pointer;" :class="{ active: isActive('dashboard') }" @click="hybrid('dashboard')" title="Dashboard"></b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-dashboard1 variant="light" name="Dashboard" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('dashboard','')" style="cursor: pointer;" :class="{ active: isActive('dashboard') }" @click="hybrid('dashboard')" title="Dashboard"></b-list-group-item>
<b-collapse id="hybrid-dashboard" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-dashboard1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="dashboard" class="ti-view-grid m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_dashboard')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_dashboard') }" title="Dashboard"></b-list-group-item>
<!--
<b-list-group-item variant="light" name="Profile" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_profile')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_profile') }"> Profile</b-list-group-item>
@ -185,41 +185,41 @@
</b-collapse>
<!-- Menou Settings -->
<b-list-group-item v-b-toggle.hybrid-profile variant="light" name="Local" class="ti-user list-group-item list-group-item-action" v-on:click="setActive('profile','')" style="cursor: pointer;" :class="{ active: isActive('profile') }" @click="hybrid('connect-server')" title="Profile" > </b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-profile1 variant="light" name="Local" class="ti-user list-group-item list-group-item-action" v-on:click="setActive('profile','')" style="cursor: pointer;" :class="{ active: isActive('profile') }" @click="hybrid('connect-server')" title="Profile" > </b-list-group-item>
<b-collapse id="hybrid-profile" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-profile1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="Settings" class="ti-pencil-alt m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('settings','profile_settings')" style="cursor: pointer;" :class="{ active: isActiveSub('profile_settings') }" @click="hybrid('connect-server')" title="Profile"> </b-list-group-item>
</b-collapse>
<!-- Menou hybrid -->
<b-list-group-item v-b-toggle.hybrid-hybrid variant="light" name="Local" class="ti-loop list-group-item list-group-item-action" v-on:click="setActive('hybrid','')" style="cursor: pointer;" :class="{ active: isActive('hybrid') }" @click="hybrid('manage_service')" title="Hybrid" > </b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-hybrid1 variant="light" name="Local" class="ti-loop list-group-item list-group-item-action" v-on:click="setActive('hybrid','')" style="cursor: pointer;" :class="{ active: isActive('hybrid') }" @click="hybrid('manage_service')" title="Hybrid" > </b-list-group-item>
<b-collapse id="hybrid-hybrid" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-hybrid1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="Hybrid" class="ti-target m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('hybrid','hybrid_instances')" style="cursor: pointer;" :class="{ active: isActiveSub('hybrid_instances') }" @click="hybrid('manage_service')" title="Zones"> </b-list-group-item>
<b-list-group-item variant="light" name="Deploy" class="ti-cloud-up m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('hybrid','hybrid_deploy')" style="cursor: pointer;" :class="{ active: isActiveSub('hybrid_deploy') }" @click="hybrid('manage_deploy')" title="Deploy"> </b-list-group-item>
</b-collapse>
<!-- Menou container -->
<b-list-group-item v-b-toggle.hybrid-container variant="light" name="Local" class="ti-package list-group-item list-group-item-action" v-on:click="setActive('container','')" style="cursor: pointer;" :class="{ active: isActive('container') }" @click="hybrid('bootstrap')" title="Container"> </b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-container1 variant="light" name="Local" class="ti-package list-group-item list-group-item-action" v-on:click="setActive('container','')" style="cursor: pointer;" :class="{ active: isActive('container') }" @click="hybrid('bootstrap')" title="Container"> </b-list-group-item>
<b-collapse id="hybrid-container" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-container1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="Container" class="ti-harddrives m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('container','hybrid_container')" style="cursor: pointer;" :class="{ active: isActiveSub('hybrid_container') }" @click="hybrid('bootstrap')" title="Show all containers"> </b-list-group-item>
</b-collapse>
<!-- Menou private -->
<b-list-group-item v-b-toggle.hybrid-private variant="light" name="Private" class="ti-home list-group-item list-group-item-action" v-on:click="setActive('private','')" style="cursor: pointer;" :class="{ active: isActive('private') }" @click="hybrid('services')" title="Private"> </b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-private1 variant="light" name="Private" class="ti-home list-group-item list-group-item-action" v-on:click="setActive('private','')" style="cursor: pointer;" :class="{ active: isActive('private') }" @click="hybrid('services')" title="Private"> </b-list-group-item>
<b-collapse id="hybrid-private" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-private1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="Container" class="ti-harddrive m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('private','hybrid_private')" style="cursor: pointer;" :class="{ active: isActiveSub('hybrid_private') }" @click="hybrid('services')" title="Bootstrap"> </b-list-group-item>
</b-collapse>
<!-- Menou llo -->
<b-list-group-item v-b-toggle.hybrid-llo variant="light" name="Llo" class="ti-book list-group-item list-group-item-action" v-on:click="setActive('llo','')" style="cursor: pointer;" :class="{ active: isActive('llo') }" @click="hybrid('llo')" title="LearningObjects" > </b-list-group-item>
<b-list-group-item v-b-toggle.hybrid-llo1 variant="light" name="Llo" class="ti-book list-group-item list-group-item-action" v-on:click="setActive('llo','')" style="cursor: pointer;" :class="{ active: isActive('llo') }" @click="hybrid('llo')" title="LearningObjects" > </b-list-group-item>
<b-collapse id="hybrid-llo" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-collapse id="hybrid-llo1" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="Container" class="ti-view-list m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('llo','hybrid_llo')" style="cursor: pointer;" :class="{ active: isActiveSub('hybrid_llo') }" @click="hybrid('llo')" title="Courses"> </b-list-group-item>
</b-collapse>
@ -291,7 +291,7 @@
<!-- ------ hybrid container --------------- -->
<!-- ----------------------------------- -->
<network-table
:key="componentKeyreload"
:key="componentKeyreload1"
v-show="hybridmenou == 'bootstrap'"
style="background-color: #f8f9fa"
>
@ -415,6 +415,7 @@ export default {
data() {
return {
componentKeyreload:1,
componentKeyreload1:1,
setStatusAgent:'',
issocket:false, //socket server
isconnect:false, // dockerswarm wg
@ -478,6 +479,7 @@ export default {
//console.log(JSON.stringify(result))
//window.location.reload()
this.componentKeyreload += 1
this.componentKeyreload1 += 1
}
},
async serverstatus(action){
@ -727,6 +729,79 @@ let info = '<div class="text-left" style="height: 550px; overflow-y: scroll;"><b
#page-content-wrapper {
min-width: 100vh;
}
#sidebar-wrapper1 .list-group {
margin:0;
line-height:30px;
font-size:12px;
font-weight:600;
}
/*
#sidebar-wrapper1 .list-group {
width: 15rem;
}
#wrapper {
overflow-x: hidden;
}
#sidebar-wrapper1 {
min-height: 100vh;
margin-left: -15rem;
-webkit-transition: margin .25s ease-out;
-moz-transition: margin .25s ease-out;
-o-transition: margin .25s ease-out;
transition: margin .25s ease-out;
}
#sidebar-wrapper1 .sidebar-heading {
padding: 0.875rem 1.25rem;
font-size: 1.2rem;
}
#sidebar-wrapper1 .list-group {
width: 15rem;
}
#wrapper.toggled #sidebar-wrapper1 {
margin-left: 0;
}
@media (min-width: 768px) {
#sidebar-wrapper1 {
margin-left: 0;
}
#page-content-wrapper {
min-width: 0;
width: 100%;
}
#wrapper.toggled #sidebar-wrapper1 {
margin-left: -15rem;
}
}
*/
precode {

416
src/App.vue.backup

@ -1,416 +0,0 @@
<template>
<div id="app" class="container-fluid">
<nav class="navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start">
<b-navbar-brand class="logo simple-text ti-swarmlab text-secondary">
Swarmlab.io
</b-navbar-brand>
<div class="navbar-collapse collapse justify-content-between align-items-center w-100" id="collapsingNavbar2">
<ul class="navbar-nav mx-auto text-md-center text-left">
<li class="nav-item">
<a class="nav-link" href="#"
@click="hybrid('services')"
>
Manage_Your_Local_LabInstances</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
|
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"
@click="hybrid('bootstrap')"
>Containers</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
-
</a>
</li>
<li class="nav-item my-auto">
<a class="nav-link navbar-brand mx-0 d-none d-md-inline" href="">Hybrid</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
-
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"
@click="hybrid('connect-server')"
>Config_hybrid_server</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">
|
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#"
@click="hybrid('manage_service')"
>
Manage_Your_hybrid_LabInstances</a>
</li>
</li>
</ul>
<ul class="nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap">
<b-nav-item href="https://git.swarmlab.io:3000" target="_swarmlabgit"> Swarmlab_git </b-nav-item>
<b-nav-item > | </b-nav-item>
<b-nav-item :href="'https://api-client.swarmlab.io:8088/?token='+ token" target="_swarmlab"> Lab_onDemand </b-nav-item>
<b-nav-item > </b-nav-item>
</ul>
</div>
</nav>
<!-- ***************** container items ****************** -->
<b-row
v-show="hybridmenou == 'bootstrap'"
>
<b-col cols="12" >
<network-table
style="background-color: #f8f9fa"
>
</network-table>
</b-col>
</b-row>
<b-row
v-show="hybridmenou == 'services'"
>
<b-col cols="12">
<services-table
style="background-color: #f8f9fa"
>
</services-table>
</b-col>
</b-row>
<b-row
v-show="hybridmenou == 'connect-server'"
>
<b-col cols="12">
<connect-server
style="background-color: #f8f9fa"
>
</connect-server>
</b-col>
</b-row>
<b-row
v-show="hybridmenou == 'manage_service'"
>
<b-col cols="12">
<manage-services
style="background-color: #f8f9fa"
>
</manage-services>
</b-col>
</b-row>
<div class="d-flex" id="wrapper">
<!-- Sidebar max -->
<div class=" bg-light border-right" id="sidebar-wrapper"
v-if="sidemenou == 'max'"
>
<div class=" logo simple-text ti-swarmlab text-secondary sidebar-heading"
@click="onActionMenu('min')"
>
Swarmlab.io
</div>
<div class="list-group list-group-flush"
>
<!-- Menou Dashboard -->
<b-list-group-item v-b-toggle.hybrid-profile variant="light" name="Dashboard" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('dashboard','')" style="cursor: pointer;" :class="{ active: isActive('dashboard') }"> Dashboard</b-list-group-item>
<b-collapse id="hybrid-profile" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="dashboard" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_dashboard')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_dashboard') }"> Profile</b-list-group-item>
<b-list-group-item variant="light" name="Profile" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_profile')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_profile') }"> Profile</b-list-group-item>
</b-collapse>
<!-- Menou StandAlone -->
<b-list-group-item v-b-toggle.hybrid-local variant="light" name="Local" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('local','')" style="cursor: pointer;" :class="{ active: isActive('local') }"> Local</b-list-group-item>
<b-collapse id="hybrid-local" class="m-subm" accordion="m-sidebar" role="tabpanel">
<b-list-group-item variant="light" name="local" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('local','local_local')" style="cursor: pointer;" :class="{ active: isActiveSub('local_local') }"> Local</b-list-group-item>
<b-list-group-item variant="light" name="Menou" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('local','local_menou')" style="cursor: pointer;" :class="{ active: isActiveSub('local_menou') }"> Menou</b-list-group-item>
</b-collapse>
</div>
</div>
<!-- Sidebar min -->
<div class="bg-light border-right" id="sidebar-wrapper"
v-if="sidemenou == 'min'"
>
<div class=" ti-layout-slider sidebar-heading"
@click="onActionMenu('max')"
>
</div>
<div class="list-group list-group-flush"
>
<a href="#" class="ti-help list-group-item list-group-item-action bg-light"></a>
<a href="#" class="ti-link list-group-item list-group-item-action bg-light"></a>
<a href="#" class="list-group-item list-group-item-action bg-light"></a>
<a href="#" class="list-group-item list-group-item-action bg-light"></a>
<a href="#" class="list-group-item list-group-item-action bg-light"></a>
<a href="#" class="list-group-item list-group-item-action bg-light"></a>
</div>
</div>
<!-- /#sidebar-wrapper -->
<!-- Page Content -->
<div id="page-content-wrapper">
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom">
<button class="btn btn-primary" >
Max Menu
</button>
<button class="btn btn-primary" >
Min Menu
</button>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto mt-2 mt-lg-0">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</div>
</nav>
<div class="container-fluid">
<h1 class="mt-4">Simple Sidebar</h1>
<p>The starting state of the menu will appear collapsed on smaller screens, and will appear non-collapsed on larger screens. When toggled using the button below, the menu will change.</p>
<p>Make sure to keep all page content within the <code>#page-content-wrapper</code>. The top navbar is optional, and just for demonstration. Just create an element with the <code>#menu-toggle</code> ID which will toggle the menu when clicked.</p>
</div>
</div>
<!-- /#page-content-wrapper -->
</div>
<!-- /#wrapper -->
</div>
</template>
<script>
import "@/assets/css/themify-icons.css";
import ConnectServer from "./components/myconnect-server.vue";
import NetworkTable from "./components/mynetwork.vue";
import ServicesTable from "./components/myservices.vue";
import ManageServices from "./components/manageservices.vue";
export default {
name: 'app',
components: {
NetworkTable,
ServicesTable,
ConnectServer,
ManageServices
},
data() {
return {
activeItem: '', // menou
activeItemSub: '', //submenou
sidemenou:'max',
hybridmenou:'bootstrap',
show: true,
token: '',
SwarmabAsciiLabTemplate:''
}
},
mounted() {
},
created() {
},
methods: {
onActionMenu(action){
if(action == 'max'){
this.sidemenou = 'max'
}else if(action == 'min'){
this.sidemenou = 'min'
}
console.log(action)
},
hybrid(action) {
this.hybridmenou = action
console.log(action)
if(action == 'bootstrap'){
this.$root.$emit('hybrid_refresh_dockerservices')
}else if(action == 'connect-server'){
this.$root.$emit('hybrid_connect_server')
}else if(action == 'services'){
this.$root.$emit('hybrid_refresh_availableservices')
}else if(action == 'manage_service'){
//this.$root.$emit('hybrid_manage_service')
}
},
isActive: function (menuItem) {
console.log('active ' + menuItem);
return this.activeItem === menuItem
},
isActiveSub: function (menuItem) {
console.log('activesub ' + menuItem);
return this.activeItemSub === menuItem
},
setActive: function (menuItem,menuItemSub) {
console.log('set ' + menuItem);
this.activeItem = menuItem // no need for Vue.set()
this.activeItemSub = menuItemSub // no need for Vue.set()
}
}
}
</script>
<style>
.active {
background-color: #e7e7e7 !important;
color: #0c5460 !important;
}
@import url('https://fonts.googleapis.com/css?family=Lato:400,700');
body {
background: #EEF1F4 !important;
}
.nav-background {
background: #353535;
}
.ti-swarmlab:before {
position: relative;
top:-5px;
right:-8px;
font-size: 1.5em;
font-weight: 300;
content: "\e606";
color: #222;
color: #74B3C8;
border-color: #c60000;
}
.ti-themify-logo:before {
content: "\e6d1";
}
.menoutext {
font-family: 'Lato', sans-serif !important;
}
.mycontainer {
padding-right: 20px !important;
padding-left: 5px !important;
margin-right:auto;
margin-left:auto
}
.m-subm {
width: 100%;
border-left: 4px solid #4b4ba3;;
background-color: #f0f0f0;
border-top: none;
border-bottom: none;
border-right: none;
}
.m-subm-card {
padding-left: 0px;
padding-right: 0px;
padding-top: 0px;
padding-bottom: 0px;
background-color: #f0f0f0;
border-top: none;
border-bottom: none;
border-left: none;
border-right: none;
margin-bottom: 0px;
margin-top: 0px;
}
.m-subm-listgroup {
width: 100%;
//border-left: 4px solid #4b4ba3;
background-color: #f0f0f0;
border-top: none;
border-bottom: none;
border-right: none;
border-left: none;
padding-left: 2.25rem;
}
.m-subm-listgroup:hover {
background-color: #e7e7e7;
font-weight: 580;
}
.m-subm-listgroup:focus {
background-color: #e7e7e7;
color:#393982;
font-weight: 580;
}
</style>

410
src/components/manageservices/calendarview1.vue

@ -1,410 +0,0 @@
<template>
<div id="app">
<div class="calendar-controls">
<div v-if="message" class="notification is-success">{{ message }}</div>
<div class="box">
<h4 class="title is-5">Play with the options!</h4>
<div class="field">
<label class="label">Period UOM</label>
<div class="control">
<div class="select">
<select v-model="displayPeriodUom">
<option>month</option>
<option>week</option>
<option>year</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">Period Count</label>
<div class="control">
<div class="select">
<select v-model="displayPeriodCount">
<option :value="1">1</option>
<option :value="2">2</option>
<option :value="3">3</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">Starting day of the week</label>
<div class="control">
<div class="select">
<select v-model="startingDayOfWeek">
<option v-for="(d, index) in dayNames" :key="index" :value="index">
{{ d }}
</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="checkbox">
<input v-model="useTodayIcons" type="checkbox" />
Use icon for today's period
</label>
</div>
<div class="field">
<label class="checkbox">
<input v-model="displayWeekNumbers" type="checkbox" />
Show week number
</label>
</div>
<div class="field">
<label class="checkbox">
<input v-model="showTimes" type="checkbox" />
Show times
</label>
</div>
<div class="field">
<label class="label">Themes</label>
<label class="checkbox">
<input v-model="useDefaultTheme" type="checkbox" />
Default
</label>
</div>
<div class="field">
<label class="checkbox">
<input v-model="useHolidayTheme" type="checkbox" />
Holidays
</label>
</div>
</div>
<div class="box">
<div class="field">
<label class="label">Title</label>
<div class="control">
<input v-model="newItemTitle" class="input" type="text" />
</div>
</div>
<div class="field">
<label class="label">Start date</label>
<div class="control">
<input v-model="newItemStartDate" class="input" type="date" />
</div>
</div>
<div class="field">
<label class="label">End date</label>
<div class="control">
<input v-model="newItemEndDate" class="input" type="date" />
</div>
</div>
<button class="button is-info" @click="clickTestAddItem">Add Item</button>
</div>
</div>
<div class="calendar-parent">
<calendar-view
:items="items"
:show-date="showDate"
:time-format-options="{ hour: 'numeric', minute: '2-digit' }"
:enable-drag-drop="true"
:disable-past="disablePast"
:disable-future="disableFuture"
:show-times="showTimes"
:date-classes="myDateClasses"
:display-period-uom="displayPeriodUom"
:display-period-count="displayPeriodCount"
:starting-day-of-week="startingDayOfWeek"
:class="themeClasses"
:period-changed-callback="periodChanged"
:current-period-label="useTodayIcons ? 'icons' : ''"
:displayWeekNumbers="displayWeekNumbers"
:enable-date-selection="true"
:selection-start="selectionStart"
:selection-end="selectionEnd"
@date-selection-start="setSelection"
@date-selection="setSelection"
@date-selection-finish="finishSelection"
@drop-on-date="onDrop"
@click-date="onClickDay"
@click-item="onClickItem"
>
<template #header="{ headerProps }">
<calendar-view-header slot="header" :header-props="headerProps" @input="setShowDate" />
</template>
</calendar-view>
</div>
</div>
</template>
<script>
import { CalendarView, CalendarViewHeader, CalendarMath } from "vue-simple-calendar";
import 'vue-simple-calendar/dist/style.css'
// The next two lines are optional themes
import "vue-simple-calendar/static/css/default.css"
import "vue-simple-calendar/static/css/holidays-us.css"
export default {
name: "App",
components: {
CalendarView,
CalendarViewHeader,
},
data() {
return {
/* Show the current month, and give it some fake items to show */
showDate: this.thisMonth(1),
message: "",
startingDayOfWeek: 0,
disablePast: false,
disableFuture: false,
displayPeriodUom: "month",
displayPeriodCount: 1,
displayWeekNumbers: false,
showTimes: true,
selectionStart: null,
selectionEnd: null,
newItemTitle: "",
newItemStartDate: "",
newItemEndDate: "",
useDefaultTheme: true,
useHolidayTheme: true,
useTodayIcons: false,
items: [
{
id: "e0",
startDate: "2018-01-05",
},
{
id: "e1",
startDate: this.thisMonth(15, 18, 30),
},
{
id: "e2",
startDate: this.thisMonth(15),
title: "Single-day item with a long title",
},
{
id: "e3",
startDate: this.thisMonth(7, 9, 25),
endDate: this.thisMonth(10, 16, 30),
title: "Multi-day item with a long title and times",
},
{
id: "e4",
startDate: this.thisMonth(20),
title: "My Birthday!",
classes: "birthday",
url: "https://en.wikipedia.org/wiki/Birthday",
},
{
id: "e5",
startDate: this.thisMonth(5),
endDate: this.thisMonth(12),
title: "Multi-day item",
classes: "purple",
},
{
id: "foo",
startDate: this.thisMonth(29),
title: "Same day 1",
},
{
id: "e6",
startDate: this.thisMonth(29),
title: "Same day 2",
classes: "orange",
},
{
id: "e7",
startDate: this.thisMonth(29),
title: "Same day 3",
},
{
id: "e8",
startDate: this.thisMonth(29),
title: "Same day 4",
classes: "orange",
},
{
id: "e9",
startDate: this.thisMonth(29),
title: "Same day 5",
},
{
id: "e10",
startDate: this.thisMonth(29),
title: "Same day 6",
classes: "orange",
},
{
id: "e11",
startDate: this.thisMonth(29),
title: "Same day 7",
},
],
}
},
computed: {
userLocale() {
return CalendarMath.getDefaultBrowserLocale
},
dayNames() {
return CalendarMath.getFormattedWeekdayNames(this.userLocale, "long", 0)
},
themeClasses() {
return {
"theme-default": this.useDefaultTheme,
"holiday-us-traditional": this.useHolidayTheme,
"holiday-us-official": this.useHolidayTheme,
}
},
myDateClasses() {
// This was added to demonstrate the dateClasses prop. Note in particular that the
// keys of the object are `yyyy-mm-dd` ISO date strings (not dates), and the values
// for those keys are strings or string arrays. Keep in mind that your CSS to style these
// may need to be fairly specific to make it override your theme's styles. See the
// CSS at the bottom of this component to see how these are styled.
const o = {}
const theFirst = this.thisMonth(1)
const ides = [2, 4, 6, 9].includes(theFirst.getMonth()) ? 15 : 13
const idesDate = this.thisMonth(ides)
o[CalendarMath.isoYearMonthDay(idesDate)] = "ides"
o[CalendarMath.isoYearMonthDay(this.thisMonth(21))] = ["do-you-remember", "the-21st"]
return o
},
},
mounted() {
this.newItemStartDate = CalendarMath.isoYearMonthDay(CalendarMath.today())
this.newItemEndDate = CalendarMath.isoYearMonthDay(CalendarMath.today())
},
methods: {
periodChanged() {
// range, eventSource) {
// Demo does nothing with this information, just including the method to demonstrate how
// you can listen for changes to the displayed range and react to them (by loading items, etc.)
//console.log(eventSource)
//console.log(range)
},
thisMonth(d, h, m) {
const t = new Date()
return new Date(t.getFullYear(), t.getMonth(), d, h || 0, m || 0)
},
onClickDay(d) {
this.selectionStart = null
this.selectionEnd = null
this.message = `You clicked: ${d.toLocaleDateString()}`
},
onClickItem(e) {
this.message = `You clicked: ${e.title}`
},
setShowDate(d) {
this.message = `Changing calendar view to ${d.toLocaleDateString()}`
this.showDate = d
},
setSelection(dateRange) {
this.selectionEnd = dateRange[1]
this.selectionStart = dateRange[0]
},
finishSelection(dateRange) {
this.setSelection(dateRange)
this.message = `You selected: ${this.selectionStart.toLocaleDateString()} -${this.selectionEnd.toLocaleDateString()}`
},
onDrop(item, date) {
this.message = `You dropped ${item.id} on ${date.toLocaleDateString()}`
// Determine the delta between the old start date and the date chosen,
// and apply that delta to both the start and end date to move the item.
const eLength = CalendarMath.dayDiff(item.startDate, date)
item.originalItem.startDate = CalendarMath.addDays(item.startDate, eLength)
item.originalItem.endDate = CalendarMath.addDays(item.endDate, eLength)
},
clickTestAddItem() {
this.items.push({
startDate: this.newItemStartDate,
endDate: this.newItemEndDate,
title: this.newItemTitle,
id: "e" + Math.random().toString(36).substr(2, 10),
})
this.message = "You added a calendar item!"
},
},
}
</script>
<style>
html,
body {
height: 100%;
margin: 0;
background-color: #f7fcff;
}
#app {
display: flex;
flex-direction: row;
font-family: Calibri, sans-serif;
width: 95vw;
min-width: 30rem;
max-width: 100rem;
min-height: 40rem;
margin-left: auto;
margin-right: auto;
}
.calendar-controls {
margin-right: 1rem;
min-width: 14rem;
max-width: 14rem;
}
.calendar-parent {
display: flex;
flex-direction: column;
flex-grow: 1;
overflow-x: hidden;
overflow-y: hidden;
max-height: 80vh;
background-color: white;
}
/* For long calendars, ensure each week gets sufficient height. The body of the calendar will scroll if needed */
.cv-wrapper.period-month.periodCount-2 .cv-week,
.cv-wrapper.period-month.periodCount-3 .cv-week,
.cv-wrapper.period-year .cv-week {
min-height: 6rem;
}
/* These styles are optional, to illustrate the flexbility of styling the calendar purely with CSS. */
/* Add some styling for items tagged with the "birthday" class */
.theme-default .cv-item.birthday {
background-color: #e0f0e0;
border-color: #d7e7d7;
}
.theme-default .cv-item.birthday::before {
content: "\1F382"; /* Birthday cake */
margin-right: 0.5em;
}
/* The following classes style the classes computed in myDateClasses and passed to the component's dateClasses prop. */
.theme-default .cv-day.ides {
background-color: #ffe0e0;
}
.ides .cv-day-number::before {
content: "\271D";
}
.cv-day.do-you-remember.the-21st .cv-day-number::after {
content: "\1F30D\1F32C\1F525";
}
</style>

6
src/components/manageservices/join-service.vue

@ -192,7 +192,7 @@
<div class="white h-100 flex-fixed-width-item"
<vuetable
ref="vuetable"
:key="vuetablekey"
:key="vuetablekey1"
:api-url='apiurl'
:api-mode="true"
:http-options="httpOptions"
@ -320,7 +320,7 @@ export default {
showModal: false,
visibility: [],
active:false,
vuetablekey:0,
vuetablekey1:0,
fielddata:{},
fields: [
{
@ -660,7 +660,7 @@ export default {
},
refreshVuetable() {
this.$nextTick(()=>{
this.vuetablekey += 1
this.vuetablekey1 += 1
})
},
playbookinfoShow(value) {

Loading…
Cancel
Save