diff options
Diffstat (limited to 'app/assets/javascripts/ci/runner/group_runners/index.js')
-rw-r--r-- | app/assets/javascripts/ci/runner/group_runners/index.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/app/assets/javascripts/ci/runner/group_runners/index.js b/app/assets/javascripts/ci/runner/group_runners/index.js new file mode 100644 index 00000000000..0e7efd2b8a1 --- /dev/null +++ b/app/assets/javascripts/ci/runner/group_runners/index.js @@ -0,0 +1,58 @@ +import { GlToast } from '@gitlab/ui'; +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { createLocalState } from '../graphql/list/local_state'; +import GroupRunnersApp from './group_runners_app.vue'; + +Vue.use(GlToast); +Vue.use(VueApollo); + +export const initGroupRunners = (selector = '#js-group-runners') => { + const el = document.querySelector(selector); + + if (!el) { + return null; + } + + const { + registrationToken, + runnerInstallHelpPage, + groupId, + groupFullPath, + groupRunnersLimitedCount, + onlineContactTimeoutSecs, + staleTimeoutSecs, + emptyStateSvgPath, + emptyStateFilteredSvgPath, + } = el.dataset; + + const { cacheConfig, typeDefs, localMutations } = createLocalState(); + + const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient({}, { cacheConfig, typeDefs }), + }); + + return new Vue({ + el, + apolloProvider, + provide: { + runnerInstallHelpPage, + localMutations, + groupId, + onlineContactTimeoutSecs: parseInt(onlineContactTimeoutSecs, 10), + staleTimeoutSecs: parseInt(staleTimeoutSecs, 10), + emptyStateSvgPath, + emptyStateFilteredSvgPath, + }, + render(h) { + return h(GroupRunnersApp, { + props: { + registrationToken, + groupFullPath, + groupRunnersLimitedCount: parseInt(groupRunnersLimitedCount, 10), + }, + }); + }, + }); +}; |