@cypress/core-desktop-gui
Version:
Desktop GUI for managing Cypress projects.
118 lines (88 loc) • 2.67 kB
text/coffeescript
.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->
stringify = (err) ->
[err.name, err.message].join(": ")
class Entities.Project extends Entities.Model
defaults:
loading: false
browserState: "closed"
mutators:
browserText: ->
return if not b =
word = switch
when "opened" then "Running"
when "opening" then "Opening"
when "closed" then "Run"
[word, b.get("displayName"), b.get("majorVersion")].join(" ")
browserIcon: ->
switch
when "opening" then "fa-refresh fa-spin"
when "opened" then "fa-check-circle"
when "closed" then "fa-chrome"
browserName: ->
return if not b =
b.get("name")
initialize: ->
browserOpening: ->
browserOpened: ->
browserClosed: ->
setBrowser: (name) ->
"browser", .chooseBrowserByName(name)
loaded: ->
isLoading: ->
!!
setName: ->
name:
getNameFromPath: ->
_(.split("/")).last()
displayBrowsers: ->
if b =
b.toJSON()
else
[]
getBrowsers: (browsers = []) ->
App.request("new:browser:entities", browsers)
setConfig: (config) ->
if b = config.browsers
config.browsers =
config.browser = config.browsers.extractDefaultBrowser()
setError: (err) ->
if err.portInUse
"error", stringify(err)
reset: ->
props = {
error: null
portInUse: null
clientUrl: null
clientUrlDisplay: null
}
class Entities.ProjectsCollection extends Entities.Collection
model: Entities.Project
getProjectByPath: (path) ->
API =
getProjects: ->
projects = new Entities.ProjectsCollection
App.ipc("get:project:paths").then (paths) ->
projects.add _(paths).map (path) -> {path: path}
projects.trigger("fetched")
projects
App.reqres.setHandler "project:entities", ->
API.getProjects()