UNPKG

ember-arcgis-page-layout

Version:

Page Layout infrastructure components

129 lines (115 loc) 3.22 kB
import Ember from 'ember'; export default Ember.Service.extend({ itemsService: Ember.inject.service('items-service'), /** * Return all pages belonging to a user */ getUserPages (username, num = 100, start = 1) { let form = { q: 'owner:' + username + ' AND tags:hub-page-config AND type:Web Mapping Application', sortField: 'title', num: num, start: start }; return this.get('itemsService').search(form); }, getOrgPages (orgId, num = 10, start = 1) { let form = { q: 'tags:hub-page-config AND type:Web Mapping Application AND orgid:' + orgId, sortField: 'title', num: num, start: start }; return this.get('itemsService').search(form); }, /** * Search for all page-template items */ getPageTemplates (tag = 'hub-page-template', num = 100, start = 1) { let form = { q: 'tags:' + tag + ' AND type:Web Mapping Application', sortField: 'title', num: num, start: start }; return this.get('itemsService').search(form); }, getPageTemplate (id) { return Ember.RSVP.hash({ item: this.get('itemsService').getById(id), data: this.get('itemsService').getDataById(id) }); }, /** * Get an Page item by it's Id */ getPage (id) { Ember.debug('PAGES.getPage(id) is DEPRECATED. Use PAGES.getById(id).'); return this.get('itemsService').getDataById(id) .then((data) => { // we use the `.values` part of the app config hash data.values.id = id; return data.values; }); }, getById (id) { return Ember.RSVP.hash({ item: this.get('itemsService').getById(id), data: this.get('itemsService').getDataById(id) }); }, /** * Create a Page */ create (page, itemOverride = null, source = 'opendatapages') { let data = { 'source': source, 'folderId': null, 'values': page }; let item = { 'title': page.title, 'owner': page.owner, 'type': 'Web Mapping Application', 'typeKeywords': [ 'Web Map', 'Map', 'Mapping Site', 'Online Map', 'JavaScript', 'selfConfigured' ], 'text': JSON.stringify(data) }; if (itemOverride) { // deep merge Ember.$.extend(true, item, itemOverride); console.log('Merged Item: ' + JSON.stringify(item)); } return this.get('itemsService').create(item) .then((resp) => { // get the id an update the url item.id = resp.id; item.url = 'https://dbouwman.github.io/opendata-pages/#/pages/' + resp.id; return this.get('itemsService').update(item); }); }, /** * Update a page item... just a proxy to itemsService.update() */ update (item) { return this.get('itemsService').update(item); }, /** * Delete a page... just a proxy to itemsService.destroy() */ destroy (page) { return this.get('itemsService').destroy(page.id, page.owner); }, encodePageAsForm (form = {}) { Ember.merge(form, this.get('defaultParams')); return Object.keys(form).map((key) => { return [key, form[key]].map(encodeURIComponent).join('='); }).join('&'); }, });