UNPKG

foam-framework

Version:
154 lines (147 loc) 5.02 kB
/** * @license * Copyright 2015 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 */ CLASS({ package: 'foam.apps.builder', name: 'AppConfigActionsView', extends: 'foam.ui.SimpleView', traits: [ 'foam.ui.md.ToolbarViewTrait' ], requires: [ 'foam.apps.builder.ExportConfirmView', 'foam.apps.builder.ImportExportFlow', 'foam.apps.builder.ImportExportFlowView', 'foam.ui.md.FlatButton', 'foam.ui.md.PopupView', ], imports: [ 'importExportManager$', 'dao', 'stack', ], properties: [ 'data', { model_: 'ViewFactoryProperty', name: 'delegate', defaultValue: 'foam.ui.md.DetailView', }, 'delegateView', ], methods: [ function doExportAction(name, title) { var confirm = this.aconfirmExportAction.bind(this, name, title); var setup = this.asetupExportAction.bind(this, name, title); aaif(confirm, aseq(setup, function(ret, exportFlow) { this.importExportManager[name](exportFlow); ret(); }.bind(this)))(nop); }, function aconfirmExportAction(name, title, ret) { var confirmPopup = this.PopupView.create({ cardClass: 'md-card-shell', data: this.data, layoutPosition: 'top', blockerMode: 'modal', delegate: this.ExportConfirmView.xbind({ actionName: name, title: title + '?', }, this.Y), }, this.Y); confirmPopup.open(); confirmPopup.delegateView.result(ret); }, function asetupExportAction(name, title, ret) { var exportFlow = this.ImportExportFlow.create({ config$: this.data$, actionName: name, title: title, }, this.Y); var popup = this.PopupView.create({ cardClass: 'md-card-shell', blockerMode: 'modal', delegate: 'foam.apps.builder.ImportExportFlowView', data: exportFlow, }, this.Y); popup.open(); ret(exportFlow); }, ], actions: [ { model_: 'foam.metrics.TrackedAction', name: 'packageDownload', label: 'Package', help: 'Download app as a single archive', priority: 1, order: 1.0, iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAQlBMVEVChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfRChfQAWXGFAAAAFXRSTlMALePhKBXghJvbEray/fwg6uhP6U1pY8wzAAAAWklEQVR4Xq3PORKEMAwFUbGJdcZsvv9VSTr4JRIX5c70XySrXNNmqeuNBh9NmuYFWHNoA34R/kB+9RnkKgdPRskFEHYBhF0AYVdA2AUQL31wj3AA5xX226r2ACkvFWPaNFOcAAAAAElFTkSuQmCC', ligature: 'archive', code: function() { this.doExportAction('downloadPackage', 'Download Package to Disk'); }, }, { model_: 'foam.metrics.TrackedAction', name: 'downloadApp', label: 'Download', help: 'Download app as a series of individual source files', priority: 1, order: 2.0, iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAACVBMVEVChfRChfRChfRFRUHlAAAAAnRSTlMAgJsrThgAAAA0SURBVHjazdBBCgAgEMNAs/9/tCAEFoo3FeeY3jpuqOWngWrIxd4RXdgD9oA9wLHLtR9emRVOAOP9ZYAiAAAAAElFTkSuQmCC', ligature: 'file_download', code: function() { this.doExportAction('downloadApp', 'Download Files to Disk'); }, }, { model_: 'foam.metrics.TrackedAction', name: 'uploadApp', label: 'Upload', help: 'Upload app to the Chrome Web Store', priority: 3, order: 4.0, iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAACVBMVEVChfRChfRChfRFRUHlAAAAAnRSTlMAgJsrThgAAAA1SURBVHjavcwxCgAwEALB6P8ffUUKEbEKOctZ8PwZUJxEcRV3lXQVuZf0fLtqtB5eR1sPWxsHogDjZnwe5wAAAABJRU5ErkJggg==', ligature: 'file_upload', code: function() { this.doExportAction('uploadApp', 'Upload to Chrome Web Store'); }, }, { model_: 'foam.metrics.TrackedAction', name: 'publishApp', label: 'Publish', help: 'Publish app to the Chrome Web Store', priority: 3, order: 5.0, iconUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAACVBMVEVChfRChfRChfRFRUHlAAAAAnRSTlMAgJsrThgAAAAySURBVHjaxY+xDQAACINs/z/akRhj3JQRJuIMF9awIw3e1uAp1VO6p+ApgKcAc3/hkgQRygDjNDsCngAAAABJRU5ErkJggg==', ligature: 'publish', code: function() { this.doExportAction('publishApp', 'Publish to Chrome Web Store'); }, }, { name: 'delete', label: 'Delete', help: 'Removes this app', priority: 2, order: 10, ligature: 'delete', code: function() { this.dao.remove(this.data); }, }, ], templates: [ function toHTML() {/* <% this.delegateView = this.delegate({ data$: this.data$ }, this.Y); %> <%= this.delegateView %> */}, ], });