From 9718584ced94bc527c04bf53939beb9f2f550a60 Mon Sep 17 00:00:00 2001 From: jar3b Date: Mon, 25 Apr 2016 18:31:43 +0300 Subject: [PATCH] Initial commit --- .idea/watcherTasks.xml | 4 +++ app/adapters/application.js | 5 ++++ app/adapters/find-result.js | 18 +++++++++++++ app/components/nav-link-to.js | 6 +++++ app/components/search-form.js | 19 ++++++++++++++ app/index.html | 2 +- app/models/find-result.js | 9 +++++++ app/router.js | 5 ++-- app/routes/index.js | 7 +++++ app/routes/search.js | 4 +++ app/serializers/find-result.js | 5 ++++ app/styles/app.css | 12 +++++++++ app/templates/application.hbs | 24 +++++++++++++++--- app/templates/components/nav-link-to.hbs | 1 + app/templates/components/search-form.hbs | 21 +++++++++++++++ app/templates/index.hbs | 1 + app/templates/search.hbs | 1 + bower.json | 3 ++- package.json | 1 + public/assets/images/logo.png | Bin 0 -> 22874 bytes .../components/nav-link-to-test.js | 24 ++++++++++++++++++ .../components/search-form-test.js | 24 ++++++++++++++++++ tests/unit/adapters/application-test.js | 12 +++++++++ tests/unit/adapters/find-result-test.js | 12 +++++++++ tests/unit/models/find-result-test.js | 12 +++++++++ tests/unit/routes/index-test.js | 11 ++++++++ tests/unit/routes/search-test.js | 11 ++++++++ tests/unit/serializers/find-result-test.js | 15 +++++++++++ 28 files changed, 262 insertions(+), 7 deletions(-) create mode 100644 .idea/watcherTasks.xml create mode 100644 app/adapters/application.js create mode 100644 app/adapters/find-result.js create mode 100644 app/components/nav-link-to.js create mode 100644 app/components/search-form.js create mode 100644 app/models/find-result.js create mode 100644 app/routes/index.js create mode 100644 app/routes/search.js create mode 100644 app/serializers/find-result.js create mode 100644 app/templates/components/nav-link-to.hbs create mode 100644 app/templates/components/search-form.hbs create mode 100644 app/templates/index.hbs create mode 100644 app/templates/search.hbs create mode 100644 public/assets/images/logo.png create mode 100644 tests/integration/components/nav-link-to-test.js create mode 100644 tests/integration/components/search-form-test.js create mode 100644 tests/unit/adapters/application-test.js create mode 100644 tests/unit/adapters/find-result-test.js create mode 100644 tests/unit/models/find-result-test.js create mode 100644 tests/unit/routes/index-test.js create mode 100644 tests/unit/routes/search-test.js create mode 100644 tests/unit/serializers/find-result-test.js diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml new file mode 100644 index 0000000..9338ba6 --- /dev/null +++ b/.idea/watcherTasks.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/adapters/application.js b/app/adapters/application.js new file mode 100644 index 0000000..632353f --- /dev/null +++ b/app/adapters/application.js @@ -0,0 +1,5 @@ +import DS from 'ember-data'; + +export default DS.RESTAdapter.extend({ + host: 'http://api.fias.hellotan.ru' +}); diff --git a/app/adapters/find-result.js b/app/adapters/find-result.js new file mode 100644 index 0000000..1176dd8 --- /dev/null +++ b/app/adapters/find-result.js @@ -0,0 +1,18 @@ +import ApplicationAdapter from './application'; +import Ember from 'ember'; + +export default ApplicationAdapter.extend({ + query: function(store, type, query) { + var url = this.get('host')+'/find/'+query.text; + Ember.Logger.log('url:', url); + + return new Ember.RSVP.Promise(function(resolve, reject) { + Ember.$.getJSON(url, query).then(function(data) { + Ember.run(null, resolve, data); + }, function(jqXHR) { + jqXHR.then = null; // tame jQuery's ill mannered promises + Ember.run(null, reject, jqXHR); + }); + }); + } +}); \ No newline at end of file diff --git a/app/components/nav-link-to.js b/app/components/nav-link-to.js new file mode 100644 index 0000000..376a5b6 --- /dev/null +++ b/app/components/nav-link-to.js @@ -0,0 +1,6 @@ +import Ember from 'ember'; + +export default Ember.LinkComponent.extend({ + tagName: 'a', + classNames: ['item'] +}); diff --git a/app/components/search-form.js b/app/components/search-form.js new file mode 100644 index 0000000..01c4240 --- /dev/null +++ b/app/components/search-form.js @@ -0,0 +1,19 @@ +import Ember from 'ember'; + +export default Ember.Component.extend({ + placeholder: "Ввведите название населенного пункта", + searchText: "", + store: Ember.inject.service('store'), + + actions: { + search(param) { + if (param !== '') { + this.get('store').query('find-result', {text: param}).then((result) => { + this.set('model', result); + }); + } else { + this.set('model', null); + } + } + } +}); diff --git a/app/index.html b/app/index.html index e3711f7..69ca6af 100644 --- a/app/index.html +++ b/app/index.html @@ -3,7 +3,7 @@ - FiasFace + Hellotan's FIAS API diff --git a/app/models/find-result.js b/app/models/find-result.js new file mode 100644 index 0000000..89eaea4 --- /dev/null +++ b/app/models/find-result.js @@ -0,0 +1,9 @@ +import Model from 'ember-data/model'; +import attr from 'ember-data/attr'; + +export default Model.extend({ + text: attr('string'), + cort: attr('number'), + ratio: attr('number'), + aoid: attr('string') +}); diff --git a/app/router.js b/app/router.js index 3bba78e..1444431 100644 --- a/app/router.js +++ b/app/router.js @@ -2,10 +2,11 @@ import Ember from 'ember'; import config from './config/environment'; const Router = Ember.Router.extend({ - location: config.locationType + location: config.locationType }); -Router.map(function() { +Router.map(function () { + this.route('search'); }); export default Router; diff --git a/app/routes/index.js b/app/routes/index.js new file mode 100644 index 0000000..8560625 --- /dev/null +++ b/app/routes/index.js @@ -0,0 +1,7 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ + beforeModel() { + this.transitionTo('search'); + } +}); diff --git a/app/routes/search.js b/app/routes/search.js new file mode 100644 index 0000000..26d9f31 --- /dev/null +++ b/app/routes/search.js @@ -0,0 +1,4 @@ +import Ember from 'ember'; + +export default Ember.Route.extend({ +}); diff --git a/app/serializers/find-result.js b/app/serializers/find-result.js new file mode 100644 index 0000000..c06b191 --- /dev/null +++ b/app/serializers/find-result.js @@ -0,0 +1,5 @@ +import DS from 'ember-data'; + +export default DS.JSONSerializer.extend({ + primaryKey: 'aoid' +}); \ No newline at end of file diff --git a/app/styles/app.css b/app/styles/app.css index e69de29..21596ed 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -0,0 +1,12 @@ +body { + background-color: #FFFFFF; +} +.ui.menu .item img.logo { + margin-right: 1.5em; +} +.main.container { + margin-top: 7em; +} +.wireframe { + margin-top: 2em; +} \ No newline at end of file diff --git a/app/templates/application.hbs b/app/templates/application.hbs index f8bc38e..7a411fb 100644 --- a/app/templates/application.hbs +++ b/app/templates/application.hbs @@ -1,3 +1,21 @@ -

Welcome to Ember

- -{{outlet}} +
+ + {{ outlet }} +
diff --git a/app/templates/components/nav-link-to.hbs b/app/templates/components/nav-link-to.hbs new file mode 100644 index 0000000..398911a --- /dev/null +++ b/app/templates/components/nav-link-to.hbs @@ -0,0 +1 @@ +{{ yield }} diff --git a/app/templates/components/search-form.hbs b/app/templates/components/search-form.hbs new file mode 100644 index 0000000..b4dd610 --- /dev/null +++ b/app/templates/components/search-form.hbs @@ -0,0 +1,21 @@ +
+
+
+ {{input type="text" placeholder=placeholder value=searchText action="search" on="key-up"}} + +
+ {{#if model}} +
+ + {{#ui-accordion class='styled fluid'}} + {{#each model as |aoitem|}} + {{#ui-popup content=(concat "Ratio: " aoitem.ratio) position='right center'}} + {{#ui-accordion-section title=aoitem.text}}

AOID: {{ aoitem.aoid }}

{{/ui-accordion-section}} + {{/ui-popup}} + {{/each}} + {{/ui-accordion}} + {{/if}} +
+
diff --git a/app/templates/index.hbs b/app/templates/index.hbs new file mode 100644 index 0000000..c24cd68 --- /dev/null +++ b/app/templates/index.hbs @@ -0,0 +1 @@ +{{outlet}} diff --git a/app/templates/search.hbs b/app/templates/search.hbs new file mode 100644 index 0000000..96b57e9 --- /dev/null +++ b/app/templates/search.hbs @@ -0,0 +1 @@ +{{#search-form}}PIDARAS{{/search-form}} \ No newline at end of file diff --git a/bower.json b/bower.json index 8140a53..a2a586a 100644 --- a/bower.json +++ b/bower.json @@ -4,6 +4,7 @@ "ember": "~2.5.0", "ember-cli-shims": "0.1.1", "ember-cli-test-loader": "0.2.2", - "ember-qunit-notifications": "0.1.0" + "ember-qunit-notifications": "0.1.0", + "semantic-ui": "^2.1.8" } } diff --git a/package.json b/package.json index eaeffcc..78c7907 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "ember-cli-jshint": "^1.0.0", "ember-cli-qunit": "^1.4.0", "ember-cli-release": "0.2.8", + "ember-cli-semantic-ui": "0.8.1", "ember-cli-sri": "^2.1.0", "ember-cli-uglify": "^1.2.0", "ember-data": "^2.5.0", diff --git a/public/assets/images/logo.png b/public/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fe331ae81ed987c14f81689335b1151255411064 GIT binary patch literal 22874 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 V=l3i-Z3_4uq^hK)SS4>2{6GD(M+pD` literal 0 HcmV?d00001 diff --git a/tests/integration/components/nav-link-to-test.js b/tests/integration/components/nav-link-to-test.js new file mode 100644 index 0000000..47bcf84 --- /dev/null +++ b/tests/integration/components/nav-link-to-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('nav-link-to', 'Integration | Component | nav link to', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{nav-link-to}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#nav-link-to}} + template block text + {{/nav-link-to}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/tests/integration/components/search-form-test.js b/tests/integration/components/search-form-test.js new file mode 100644 index 0000000..93e0f3a --- /dev/null +++ b/tests/integration/components/search-form-test.js @@ -0,0 +1,24 @@ +import { moduleForComponent, test } from 'ember-qunit'; +import hbs from 'htmlbars-inline-precompile'; + +moduleForComponent('search-form', 'Integration | Component | search form', { + integration: true +}); + +test('it renders', function(assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.on('myAction', function(val) { ... }); + + this.render(hbs`{{search-form}}`); + + assert.equal(this.$().text().trim(), ''); + + // Template block usage: + this.render(hbs` + {{#search-form}} + template block text + {{/search-form}} + `); + + assert.equal(this.$().text().trim(), 'template block text'); +}); diff --git a/tests/unit/adapters/application-test.js b/tests/unit/adapters/application-test.js new file mode 100644 index 0000000..f0a2101 --- /dev/null +++ b/tests/unit/adapters/application-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('adapter:application', 'Unit | Adapter | application', { + // Specify the other units that are required for this test. + // needs: ['serializer:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let adapter = this.subject(); + assert.ok(adapter); +}); diff --git a/tests/unit/adapters/find-result-test.js b/tests/unit/adapters/find-result-test.js new file mode 100644 index 0000000..90f351e --- /dev/null +++ b/tests/unit/adapters/find-result-test.js @@ -0,0 +1,12 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('adapter:find-result', 'Unit | Adapter | find result', { + // Specify the other units that are required for this test. + // needs: ['serializer:foo'] +}); + +// Replace this with your real tests. +test('it exists', function(assert) { + let adapter = this.subject(); + assert.ok(adapter); +}); diff --git a/tests/unit/models/find-result-test.js b/tests/unit/models/find-result-test.js new file mode 100644 index 0000000..8c42d98 --- /dev/null +++ b/tests/unit/models/find-result-test.js @@ -0,0 +1,12 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('find-result', 'Unit | Model | find result', { + // Specify the other units that are required for this test. + needs: [] +}); + +test('it exists', function(assert) { + let model = this.subject(); + // let store = this.store(); + assert.ok(!!model); +}); diff --git a/tests/unit/routes/index-test.js b/tests/unit/routes/index-test.js new file mode 100644 index 0000000..5d0f50d --- /dev/null +++ b/tests/unit/routes/index-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:index', 'Unit | Route | index', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/tests/unit/routes/search-test.js b/tests/unit/routes/search-test.js new file mode 100644 index 0000000..cdc88b9 --- /dev/null +++ b/tests/unit/routes/search-test.js @@ -0,0 +1,11 @@ +import { moduleFor, test } from 'ember-qunit'; + +moduleFor('route:search', 'Unit | Route | search', { + // Specify the other units that are required for this test. + // needs: ['controller:foo'] +}); + +test('it exists', function(assert) { + let route = this.subject(); + assert.ok(route); +}); diff --git a/tests/unit/serializers/find-result-test.js b/tests/unit/serializers/find-result-test.js new file mode 100644 index 0000000..431a9ec --- /dev/null +++ b/tests/unit/serializers/find-result-test.js @@ -0,0 +1,15 @@ +import { moduleForModel, test } from 'ember-qunit'; + +moduleForModel('find-result', 'Unit | Serializer | find result', { + // Specify the other units that are required for this test. + needs: ['serializer:find-result'] +}); + +// Replace this with your real tests. +test('it serializes records', function(assert) { + let record = this.subject(); + + let serializedRecord = record.serialize(); + + assert.ok(serializedRecord); +});