{ // Place your portainer workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. // Placeholders with the same ids are connected. // Example: // "Print to console": { // "scope": "javascript,typescript", // "prefix": "log", // "body": [ // "console.log('$1');", // "$2" // ], // "description": "Log output to console" // } "Component": { "scope": "javascript", "prefix": "mycomponent", "description": "Dummy Angularjs Component", "body": [ "import angular from 'angular';", "import ${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}Controller from './${TM_FILENAME_BASE}Controller'", "", "angular.module('portainer.${TM_DIRECTORY/.*\\/app\\/([^\\/]*)(\\/.*)?$/$1/}').component('$TM_FILENAME_BASE', {", " templateUrl: './$TM_FILENAME_BASE.html',", " controller: ${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}Controller,", "});", "" ] }, "Controller": { "scope": "javascript", "prefix": "mycontroller", "body": [ "class ${TM_FILENAME_BASE/(.*)/${1:/capitalize}/} {", "\t/* @ngInject */", "\tconstructor($0) {", "\t}", "}", "", "export default ${TM_FILENAME_BASE/(.*)/${1:/capitalize}/};" ], "description": "Dummy ES6+ controller" }, "Model": { "scope": "javascript", "prefix": "mymodel", "description": "Dummy ES6+ model", "body": [ "/**", " * $1 Model", " */", "const _$1 = Object.freeze({", " $0", "});", "", "export class $1 {", " constructor() {", " Object.assign(this, JSON.parse(JSON.stringify(_$1)));", " }", "}" ] }, "Service": { "scope": "javascript", "prefix": "myservice", "description": "Dummy ES6+ service", "body": [ "import angular from 'angular';", "import PortainerError from 'Portainer/error';", "", "class $1 {", " /* @ngInject */", " constructor(\\$async, $0) {", " this.\\$async = \\$async;", "", " this.getAsync = this.getAsync.bind(this);", " this.getAllAsync = this.getAllAsync.bind(this);", " this.createAsync = this.createAsync.bind(this);", " this.updateAsync = this.updateAsync.bind(this);", " this.deleteAsync = this.deleteAsync.bind(this);", " }", "", " /**", " * GET", " */", " async getAsync() {", " try {", "", " } catch (err) {", " throw new PortainerError('', err);", " }", " }", "", " async getAllAsync() {", " try {", "", " } catch (err) {", " throw new PortainerError('', err);", " }", " }", "", " get() {", " if () {", " return this.\\$async(this.getAsync);", " }", " return this.\\$async(this.getAllAsync);", " }", "", " /**", " * CREATE", " */", " async createAsync() {", " try {", "", " } catch (err) {", " throw new PortainerError('', err);", " }", " }", "", " create() {", " return this.\\$async(this.createAsync);", " }", "", " /**", " * UPDATE", " */", " async updateAsync() {", " try {", "", " } catch (err) {", " throw new PortainerError('', err);", " }", " }", "", " update() {", " return this.\\$async(this.updateAsync);", " }", "", " /**", " * DELETE", " */", " async deleteAsync() {", " try {", "", " } catch (err) {", " throw new PortainerError('', err);", " }", " }", "", " delete() {", " return this.\\$async(this.deleteAsync);", " }", "}", "", "export default $1;", "angular.module('portainer.${TM_DIRECTORY/.*\\/app\\/([^\\/]*)(\\/.*)?$/$1/}').service('$1', $1);" ] } }