section improvements, area elements mostly
This commit is contained in:
@@ -52,7 +52,7 @@ class SvgElementClass
|
|||||||
$(target).css('border', '1px solid black')
|
$(target).css('border', '1px solid black')
|
||||||
@compileSource()
|
@compileSource()
|
||||||
compileSource: ->
|
compileSource: ->
|
||||||
source = @text_field.val()
|
return unless source = @text_field.val()
|
||||||
results = $(@text_field.data('preview'))
|
results = $(@text_field.data('preview'))
|
||||||
window.compiledJS = ''
|
window.compiledJS = ''
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -7,9 +7,11 @@
|
|||||||
#= require shared-ember-helpers/all
|
#= require shared-ember-helpers/all
|
||||||
#= require ./app
|
#= require ./app
|
||||||
#= require_directory ./mixins
|
#= require_directory ./mixins
|
||||||
|
#= require_directory ./services
|
||||||
#= require ./controllers/modals/base_controller
|
#= require ./controllers/modals/base_controller
|
||||||
#= require ion.sound
|
#= require ion.sound
|
||||||
#= require_tree .
|
#= require_tree .
|
||||||
|
|
||||||
@$assets_path = '/assets/'
|
@$assets_path = '/assets/'
|
||||||
@EmberENV = {FEATURES: {'query-params-new': true}}
|
@EmberENV = {FEATURES: {'query-params-new': true}}
|
||||||
@$days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
|
@$days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
App.SectionAreaComponent = Ember.Component.extend DragNDrop.Draggable,
|
||||||
|
classNames: ['section-area-container']
|
||||||
|
attributeBindings: ['style']
|
||||||
|
classNameBindings: ['vertical', 'right_half:right-half', 'section_area.rounded:rounded']
|
||||||
|
pixelWidth: Ember.computed 'section_area.width', 'dpm', -> @get('dpm') * @get('section_area.width')
|
||||||
|
pixelHeight: Ember.computed 'section_area.height', 'dpm', -> @get('dpm') * @get('section_area.height')
|
||||||
|
offsetX: Ember.computed.product 'dpm', 'content.position_x'
|
||||||
|
offsetY: Ember.computed.product 'dpm', 'content.position_y'
|
||||||
|
vertical: Ember.computed 'section_area.width', 'section_area.height', 'targetObject.editmode', ->
|
||||||
|
not @get('targetObject.editmode') and @get('section_area.height') > @get('section_area.width')
|
||||||
|
right_half: Ember.computed 'section_area.position_x', 'section_area.width', 'section_area.sectino.width', ->
|
||||||
|
@get('section_area.position_x') + (@get('section_area.width') / 2) > (@get('section_area.section.width') / 2)
|
||||||
|
style: Ember.computed 'offsetX', 'offsetY', 'pixelWidth', 'pixelHeight', ->
|
||||||
|
App.CssObject.create(
|
||||||
|
width: @get('pixelWidth')
|
||||||
|
height: @get('pixelHeight')
|
||||||
|
left: @get('offsetX')
|
||||||
|
top: @get('offsetY')
|
||||||
|
"line-height": @get('pixelHeight')
|
||||||
|
).toString()
|
||||||
|
content: Ember.computed.alias 'section_area'
|
||||||
|
draggable: (-> if @get('targetObject.editmode') then 'true' else 'false' ).property('targetObject.editmode')
|
||||||
|
dpm: Ember.computed.alias 'parentView.dpm'
|
||||||
|
positionChange: (position)->
|
||||||
|
dpm = @get('dpm')
|
||||||
|
return if !dpm or parseFloat(dpm) is 0
|
||||||
|
@get('content').setProperties
|
||||||
|
position_x: position.left / dpm
|
||||||
|
position_y: position.top / dpm
|
||||||
|
click: ->
|
||||||
|
return unless @get('targetObject.editmode')
|
||||||
|
@get('targetObject').modal 'section_area',
|
||||||
|
title_path: 'section_area.modal.title'
|
||||||
|
model: @get('section_area')
|
||||||
-14
@@ -19,17 +19,3 @@ App.modals.SectionAddTablesController = App.modals.BaseController.extend
|
|||||||
#@store.pushPayload 'table', result
|
#@store.pushPayload 'table', result
|
||||||
@store.pushPayload result
|
@store.pushPayload result
|
||||||
@send 'close'
|
@send 'close'
|
||||||
|
|
||||||
#TODO remove followin code if Ember pushPayload is working
|
|
||||||
#properly with associations
|
|
||||||
section_id = @get('model.id')
|
|
||||||
tables_that_should_be_in_section = @store.all('table').filter((t)->t.get('section.id') == section_id)
|
|
||||||
current_table_ids = @get('model.tables').mapProperty('id')
|
|
||||||
for table in tables_that_should_be_in_section.toArray()
|
|
||||||
@get('model.tables').pushObject(table) unless table.get('id') in current_table_ids
|
|
||||||
#TODO it still does not work for the second client side action,
|
|
||||||
#soo the good old reload for now for the failing case
|
|
||||||
window.location.reload() if result.tables.length != tables_that_should_be_in_section.toArray().length
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,5 +9,4 @@ App.modals.TableEditController = App.modals.BaseController.extend
|
|||||||
saveTable: ->
|
saveTable: ->
|
||||||
#@set 'model.section', @get('selectedSection')
|
#@set 'model.section', @get('selectedSection')
|
||||||
@set 'model.section', @get('model.section')
|
@set 'model.section', @get('model.section')
|
||||||
#debugger
|
|
||||||
@send 'save'
|
@send 'save'
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ App.SectionController = Ember.ObjectController.extend
|
|||||||
@set('editmode', false)
|
@set('editmode', false)
|
||||||
@get('model').save()
|
@get('model').save()
|
||||||
@get('model.section_elements').forEach (section_element) -> section_element.save()
|
@get('model.section_elements').forEach (section_element) -> section_element.save()
|
||||||
|
@get('model.section_areas').forEach (section_area) -> section_area.save()
|
||||||
rollbackEditable: ->
|
rollbackEditable: ->
|
||||||
@get('model').rollback()
|
@get('model').rollback()
|
||||||
@get('model.section_elements').forEach (section_element) ->
|
@get('model.section_elements').forEach (section_element) ->
|
||||||
@@ -14,6 +15,11 @@ App.SectionController = Ember.ObjectController.extend
|
|||||||
section_element.rollback()
|
section_element.rollback()
|
||||||
else
|
else
|
||||||
section_element.deleteRecord()
|
section_element.deleteRecord()
|
||||||
|
@get('model.section_areas').forEach (section_area) ->
|
||||||
|
if section_area.get('id')
|
||||||
|
section_area.rollback()
|
||||||
|
else
|
||||||
|
section_area.deleteRecord()
|
||||||
@set('editmode', false)
|
@set('editmode', false)
|
||||||
addSection: -> @modal 'add_section', model: @get('model')
|
addSection: -> @modal 'add_section', model: @get('model')
|
||||||
addTables: -> @modal 'section_add_tables', model: @get('model')
|
addTables: -> @modal 'section_add_tables', model: @get('model')
|
||||||
@@ -28,7 +34,14 @@ App.SectionController = Ember.ObjectController.extend
|
|||||||
@modal 'add_section_element',
|
@modal 'add_section_element',
|
||||||
model: @get('model')
|
model: @get('model')
|
||||||
ok: => @send 'makeEditable'
|
ok: => @send 'makeEditable'
|
||||||
removeSectionElement: (section_element)-> section_element.destroy()
|
addSectionArea: ->
|
||||||
|
section_area = @store.createRecord('section-area')
|
||||||
|
section_area.set 'section', @get('model')
|
||||||
|
@modal 'section_area',
|
||||||
|
title_path: 'section_area.add_button'
|
||||||
|
model: section_area
|
||||||
|
ok: => @send 'makeEditable'
|
||||||
|
removeSectionElement: (section_element)-> section_element.destroyRecord()
|
||||||
textures: ['wood1', 'wood2']
|
textures: ['wood1', 'wood2']
|
||||||
|
|
||||||
sections: (-> @get('controllers.sections.model')).property('controllers.sections.model')
|
sections: (-> @get('controllers.sections.model')).property('controllers.sections.model')
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ App.SectionsIndexController = Ember.ArrayController.extend
|
|||||||
needs: ['application', 'sections', 'index']
|
needs: ['application', 'sections', 'index']
|
||||||
sections: (-> @get('controllers.sections.model')).property('controllers.sections.model')
|
sections: (-> @get('controllers.sections.model')).property('controllers.sections.model')
|
||||||
sectionQrCodesUrl: ((a,b,c)->
|
sectionQrCodesUrl: ((a,b,c)->
|
||||||
debugger
|
|
||||||
Routes.qr_codes_suppliers_tables_path()
|
Routes.qr_codes_suppliers_tables_path()
|
||||||
).property()
|
).property()
|
||||||
newPath: Routes.new_suppliers_section_path()
|
newPath: Routes.new_suppliers_section_path()
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
Ember.Handlebars.helper 'select-hour', (params..., options)->
|
Ember.Handlebars.helper 'select-hour', (params..., options)->
|
||||||
debugger
|
|
||||||
result = "<select class=\"select-hour\">"
|
result = "<select class=\"select-hour\">"
|
||||||
result += "<option>#{hour}</option>" for hour in [0..24]
|
result += "<option>#{hour}</option>" for hour in [0..24]
|
||||||
result += "</select>"
|
result += "</select>"
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ DragNDrop.Draggable = Ember.Mixin.create
|
|||||||
draggable: 'true'
|
draggable: 'true'
|
||||||
dragStart: (ev)->
|
dragStart: (ev)->
|
||||||
@set 'content.isDragging', true
|
@set 'content.isDragging', true
|
||||||
@set 'controller.isDragging', true
|
@set 'targetObject.isDragging', true
|
||||||
@set 'controller.controllers.application.isDragging', true
|
@set 'targetObject.controllers.application.isDragging', true
|
||||||
localStorage.setItem('draggingView', @get('elementId'))
|
localStorage.setItem('draggingView', @get('elementId'))
|
||||||
dataTransfer = ev.originalEvent.dataTransfer
|
dataTransfer = ev.originalEvent.dataTransfer
|
||||||
#dataTransfer.setData 'Text', @get('elementId')
|
#dataTransfer.setData 'Text', @get('elementId')
|
||||||
@@ -25,8 +25,8 @@ DragNDrop.Draggable = Ember.Mixin.create
|
|||||||
pageY: ev.originalEvent.pageY
|
pageY: ev.originalEvent.pageY
|
||||||
dragEnd: (e)->
|
dragEnd: (e)->
|
||||||
@set 'content.isDragging', false
|
@set 'content.isDragging', false
|
||||||
@set 'controller.isDragging', false
|
@set 'targetObject.isDragging', false
|
||||||
@set 'controller.controllers.application.isDragging', false
|
@set 'targetObject.controllers.application.isDragging', false
|
||||||
localStorage.removeItem 'draggingView' if localStorage.getItem 'draggingView'
|
localStorage.removeItem 'draggingView' if localStorage.getItem 'draggingView'
|
||||||
|
|
||||||
DragNDrop.Droppable = Ember.Mixin.create
|
DragNDrop.Droppable = Ember.Mixin.create
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
attr = DS.attr
|
||||||
|
App.SectionArea = DS.Model.extend Ember.Validations.Mixin,
|
||||||
|
title: attr 'string'
|
||||||
|
width: attr 'number', defaultValue: 2
|
||||||
|
height: attr 'number', defaultValue: 2
|
||||||
|
position_x: attr 'number', defaultValue: 0
|
||||||
|
position_y: attr 'number', defaultValue: 0
|
||||||
|
rounded: attr 'boolean', defaultValue: false
|
||||||
|
section: DS.belongsTo('section')
|
||||||
|
validations:
|
||||||
|
title: {presence: true}
|
||||||
@@ -5,3 +5,4 @@ App.Section = DS.Model.extend
|
|||||||
height: attr 'number'
|
height: attr 'number'
|
||||||
tables: DS.hasMany('table')
|
tables: DS.hasMany('table')
|
||||||
section_elements: DS.hasMany('section-element')
|
section_elements: DS.hasMany('section-element')
|
||||||
|
section_areas: DS.hasMany('section-area')
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ DS.Model.reopenClass
|
|||||||
#relation = relation[0]
|
#relation = relation[0]
|
||||||
#if relation.kind == 'belongsTo' and id = attributes["#{relation.name}_id"]
|
#if relation.kind == 'belongsTo' and id = attributes["#{relation.name}_id"]
|
||||||
#attributes[relation.name] = id unless attributes[relation.name]
|
#attributes[relation.name] = id unless attributes[relation.name]
|
||||||
#debugger if options.debug
|
|
||||||
#belongs_tos[relation.name] = id
|
#belongs_tos[relation.name] = id
|
||||||
|
|
||||||
nested_attributes = {}
|
nested_attributes = {}
|
||||||
@@ -53,8 +52,6 @@ DS.Model.reopenClass
|
|||||||
# pushPayload makes association back references, just push not yet 2014-06-27
|
# pushPayload makes association back references, just push not yet 2014-06-27
|
||||||
new_record = @store.pushPayload(nested_attributes)
|
new_record = @store.pushPayload(nested_attributes)
|
||||||
|
|
||||||
#debugger if options.debug
|
|
||||||
|
|
||||||
#promises = []
|
#promises = []
|
||||||
#association_names = []
|
#association_names = []
|
||||||
#Ember.get(@, 'relationships').forEach (model, relation)=>
|
#Ember.get(@, 'relationships').forEach (model, relation)=>
|
||||||
@@ -64,7 +61,6 @@ DS.Model.reopenClass
|
|||||||
#promises.push @store.find(relation.name, id)
|
#promises.push @store.find(relation.name, id)
|
||||||
#association_names.push relation.name
|
#association_names.push relation.name
|
||||||
#Ember.RSVP.all(promises).then (records)->
|
#Ember.RSVP.all(promises).then (records)->
|
||||||
#debugger
|
|
||||||
#for record, i in records
|
#for record, i in records
|
||||||
##console.log "Setting relation #{relation.name} to #{record.get('id')}"
|
##console.log "Setting relation #{relation.name} to #{record.get('id')}"
|
||||||
#new_record.set association_names[i], record
|
#new_record.set association_names[i], record
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
App.SectionsRoute = Ember.Route.extend
|
App.SectionsRoute = Ember.Route.extend
|
||||||
beforeModel: ->
|
beforeModel: ->
|
||||||
@store.find 'section-element'
|
@store.find 'section-element'
|
||||||
|
@store.find 'section-area'
|
||||||
model: -> @store.all 'section'
|
model: -> @store.all 'section'
|
||||||
|
|
||||||
# setupController: (controller, collection) ->
|
# setupController: (controller, collection) ->
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
Ember.computed.product = ->
|
||||||
|
args = []
|
||||||
|
for arg in arguments
|
||||||
|
args.push arg
|
||||||
|
callback = ->
|
||||||
|
product = 1
|
||||||
|
for key in args
|
||||||
|
continue unless typeof(key) is 'string'
|
||||||
|
product *= @get(key) || 0
|
||||||
|
product
|
||||||
|
args.push callback
|
||||||
|
Ember.computed.apply(@, args)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
App.CssObject = Ember.Object.extend
|
||||||
|
pixel_fields: ['width', 'height', 'left', 'top', 'line-height']
|
||||||
|
isNumeric: /^[-+]?(\d+|\d+\.\d+)$/
|
||||||
|
toString: ->
|
||||||
|
ret = ""
|
||||||
|
for k, v of JSON.parse(JSON.stringify(@))
|
||||||
|
if @pixel_fields.indexOf(k) > -1
|
||||||
|
v = "#{v}px" if @isNumeric.test(v)
|
||||||
|
ret += "#{k}:#{v};"
|
||||||
|
ret
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.title= section_area.title
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
.form-row.title
|
||||||
|
.form-label=t 'attributes.section_area.title'
|
||||||
|
.form-field
|
||||||
|
= input valueBinding="model.title"
|
||||||
|
.form-info
|
||||||
|
span.dimension m
|
||||||
|
= errors model.errors.title
|
||||||
|
.form-row.width
|
||||||
|
.form-label=t 'attributes.section_area.width'
|
||||||
|
.form-field= input type="number" valueBinding="model.width"
|
||||||
|
.form-row.height
|
||||||
|
.form-label=t 'attributes.section_area.height'
|
||||||
|
.form-field= input type="number" valueBinding="model.height"
|
||||||
|
.form-row.rounded
|
||||||
|
.form-label= t 'attributes.section_area.rounded'
|
||||||
|
.form-field= view "boolean-switch" value=model.rounded
|
||||||
|
hr
|
||||||
|
button.modal-close{action "close"}=t 'section_area.modal.close_button'
|
||||||
|
button.modal-confirm.right{action "save"} disabled=model.isInvalid
|
||||||
|
=t 'section_area.modal.save_button'
|
||||||
|
button.modal-destroy.right{action "destroy"}= t 'section_area.modal.destroy_button'
|
||||||
@@ -19,8 +19,9 @@
|
|||||||
ul
|
ul
|
||||||
li: a{action "addTables"}: span.section-add-tables-icon=t 'section.add_tables.button_label'
|
li: a{action "addTables"}: span.section-add-tables-icon=t 'section.add_tables.button_label'
|
||||||
li: a{action "arrangeTables"}: span.section-arrange-tables-icon=t 'section.arrange_tables.modal.title'
|
li: a{action "arrangeTables"}: span.section-arrange-tables-icon=t 'section.arrange_tables.modal.title'
|
||||||
li: a href="{{route 'qr_codes_suppliers_tables_path' section_id=id}}" target="_blank": span.qr-icon=t 'table.print_qr_codes'
|
|
||||||
li: a{action "addSectionElement"}: span.section-add-section-element-icon= t 'section_element.add_button'
|
li: a{action "addSectionElement"}: span.section-add-section-element-icon= t 'section_element.add_button'
|
||||||
|
li: a{action "addSectionArea"}: span.section-add-section-area-icon= t 'section_area.add_button'
|
||||||
|
li: a href="{{route 'qr_codes_suppliers_tables_path' section_id=id}}" target="_blank": span.qr-icon=t 'table.print_qr_codes'
|
||||||
li: a.section-destroy{action "destroySection"}: span.section-remove-icon=t 'helpers.links.destroy'
|
li: a.section-destroy{action "destroySection"}: span.section-remove-icon=t 'helpers.links.destroy'
|
||||||
a.section-edit-mode-button{ action "makeEditable" }: span
|
a.section-edit-mode-button{ action "makeEditable" }: span
|
||||||
= view "section-tables" contentBinding="tables"
|
= view "section-tables" contentBinding="tables"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
.table-number= table.number
|
.table-number= table.number
|
||||||
.status-icons
|
unless editmode
|
||||||
span.needs_payment
|
.status-icons
|
||||||
span.needs_help
|
span.needs_payment
|
||||||
span.active_order
|
span.needs_help
|
||||||
|
span.active_order
|
||||||
if table.active_list
|
if table.active_list
|
||||||
div.table-actions
|
div.table-actions
|
||||||
.title= table.number
|
.title= table.number
|
||||||
@@ -19,8 +20,3 @@ if table.active_list
|
|||||||
a{action "editTable" table}: span.fa.fa-lg.fa-wrench
|
a{action "editTable" table}: span.fa.fa-lg.fa-wrench
|
||||||
each user in table.active_list.users
|
each user in table.active_list.users
|
||||||
= user.avatar_tag
|
= user.avatar_tag
|
||||||
if editmodedisabled
|
|
||||||
.table-settings
|
|
||||||
select
|
|
||||||
option Round
|
|
||||||
option rectangular
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
each element in section_elements
|
each section_element in section_elements
|
||||||
view "section-element" content=element
|
view "section-element" content=section_element
|
||||||
|
each section_area in section_areas
|
||||||
|
= section-area section_area=section_area
|
||||||
each table in tables
|
each table in tables
|
||||||
= view "section-table" content=table
|
= view "section-table" content=table
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ App.SectionElementView = Ember.View.extend DragNDrop.Draggable,
|
|||||||
return 0 unless dpm = @get('dpm')
|
return 0 unless dpm = @get('dpm')
|
||||||
dpm * (@get('content.position_y') || 0)
|
dpm * (@get('content.position_y') || 0)
|
||||||
).property('dpm', 'content.position_y', 'content.rotation')
|
).property('dpm', 'content.position_y', 'content.rotation')
|
||||||
|
targetObject: Ember.computed.alias 'controller'
|
||||||
#myHeight: (-> (@get('dpm') || 0 ) * @get('content.height')).property('dpm', 'content.height')
|
#myHeight: (-> (@get('dpm') || 0 ) * @get('content.height')).property('dpm', 'content.height')
|
||||||
#myWidth: (-> (@get('dpm') || 0 ) * @get('content.width')).property('dpm', 'content.width')
|
#myWidth: (-> (@get('dpm') || 0 ) * @get('content.width')).property('dpm', 'content.width')
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ App.SectionTableView = Ember.View.extend DragNDrop.Draggable,
|
|||||||
"position:absolute;width:#{@get('myWidth')}px;height:#{@get('myHeight')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
|
"position:absolute;width:#{@get('myWidth')}px;height:#{@get('myHeight')}px;left:#{@get('offsetX')}px;top:#{@get('offsetY')}px"
|
||||||
|
|
||||||
draggable: (-> if @get('controller.editmode') then 'true' else 'false' ).property('controller.editmode')
|
draggable: (-> if @get('controller.editmode') then 'true' else 'false' ).property('controller.editmode')
|
||||||
|
targetObject: Ember.computed.alias 'controller'
|
||||||
placeInSection: ->
|
placeInSection: ->
|
||||||
@$el.css 'left', @offsetX()
|
@$el.css 'left', @offsetX()
|
||||||
@$el.css 'top', @offsetY()
|
@$el.css 'top', @offsetY()
|
||||||
|
|||||||
@@ -1,21 +1,15 @@
|
|||||||
#App.SectionView = Ember.View.extend {}
|
#App.SectionView = Ember.View.extend {}
|
||||||
#initFoundation: (->
|
#initFoundation: (->
|
||||||
#debugger
|
|
||||||
#@$().foundation()
|
#@$().foundation()
|
||||||
#).on('didInsertElement')
|
#).on('didInsertElement')
|
||||||
#didInsertElement: ->
|
#didInsertElement: ->
|
||||||
#@$().foundation()
|
#@$().foundation()
|
||||||
#debugger
|
|
||||||
#true
|
#true
|
||||||
#$(document).on 'load', '[data-dropdown]', (a,b,c)->
|
#$(document).on 'load', '[data-dropdown]', (a,b,c)->
|
||||||
#debugger
|
|
||||||
#true
|
#true
|
||||||
#$(document).on 'change', '[data-dropdown]', (a,b,c)->
|
#$(document).on 'change', '[data-dropdown]', (a,b,c)->
|
||||||
#debugger
|
|
||||||
#true
|
#true
|
||||||
#$(document).on 'ready', '[data-dropdown]', (a,b,c)->
|
#$(document).on 'ready', '[data-dropdown]', (a,b,c)->
|
||||||
#debugger
|
|
||||||
#true
|
#true
|
||||||
#$(document).on 'click', '[data-dropdown]', (a,b,c)->
|
#$(document).on 'click', '[data-dropdown]', (a,b,c)->
|
||||||
#debugger
|
|
||||||
#true
|
#true
|
||||||
|
|||||||
@@ -67,6 +67,10 @@
|
|||||||
@extend .fa, .fa-image
|
@extend .fa, .fa-image
|
||||||
span
|
span
|
||||||
padding-left: 7px
|
padding-left: 7px
|
||||||
|
span.section-add-section-area-icon
|
||||||
|
@extend .fa, .fa-square
|
||||||
|
span
|
||||||
|
padding-left: 7px
|
||||||
input
|
input
|
||||||
height: auto
|
height: auto
|
||||||
padding-top: 4px
|
padding-top: 4px
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ body
|
|||||||
margin: 0
|
margin: 0
|
||||||
.main-section
|
.main-section
|
||||||
+panel($bg:rgba(200,200,200,0.9))
|
+panel($bg:rgba(200,200,200,0.9))
|
||||||
padding-bottom: 72px
|
|
||||||
padding: 0
|
padding: 0
|
||||||
|
padding-bottom: 72px
|
||||||
margin: 0
|
margin: 0
|
||||||
min-height: 100%
|
min-height: 100%
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
@media #{$medium-only}
|
@media #{$medium-only}
|
||||||
+grid-column($columns:4, $last-column:true)
|
+grid-column($columns:4, $last-column:true)
|
||||||
@media #{$large-up}
|
@media #{$large-up}
|
||||||
+grid-column($columns: 3, $last-column:true)
|
+grid-column($columns: 4, $last-column:true)
|
||||||
&.full
|
&.full
|
||||||
@media #{$small-only}
|
@media #{$small-only}
|
||||||
+grid-column($columns:10, $center:true, $last-column:true)
|
+grid-column($columns:10, $center:true, $last-column:true)
|
||||||
@@ -27,6 +27,13 @@
|
|||||||
+grid-column(6)
|
+grid-column(6)
|
||||||
.error
|
.error
|
||||||
color: $alert-color
|
color: $alert-color
|
||||||
|
.form-info
|
||||||
|
@media #{$small-only}
|
||||||
|
+grid-column($columns:10, $center:true)
|
||||||
|
@media #{$medium-only}
|
||||||
|
+grid-column($columns:4, $offset:1)
|
||||||
|
@media #{$large-up}
|
||||||
|
+grid-column(3)
|
||||||
.error-message
|
.error-message
|
||||||
color: $alert-color
|
color: $alert-color
|
||||||
&.form-actions
|
&.form-actions
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
.section-area-container
|
||||||
|
position: absolute
|
||||||
|
background-color: #aaa
|
||||||
|
text-align: center
|
||||||
|
&.rounded
|
||||||
|
border-radius: 999px
|
||||||
|
.title
|
||||||
|
display: inline-block
|
||||||
|
&.vertical
|
||||||
|
.title
|
||||||
|
transform: rotate(270deg)
|
||||||
|
&.right-half
|
||||||
|
.title
|
||||||
|
transform: rotate(90deg)
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ class DashboardController < ApplicationController
|
|||||||
if Rails.env.test?
|
if Rails.env.test?
|
||||||
@tables = Table.all
|
@tables = Table.all
|
||||||
else
|
else
|
||||||
@tables = List.active.map(&:table) | Supplier.find_by_name('Bora').tables.sample(3)
|
@tables = List.active.map(&:table) | Supplier.find_by_name('Mozo').tables.select{|t| t.number.between? 20, 50}.sample(3)
|
||||||
end
|
end
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { render layout: 'phone' }
|
format.html { render layout: 'phone' }
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
module Suppliers
|
||||||
|
class SectionAreasController < Suppliers::ApplicationController
|
||||||
|
def index
|
||||||
|
@section_areas = SectionArea.for_supplier(current_supplier)
|
||||||
|
render json: @section_areas, each_serializer: Suppliers::SectionAreaSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@section_area.supplier = current_supplier
|
||||||
|
if @section_area.save
|
||||||
|
render json: @section_area, serializer: Suppliers::SectionAreaSerializer
|
||||||
|
else
|
||||||
|
render json: {errors: @section.errors}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @section_area.update_attributes section_area_params
|
||||||
|
render json: @section_area, serializer: Suppliers::SectionAreaSerializer
|
||||||
|
else
|
||||||
|
render json: {errors: @section.errors}, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@section_area.destroy
|
||||||
|
head :ok
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def section_area_params
|
||||||
|
params.require(:section_area).permit %i[title width height position_x position_y section_id rounded]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -22,6 +22,11 @@ module Suppliers
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@section_element.destroy()
|
||||||
|
head :ok
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def section_element_params
|
def section_element_params
|
||||||
|
|||||||
@@ -124,14 +124,16 @@ module Suppliers
|
|||||||
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
|
@section = Section.find_by_supplier_id_and_id!(current_supplier.id, params[:id])
|
||||||
number_start = params[:number_start].to_i
|
number_start = params[:number_start].to_i
|
||||||
number_end = params[:number_end].to_i
|
number_end = params[:number_end].to_i
|
||||||
|
added_tables = []
|
||||||
for table_number in number_start..number_end
|
for table_number in number_start..number_end
|
||||||
next if table_number.zero?
|
next if table_number.zero?
|
||||||
table = Table.new(number: table_number)
|
table = Table.new(number: table_number)
|
||||||
table.supplier = current_supplier
|
table.supplier = current_supplier
|
||||||
table.section = @section
|
table.section = @section
|
||||||
table.save
|
table.save
|
||||||
|
added_tables << table
|
||||||
end
|
end
|
||||||
@section.arrange_tables_in_grid
|
@section.arrange_tables_in_grid added_tables
|
||||||
table_json = ActiveModel::ArraySerializer.new(@section.tables, each_serializer: SupplierTableSerializer, root: false).as_json
|
table_json = ActiveModel::ArraySerializer.new(@section.tables, each_serializer: SupplierTableSerializer, root: false).as_json
|
||||||
render json: {tables: table_json}
|
render json: {tables: table_json}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class Section
|
|||||||
has_many :lists
|
has_many :lists
|
||||||
has_many :orders
|
has_many :orders
|
||||||
has_many :section_elements
|
has_many :section_elements
|
||||||
|
has_many :section_areas
|
||||||
|
|
||||||
attr_protected :supplier_id
|
attr_protected :supplier_id
|
||||||
|
|
||||||
@@ -99,7 +100,7 @@ class Section
|
|||||||
@for_tables_as_json = h
|
@for_tables_as_json = h
|
||||||
end
|
end
|
||||||
|
|
||||||
def arrange_tables_in_grid
|
def arrange_tables_in_grid(tables = self.tables)
|
||||||
w = width
|
w = width
|
||||||
h = height
|
h = height
|
||||||
n = tables.size
|
n = tables.size
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
class SectionArea
|
||||||
|
include SimplyStored::Couch
|
||||||
|
include ActiveModel::SerializerSupport
|
||||||
|
property :title
|
||||||
|
property :width, type: Float, default: 2
|
||||||
|
property :height, type: Float, default: 2
|
||||||
|
property :position_x, type: Float, default: 0
|
||||||
|
property :position_y, type: Float, default: 0
|
||||||
|
property :rounded, type: :boolean, default: false
|
||||||
|
belongs_to :section
|
||||||
|
belongs_to :supplier
|
||||||
|
|
||||||
|
view :by_supplier_id, key: :supplier_id
|
||||||
|
|
||||||
|
def self.for_supplier(supplier)
|
||||||
|
find_all_by_supplier_id(supplier.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
class Suppliers::SectionAreaSerializer < Qwaiter::Serializer
|
||||||
|
attributes :title, :width, :height, :position_x, :position_y, :section_id, :rounded
|
||||||
|
end
|
||||||
@@ -14,8 +14,9 @@ en:
|
|||||||
user_feedback: User feedback
|
user_feedback: User feedback
|
||||||
employee: Employee
|
employee: Employee
|
||||||
employee_shift: Shift
|
employee_shift: Shift
|
||||||
section_element: Section element
|
|
||||||
svg_element: Svg element
|
svg_element: Svg element
|
||||||
|
section_element: Section element
|
||||||
|
section_area: Section area
|
||||||
plural:
|
plural:
|
||||||
user: Users
|
user: Users
|
||||||
supplier: Restaurants
|
supplier: Restaurants
|
||||||
@@ -30,8 +31,9 @@ en:
|
|||||||
user_feedback: User feedbacks
|
user_feedback: User feedbacks
|
||||||
employee: Employees
|
employee: Employees
|
||||||
employee_shift: Shifts
|
employee_shift: Shifts
|
||||||
section_element: Section elements
|
|
||||||
svg_element: Svg elements
|
svg_element: Svg elements
|
||||||
|
section_element: Section elements
|
||||||
|
section_area: Section areas
|
||||||
attributes:
|
attributes:
|
||||||
product_category:
|
product_category:
|
||||||
name: Name
|
name: Name
|
||||||
@@ -117,3 +119,7 @@ en:
|
|||||||
position_x: X
|
position_x: X
|
||||||
position_y: Y
|
position_y: Y
|
||||||
rotation: Angle
|
rotation: Angle
|
||||||
|
section_area:
|
||||||
|
title: Title
|
||||||
|
width: Width
|
||||||
|
height: Height
|
||||||
|
|||||||
@@ -13,8 +13,9 @@ nl:
|
|||||||
join_request: Deelname verzoek
|
join_request: Deelname verzoek
|
||||||
employee: Werknemer
|
employee: Werknemer
|
||||||
employee_shift: Shift
|
employee_shift: Shift
|
||||||
section_element: Ruimte element
|
|
||||||
svg_element: Svg element
|
svg_element: Svg element
|
||||||
|
section_element: Ruimte element
|
||||||
|
section_area: Ruimte blok
|
||||||
plural:
|
plural:
|
||||||
user: Gebruikers
|
user: Gebruikers
|
||||||
supplier: Restaurants
|
supplier: Restaurants
|
||||||
@@ -28,8 +29,9 @@ nl:
|
|||||||
join_request: Deelname verzoeken
|
join_request: Deelname verzoeken
|
||||||
employee: Werknemers
|
employee: Werknemers
|
||||||
employee_shift: Shifts
|
employee_shift: Shifts
|
||||||
section_element: Ruimte elementen
|
|
||||||
svg_element: Svg element
|
svg_element: Svg element
|
||||||
|
section_element: Ruimte elementen
|
||||||
|
section_area: Ruimte blokken
|
||||||
attributes:
|
attributes:
|
||||||
product_category:
|
product_category:
|
||||||
name: Naam
|
name: Naam
|
||||||
@@ -116,3 +118,7 @@ nl:
|
|||||||
position_x: X
|
position_x: X
|
||||||
position_y: Y
|
position_y: Y
|
||||||
rotation: Angle
|
rotation: Angle
|
||||||
|
section_area:
|
||||||
|
title: Titel
|
||||||
|
width: Breedte
|
||||||
|
height: Hoogte
|
||||||
|
|||||||
@@ -215,3 +215,10 @@ en:
|
|||||||
add_button: Add ${models.section_element}
|
add_button: Add ${models.section_element}
|
||||||
modal:
|
modal:
|
||||||
title: Add ${models.section_element}
|
title: Add ${models.section_element}
|
||||||
|
section_area:
|
||||||
|
add_button: Add ${models.section_area}
|
||||||
|
modal:
|
||||||
|
title: Add ${models.section_area}
|
||||||
|
save_button: Save
|
||||||
|
close_button: Close
|
||||||
|
destroy_button: Delete
|
||||||
|
|||||||
@@ -218,3 +218,7 @@ nl:
|
|||||||
add_button: ${models.section_element} toevoegen
|
add_button: ${models.section_element} toevoegen
|
||||||
modal:
|
modal:
|
||||||
title: ${models.section_element} toevoegen
|
title: ${models.section_element} toevoegen
|
||||||
|
section_area:
|
||||||
|
add_button: ${models.section_area} toevoegen
|
||||||
|
modal:
|
||||||
|
title: ${models.section_area} toevoegen
|
||||||
|
|||||||
+2
-1
@@ -121,8 +121,9 @@ Qwaiter::Application.routes.draw do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :section_elements
|
|
||||||
resources :svg_elements, only: [:index, :show]
|
resources :svg_elements, only: [:index, :show]
|
||||||
|
resources :section_elements
|
||||||
|
resources :section_areas
|
||||||
resources :tables do
|
resources :tables do
|
||||||
collection do
|
collection do
|
||||||
get :qr_codes
|
get :qr_codes
|
||||||
|
|||||||
@@ -0,0 +1,429 @@
|
|||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:ns1="http://sozi.baierouge.fr"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
id="svg3963"
|
||||||
|
sodipodi:docname="New document 2"
|
||||||
|
viewBox="0 0 247.14 407.32"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.0 r9654"
|
||||||
|
>
|
||||||
|
<defs
|
||||||
|
id="defs3965"
|
||||||
|
>
|
||||||
|
<filter
|
||||||
|
id="filter7488"
|
||||||
|
width="1.4366"
|
||||||
|
y="-.10959"
|
||||||
|
x="-.21831"
|
||||||
|
height="1.2192"
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
>
|
||||||
|
<feGaussianBlur
|
||||||
|
id="feGaussianBlur7490"
|
||||||
|
stdDeviation="7.0059565"
|
||||||
|
inkscape:collect="always"
|
||||||
|
/>
|
||||||
|
</filter
|
||||||
|
>
|
||||||
|
</defs
|
||||||
|
>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
bordercolor="#666666"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
fit-margin-left="0"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
fit-margin-top="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:zoom="0.35"
|
||||||
|
inkscape:window-x="45"
|
||||||
|
inkscape:window-height="728"
|
||||||
|
showgrid="false"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
inkscape:cx="245.71482"
|
||||||
|
inkscape:cy="-90.625854"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1235"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
/>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
transform="translate(-79.285 -34.417)"
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="g3884"
|
||||||
|
transform="matrix(3.8444 0 0 3.8992 983.02 -474.62)"
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="g7290"
|
||||||
|
style="opacity:.85646;filter:url(#filter7488);fill:#22241c"
|
||||||
|
transform="matrix(.58099 0 0 .16115 -328.17 169.07)"
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="g7292"
|
||||||
|
style="fill:#22241c"
|
||||||
|
transform="matrix(.25045 0 0 .30776 368.12 231.8)"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
id="path7294"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-657.13 371.05c-0.74601 23.684-1.2185 46.666-1.3558 67.468-0.40599 61.49 2.2746 87.055 6.4604 71.371-2.7111 2.1109-4.2486-22.664-3.8253-71.988 0.70331-81.933 6.5544-200.68 13.061-265.03 1.616-15.983 3.1194-27.261 4.46-33.854-1.8758 1.6446-4.2046 13.922-6.7788 37.126-5.1271 46.215-9.7834 123.86-12.021 194.91z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7296"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#22241c"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(.59066 .069109 -.11621 .99322 -226.66 22.953)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7298"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-572.41 274.08c-35.63 0.12944-68.593 25.952-79.618 66.062-3.5841 13.039-4.4842 26.28-3.0682 39 15.615-49.25 60.336-84.821 102.58-80.375 38.792 4.082 62.928 39.435 58.497 85.656l-3.1922 18.062c-1.6962 6.5767-3.9057 12.94-6.5703 19.031 4.9388-7.8506 8.8708-16.673 11.529-26.344l3.2077-17.312c4.4305-45.161-19.721-86.264-58.513-99.625-8.269-2.8481-16.633-4.1861-24.856-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7300"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-707.81 200.38c23.423 0.12944 45.093 25.952 52.341 66.062 2.3562 13.039 2.9479 26.28 2.017 39-10.265-49.25-39.664-84.821-67.438-80.375-25.501 4.082-41.368 39.435-38.456 85.656l2.0985 18.062c1.1151 6.5767 2.5676 12.94 4.3193 19.031-3.2467-7.8506-5.8316-16.673-7.5791-26.344l-2.1087-17.312c-2.9126-45.161 12.965-86.264 38.466-99.625 5.436-2.8481 10.935-4.1861 16.34-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7302"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-673.39 168.33c1.4015 13.985 3.2942 27.379 5.6225 39.299 6.8821 35.234 15.78 47.881 22.673 36.027-5.478 3.1042-11.855-9.897-17.168-38.228-8.8261-47.062-11.381-118.66-5.6993-159.81 1.4112-10.219 3.1764-17.685 5.1866-22.374-3.767 2.2524-7.155 10.866-9.6872 25.863-5.0433 29.869-5.1322 77.269-0.92771 119.22z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7304"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#22241c"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(-.46359 .055437 .091208 .79673 -996.37 255.3)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7306"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-702.71 360.38c19.161 0.12944 36.889 25.952 42.818 66.062 1.9275 13.039 2.4115 26.28 1.65 39-8.3975-49.25-32.448-84.821-55.168-80.375-20.862 4.082-33.842 39.435-31.459 85.656l1.7167 18.062c0.9122 6.5767 2.1004 12.94 3.5334 19.031-2.656-7.8506-4.7706-16.673-6.2002-26.344l-1.725-17.312c-2.3826-45.161 10.606-86.264 31.468-99.625 4.447-2.8481 8.9452-4.1861 13.367-4.1562z"
|
||||||
|
/>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="g7308"
|
||||||
|
style="fill:#22241c"
|
||||||
|
transform="matrix(.24526 .050711 -.062317 .30139 395.93 270.52)"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
id="path7310"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-657.13 371.05c-0.74601 23.684-1.2185 46.666-1.3558 67.468-0.40599 61.49 2.2746 87.055 6.4604 71.371-2.7111 2.1109-4.2486-22.664-3.8253-71.988 0.70331-81.933 6.5544-200.68 13.061-265.03 1.616-15.983 3.1194-27.261 4.46-33.854-1.8758 1.6446-4.2046 13.922-6.7788 37.126-5.1271 46.215-9.7834 123.86-12.021 194.91z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7312"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#22241c"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(.59066 .069109 -.11621 .99322 -226.66 22.953)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7314"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-572.41 274.08c-35.63 0.12944-68.593 25.952-79.618 66.062-3.5841 13.039-4.4842 26.28-3.0682 39 15.615-49.25 60.336-84.821 102.58-80.375 38.792 4.082 62.928 39.435 58.497 85.656l-3.1922 18.062c-1.6962 6.5767-3.9057 12.94-6.5703 19.031 4.9388-7.8506 8.8708-16.673 11.529-26.344l3.2077-17.312c4.4305-45.161-19.721-86.264-58.513-99.625-8.269-2.8481-16.633-4.1861-24.856-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7316"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-707.81 200.38c23.423 0.12944 45.093 25.952 52.341 66.062 2.3562 13.039 2.9479 26.28 2.017 39-10.265-49.25-39.664-84.821-67.438-80.375-25.501 4.082-41.368 39.435-38.456 85.656l2.0985 18.062c1.1151 6.5767 2.5676 12.94 4.3193 19.031-3.2467-7.8506-5.8316-16.673-7.5791-26.344l-2.1087-17.312c-2.9126-45.161 12.965-86.264 38.466-99.625 5.436-2.8481 10.935-4.1861 16.34-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7318"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-673.39 168.33c1.4015 13.985 3.2942 27.379 5.6225 39.299 6.8821 35.234 15.78 47.881 22.673 36.027-5.478 3.1042-11.855-9.897-17.168-38.228-8.8261-47.062-11.381-118.66-5.6993-159.81 1.4112-10.219 3.1764-17.685 5.1866-22.374-3.767 2.2524-7.155 10.866-9.6872 25.863-5.0433 29.869-5.1322 77.269-0.92771 119.22z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7320"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#22241c"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(-.46359 .055437 .091208 .79673 -996.37 255.3)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7322"
|
||||||
|
style="fill:#22241c"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-702.71 360.38c19.161 0.12944 36.889 25.952 42.818 66.062 1.9275 13.039 2.4115 26.28 1.65 39-8.3975-49.25-32.448-84.821-55.168-80.375-20.862 4.082-33.842 39.435-31.459 85.656l1.7167 18.062c0.9122 6.5767 2.1004 12.94 3.5334 19.031-2.656-7.8506-4.7706-16.673-6.2002-26.344l-1.725-17.312c-2.3826-45.161 10.606-86.264 31.468-99.625 4.447-2.8481 8.9452-4.1861 13.367-4.1562z"
|
||||||
|
/>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="g7247"
|
||||||
|
transform="matrix(.18184 0 0 .20076 -89.903 125.88)"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
id="path7219"
|
||||||
|
style="fill:#008000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-657.13 371.05c-0.74601 23.684-1.2185 46.666-1.3558 67.468-0.40599 61.49 2.2746 87.055 6.4604 71.371-2.7111 2.1109-4.2486-22.664-3.8253-71.988 0.70331-81.933 6.5544-200.68 13.061-265.03 1.616-15.983 3.1194-27.261 4.46-33.854-1.8758 1.6446-4.2046 13.922-6.7788 37.126-5.1271 46.215-9.7834 123.86-12.021 194.91z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7230"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#ffb380"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(.59066 .069109 -.11621 .99322 -226.66 22.953)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7232"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-572.41 274.08c-35.63 0.12944-68.593 25.952-79.618 66.062-3.5841 13.039-4.4842 26.28-3.0682 39 15.615-49.25 60.336-84.821 102.58-80.375 38.792 4.082 62.928 39.435 58.497 85.656l-3.1922 18.062c-1.6962 6.5767-3.9057 12.94-6.5703 19.031 4.9388-7.8506 8.8708-16.673 11.529-26.344l3.2077-17.312c4.4305-45.161-19.721-86.264-58.513-99.625-8.269-2.8481-16.633-4.1861-24.856-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7237"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-707.81 200.38c23.423 0.12944 45.093 25.952 52.341 66.062 2.3562 13.039 2.9479 26.28 2.017 39-10.265-49.25-39.664-84.821-67.438-80.375-25.501 4.082-41.368 39.435-38.456 85.656l2.0985 18.062c1.1151 6.5767 2.5676 12.94 4.3193 19.031-3.2467-7.8506-5.8316-16.673-7.5791-26.344l-2.1087-17.312c-2.9126-45.161 12.965-86.264 38.466-99.625 5.436-2.8481 10.935-4.1861 16.34-4.1562z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7239"
|
||||||
|
style="fill:#008000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-673.39 168.33c1.4015 13.985 3.2942 27.379 5.6225 39.299 6.8821 35.234 15.78 47.881 22.673 36.027-5.478 3.1042-11.855-9.897-17.168-38.228-8.8261-47.062-11.381-118.66-5.6993-159.81 1.4112-10.219 3.1764-17.685 5.1866-22.374-3.767 2.2524-7.155 10.866-9.6872 25.863-5.0433 29.869-5.1322 77.269-0.92771 119.22z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7243"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#ffb380"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(-.46359 .055437 .091208 .79673 -996.37 255.3)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7241"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-702.71 360.38c19.161 0.12944 36.889 25.952 42.818 66.062 1.9275 13.039 2.4115 26.28 1.65 39-8.3975-49.25-32.448-84.821-55.168-80.375-20.862 4.082-33.842 39.435-31.459 85.656l1.7167 18.062c0.9122 6.5767 2.1004 12.94 3.5334 19.031-2.656-7.8506-4.7706-16.673-6.2002-26.344l-1.725-17.312c-2.3826-45.161 10.606-86.264 31.468-99.625 4.447-2.8481 8.9452-4.1861 13.367-4.1562z"
|
||||||
|
/>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
id="path7258"
|
||||||
|
style="fill:#008000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-203.22 200.57c-1.2044 4.6315-2.3285 9.1343-3.2942 13.219-2.8545 12.076-3.5339 17.19-2.0789 14.245-0.57829 0.32532 0.2689-4.5964 2.576-14.279 3.8324-16.085 10.247-39.237 14.318-51.674 1.0109-3.0888 1.7889-5.2563 2.326-6.5081-0.40844 0.26129-1.3787 2.598-2.887 7.0748-3.0041 8.9164-7.3463 24.027-10.96 37.922z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7260"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#ffb380"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(.10205 .033126 -.065634 .19142 -110.81 146.37)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7262"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-183.74 184.31c-6.3505-1.1532-13.389 2.833-17.167 10.354-1.2282 2.445-1.9876 5.0183-2.311 7.5659 5.009-9.166 14.582-14.68 21.904-12.408 6.7231 2.0857 9.4215 9.8346 6.5412 18.775l-1.3857 3.4455c-0.59962 1.2369-1.281 2.4149-2.0311 3.5242 1.2347-1.38 2.3341-2.9845 3.245-4.7978l1.3545-3.2975c2.8324-8.7322 0.39129-17.612-5.9119-21.522-1.3436-0.83348-2.7726-1.3732-4.2381-1.6394z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7264"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-204.52 165.34c4.1651 0.80027 6.8556 6.5938 6.3314 14.719-0.17041 2.6415-0.66413 5.2641-1.4054 7.7342 0.40045-10.022-3.2254-17.988-8.3722-18.033-4.7258-0.0411-9.151 6.3845-10.724 15.568l-0.44358 3.6205c-0.099 1.3299-0.12829 2.629-0.0919 3.8844-0.22294-1.6508-0.28406-3.4708-0.15767-5.4299l0.40782-3.4734c1.5247-8.9751 6.2118-16.531 11.357-18.314 1.0969-0.38012 2.1366-0.46127 3.0978-0.2766z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7266"
|
||||||
|
style="fill:#008000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-196.94 160.18c-0.3832 2.7958-0.6522 5.4918-0.77693 7.9122-0.3687 7.1547 0.64358 9.9355 2.4075 7.8329-1.116 0.42907-1.6632-2.3379-1.3275-8.0836 0.55768-9.5443 3.3424-23.706 6.216-31.607 0.71368-1.9624 1.3658-3.3719 1.936-4.2272-0.77272 0.31821-1.7658 1.8997-2.8952 4.7642-2.2495 5.7054-4.4101 15.021-5.5597 23.409z"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7268"
|
||||||
|
sodipodi:rx="26.428572"
|
||||||
|
sodipodi:ry="83.571426"
|
||||||
|
style="fill:#ffb380"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
d="m-639.74 213.67c-4.2925 44.114-19.082 68.872-33.032 55.299-13.951-13.574-21.78-60.339-17.488-104.45 4.2925-44.114 19.082-68.872 33.032-55.299 12.12 11.792 19.883 49.141 18.498 88.999"
|
||||||
|
sodipodi:open="true"
|
||||||
|
transform="matrix(-.085061 -.0044364 -.019808 .15966 -258.39 166.59)"
|
||||||
|
sodipodi:cy="189.09448"
|
||||||
|
sodipodi:cx="-665"
|
||||||
|
sodipodi:end="6.3925649"
|
||||||
|
sodipodi:start="0.29849893"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="path7270"
|
||||||
|
style="fill:#338000"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m-210.85 196.96c3.4062 0.65929 5.3947 6.3224 4.6356 14.404-0.24675 2.6273-0.75965 5.2464-1.4708 7.722 0.73302-9.9603-1.9403-17.749-6.1873-17.627-3.8996 0.11242-7.8107 6.6335-9.4777 15.799l-0.51156 3.6079c-0.13514 1.3232-0.21148 2.6136-0.23189 3.8584-0.11775-1.6313-0.0951-3.4358 0.0879-5.3843l0.47614-3.4607c1.6191-8.9576 5.7918-16.609 10.111-18.545 0.92075-0.41284 1.7823-0.52709 2.5684-0.37494z"
|
||||||
|
/>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
</g
|
||||||
|
>
|
||||||
|
<metadata
|
||||||
|
>
|
||||||
|
<rdf:RDF
|
||||||
|
>
|
||||||
|
<cc:Work
|
||||||
|
>
|
||||||
|
<dc:format
|
||||||
|
>image/svg+xml</dc:format
|
||||||
|
>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage"
|
||||||
|
/>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/publicdomain/"
|
||||||
|
/>
|
||||||
|
<dc:publisher
|
||||||
|
>
|
||||||
|
<cc:Agent
|
||||||
|
rdf:about="http://openclipart.org/"
|
||||||
|
>
|
||||||
|
<dc:title
|
||||||
|
>Openclipart</dc:title
|
||||||
|
>
|
||||||
|
</cc:Agent
|
||||||
|
>
|
||||||
|
</dc:publisher
|
||||||
|
>
|
||||||
|
<dc:title
|
||||||
|
>Plant</dc:title
|
||||||
|
>
|
||||||
|
<dc:date
|
||||||
|
>2011-03-07T16:35:20</dc:date
|
||||||
|
>
|
||||||
|
<dc:description
|
||||||
|
>Plant with cobs</dc:description
|
||||||
|
>
|
||||||
|
<dc:source
|
||||||
|
>https://openclipart.org/detail/126049/plant-by-gsagri04</dc:source
|
||||||
|
>
|
||||||
|
<dc:creator
|
||||||
|
>
|
||||||
|
<cc:Agent
|
||||||
|
>
|
||||||
|
<dc:title
|
||||||
|
>gsagri04</dc:title
|
||||||
|
>
|
||||||
|
</cc:Agent
|
||||||
|
>
|
||||||
|
</dc:creator
|
||||||
|
>
|
||||||
|
<dc:subject
|
||||||
|
>
|
||||||
|
<rdf:Bag
|
||||||
|
>
|
||||||
|
<rdf:li
|
||||||
|
>Plant</rdf:li
|
||||||
|
>
|
||||||
|
<rdf:li
|
||||||
|
>cob</rdf:li
|
||||||
|
>
|
||||||
|
<rdf:li
|
||||||
|
>green</rdf:li
|
||||||
|
>
|
||||||
|
<rdf:li
|
||||||
|
>leaf</rdf:li
|
||||||
|
>
|
||||||
|
</rdf:Bag
|
||||||
|
>
|
||||||
|
</dc:subject
|
||||||
|
>
|
||||||
|
</cc:Work
|
||||||
|
>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/publicdomain/"
|
||||||
|
>
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction"
|
||||||
|
/>
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution"
|
||||||
|
/>
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks"
|
||||||
|
/>
|
||||||
|
</cc:License
|
||||||
|
>
|
||||||
|
</rdf:RDF
|
||||||
|
>
|
||||||
|
</metadata
|
||||||
|
>
|
||||||
|
</svg
|
||||||
|
>
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 15 KiB |
Reference in New Issue
Block a user