Skip to content

Commit

Permalink
Allows multiple selection
Browse files Browse the repository at this point in the history
  • Loading branch information
ozgurgunes committed Mar 13, 2019
1 parent ab193c4 commit 2b3f520
Show file tree
Hide file tree
Showing 8 changed files with 141 additions and 110 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Search for Symbol States in [Sketchrunner](http://sketchrunner.com/) or [Sketchp

## Usage

Select a symbol master (artboard), then;
Select one or more symbol masters (artboard), then;

### Disable All Overrides

Expand Down
13 changes: 0 additions & 13 deletions src/analytics.js

This file was deleted.

33 changes: 18 additions & 15 deletions src/disable-all.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import analytics from './analytics.js'
import {
getSymbols,
analytics
} from './utils.js'

var selection = sketch.getSelectedDocument().selectedLayers

export default context => {
var message, eventLabel, eventValue
if (selection.length != 1 || selection.layers[0].type != sketch.Types.SymbolMaster) {
message = "Please select a symbol master."
eventLabel = "Selection Error"
eventValue = 0
} else {
selection.layers[0]
.overrides.map(override => {
override.editable = false
let c = 0
try {
let symbols = getSymbols(selection)
symbols.map(symbol => {
symbol.overrides.map(override => {
if (override.editable) {
override.editable = false
c++
}
})
})
context.document.reloadInspector()
message = "All overrides been disabled."
eventLabel = "success"
eventValue = selection.layers[0].overrides.length
analytics("Success", c)
return UI.message(context.command.name() + ": " + c + " overrides in " + symbols.length + " symbols disabled.")
} catch (e) {
return e
}
analytics(context, eventLabel, eventValue)
UI.message(context.command.name() + ": " + message)
}
46 changes: 25 additions & 21 deletions src/disable-locked.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import analytics from './analytics.js'
import {
getSymbols,
analytics
} from './utils.js'

var selection = sketch.getSelectedDocument().selectedLayers

export default context => {
var message, eventLabel, eventValue
if (selection.length != 1 || selection.layers[0].type != sketch.Types.SymbolMaster) {
message = "Please select a symbol master."
eventLabel = "Selection Error"
} else {
var symbol = selection.layers[0]
symbol.overrides
.filter(override => override.id.indexOf("/") < 0 && override.affectedLayer.locked)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
override.editable = false
})
})
let c = 0
try {
let symbols = getSymbols(selection)
symbols.map(symbol => {
symbol.overrides
.filter(override => override.id.indexOf("/") < 0 && override.affectedLayer.locked)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
if (override.editable) {
override.editable = false
c++
}
})
})
})
context.document.reloadInspector()
message = "Locked layers been disabled."
eventLabel = "Success"
eventValue = selection.layers[0].overrides.length
analytics("Success", c)
return UI.message(context.command.name() + ": " + c + " overrides in " + symbols.length + " symbols disabled.")
} catch (e) {
return e
}
analytics(context, eventLabel, eventValue)
UI.message(context.command.name() + ": " + message)
}
33 changes: 18 additions & 15 deletions src/enable-all.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import analytics from './analytics.js'
import {
getSymbols,
analytics
} from './utils.js'

var selection = sketch.getSelectedDocument().selectedLayers

export default context => {
var message, eventLabel, eventValue
if (selection.length != 1 || selection.layers[0].type != sketch.Types.SymbolMaster) {
message = "Please select a symbol master."
eventLabel = "Selection Error"
} else {
selection.layers[0]
.overrides.map(override => {
override.editable = true
let c = 0
try {
let symbols = getSymbols(selection)
symbols.map(symbol => {
symbol.overrides.map(override => {
if (!override.editable) {
override.editable = true
c++
}
})
})
context.document.reloadInspector()
message = "All overrides been enabled."
eventLabel = "Success"
eventValue = selection.layers[0].overrides.length
analytics("Success", c)
return UI.message(context.command.name() + ": " + c + " overrides in " + symbols.length + " symbols enabled.")
} catch (e) {
return e
}
analytics(context, eventLabel, eventValue)
UI.message(context.command.name() + ": " + message)
}

48 changes: 26 additions & 22 deletions src/enable-unlocked.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import analytics from './analytics.js'
import {
getSymbols,
analytics
} from './utils.js'

var selection = sketch.getSelectedDocument().selectedLayers

export default context => {
var message, eventLabel, eventValue
if (selection.length != 1 || selection.layers[0].type != sketch.Types.SymbolMaster) {
message = "Please select a symbol master."
eventLabel = "Selection Error"
} else {
var symbol = selection.layers[0]
symbol.overrides
.filter(override => override.id.indexOf("/") < 0 && !override.affectedLayer.locked)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
override.editable = true
})
})
let c = 0
try {
let symbols = getSymbols(selection)
symbols.map(symbol => {
symbol.overrides
.filter(override => override.id.indexOf("/") < 0 && !override.affectedLayer.locked)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
if (!override.editable) {
override.editable = true
c++
}
})
})
})
context.document.reloadInspector()
message = "Unlocked layers been enabled."
eventLabel = "Success"
eventValue = selection.layers[0].overrides.length
}
analytics(context, eventLabel, eventValue)
UI.message(context.command.name() + ": " + message)
analytics("Success", c)
return UI.message(context.command.name() + ": " + c + " overrides in " + symbols.length + " symbols are enabled.")
} catch (e) {
return e
}
}
50 changes: 27 additions & 23 deletions src/lock-status.js
Original file line number Diff line number Diff line change
@@ -1,31 +1,35 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import analytics from './analytics.js'
import {
getSymbols,
analytics
} from './utils.js'

var selection = sketch.getSelectedDocument().selectedLayers

export default context => {
var message, eventLabel, eventValue
if (selection.length != 1 || selection.layers[0].type != sketch.Types.SymbolMaster) {
message = "Please select a symbol master."
eventLabel = "Selection Error"
eventValue = 0
} else {
var symbol = selection.layers[0]
symbol.overrides
.filter(override => override.id.indexOf("/") < 0)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
override.editable = !layer.affectedLayer.locked
})
})
let c = 0
try {
let symbols = getSymbols(selection)
symbols.map(symbol => {
symbol.overrides
.filter(override => override.id.indexOf("/") < 0)
.map(layer => {
symbol.overrides
.filter(override => override.path.startsWith(layer.path))
.map(override => {
if (override.editable != !layer.affectedLayer.locked) {
override.editable = !layer.affectedLayer.locked
c++
}

})
})
})
context.document.reloadInspector()
message = "All overrides enabled or disabled depending on layer lock status."
eventLabel = "Success"
eventValue = selection.layers[0].overrides.length
}
analytics(context, eventLabel, eventValue)
UI.message(context.command.name() + ": " + message)
analytics("Success", c)
return UI.message(context.command.name() + ": " + c + " overrides in " + symbols.length + " symbols set.")
} catch (e) {
return e
}
}
26 changes: 26 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import sketch from 'sketch/dom'
import UI from 'sketch/ui'
import send from 'sketch-module-google-analytics'

const GA_TRACKING_ID = "UA-5738625-2"

export const getSymbols = selection => {
let symbols = selection.layers
.filter(layer => layer.type == sketch.Types.SymbolMaster)
if (symbols.length < 1) {
analytics("Selection Error", 0)
throw UI.message(context.command.name() + ": " + "Please select a symbol master.")
} else {
return symbols
}
}

export const analytics = (label, value) => {
const payload = {}
payload.ec = context.plugin.name()
payload.ea = context.command.name()
if (label) { payload.el = label }
if (value) { payload.ev = value }
return send(context, GA_TRACKING_ID, 'event', payload)
}

0 comments on commit 2b3f520

Please sign in to comment.