From 3dac865c13072da5529db8b5c02b3653fea1365a Mon Sep 17 00:00:00 2001 From: Nicolas Garnier Date: Tue, 3 Sep 2019 22:42:42 +0200 Subject: [PATCH 1/5] Using Google Feedback when there is no Feedback link provided. --- claat/render/template.html | 1 + codelab-elements/google-codelab/google_codelab.js | 10 ++++++++++ codelab-elements/google-codelab/google_codelab.soy | 6 ++---- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/claat/render/template.html b/claat/render/template.html index 9cc051d33..cf3acf5a0 100644 --- a/claat/render/template.html +++ b/claat/render/template.html @@ -51,6 +51,7 @@ + diff --git a/codelab-elements/google-codelab/google_codelab.js b/codelab-elements/google-codelab/google_codelab.js index 9657c0a4b..312488908 100644 --- a/codelab-elements/google-codelab/google_codelab.js +++ b/codelab-elements/google-codelab/google_codelab.js @@ -747,6 +747,16 @@ class Codelab extends HTMLElement { const feedback = this.getAttribute(FEEDBACK_LINK_ATTR); const steps = this.steps_.map((step) => step.getAttribute(LABEL_ATTR)); soy.renderElement(this.drawer_, Templates.drawer, {steps, feedback}); + // Start Google Feedback when the feedback link is clicked, if it exists. + const feedbackLink = this.drawer_.querySelector('#codelab-feedback'); + if (feedbackLink) { + this.eventHandler_.listen(feedbackLink, events.EventType.CLICK, + (e) => { + if (userfeedback && userfeedback.api) { + userfeedback.api.startFeedback({productId: '5143948'}); + } + }); + } } /** diff --git a/codelab-elements/google-codelab/google_codelab.soy b/codelab-elements/google-codelab/google_codelab.soy index d155c5816..f8d0154b7 100644 --- a/codelab-elements/google-codelab/google_codelab.soy +++ b/codelab-elements/google-codelab/google_codelab.soy @@ -84,11 +84,9 @@ {/for} - {if $feedback} -
- + - {/if} {/template} From aa2b4c2206c6ae09c4d64f258a532ac9cb9bce37 Mon Sep 17 00:00:00 2001 From: Nicolas Garnier Date: Wed, 4 Sep 2019 01:34:06 +0200 Subject: [PATCH 2/5] Adding externs --- claat/render/template.html | 2 +- codelab-elements/google-codelab/BUILD.bazel | 9 +++++ codelab-elements/google-codelab/externs.js | 37 +++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 codelab-elements/google-codelab/externs.js diff --git a/claat/render/template.html b/claat/render/template.html index cf3acf5a0..4e166cfd8 100644 --- a/claat/render/template.html +++ b/claat/render/template.html @@ -51,7 +51,7 @@ - + diff --git a/codelab-elements/google-codelab/BUILD.bazel b/codelab-elements/google-codelab/BUILD.bazel index df952af6f..d1d498b9e 100644 --- a/codelab-elements/google-codelab/BUILD.bazel +++ b/codelab-elements/google-codelab/BUILD.bazel @@ -30,9 +30,18 @@ closure_js_library( deps = [ "@io_bazel_rules_closure//closure/library", ":google_codelab_soy", + ":externs", ] ) +# Externs. +closure_js_library( + name = "externs", + srcs = [ + "externs.js", + ], +) + # Compiled version of GoogleCodelabStep element, suitable for distribution. closure_js_binary( name = "google_codelab_bin", diff --git a/codelab-elements/google-codelab/externs.js b/codelab-elements/google-codelab/externs.js new file mode 100644 index 000000000..b1fd24c3a --- /dev/null +++ b/codelab-elements/google-codelab/externs.js @@ -0,0 +1,37 @@ +/** + * @license + * Copyright 2019 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Externs to be included if you include Google Feedback API into + * your compiled JS code. + * @externs + */ + +/** + * namespace + * @suppress {duplicate} + */ +var userfeedback = {}; +userfeedback.api = {}; + + +/** + * @param {Object} configuration Product configuration. + * @param {Object=} opt_productData Data about the product. + * @return {boolean} true if Feedback was loaded, false otherwise. + */ +userfeedback.api.startFeedback = function(configuration, opt_productData) {}; From 3b6a38873da9e38d652da49681b087a4bd95701b Mon Sep 17 00:00:00 2001 From: Nicolas Garnier Date: Wed, 4 Sep 2019 02:07:25 +0200 Subject: [PATCH 3/5] Fix issue --- codelab-elements/google-codelab/google_codelab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codelab-elements/google-codelab/google_codelab.js b/codelab-elements/google-codelab/google_codelab.js index 312488908..131e42e43 100644 --- a/codelab-elements/google-codelab/google_codelab.js +++ b/codelab-elements/google-codelab/google_codelab.js @@ -752,7 +752,7 @@ class Codelab extends HTMLElement { if (feedbackLink) { this.eventHandler_.listen(feedbackLink, events.EventType.CLICK, (e) => { - if (userfeedback && userfeedback.api) { + if ('userfeedback' in window && userfeedback.api) { userfeedback.api.startFeedback({productId: '5143948'}); } }); From 2b406ba9b2223b965bb526332d389a1fc7144744 Mon Sep 17 00:00:00 2001 From: Nicolas Garnier Date: Wed, 4 Sep 2019 02:10:23 +0200 Subject: [PATCH 4/5] Fix build issue --- codelab-elements/google-codelab/BUILD.bazel | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/codelab-elements/google-codelab/BUILD.bazel b/codelab-elements/google-codelab/BUILD.bazel index d1d498b9e..0fbc5ef23 100644 --- a/codelab-elements/google-codelab/BUILD.bazel +++ b/codelab-elements/google-codelab/BUILD.bazel @@ -25,7 +25,7 @@ closure_js_library( name = "google_codelab", srcs = [ "google_codelab.js", - "google_codelab_def.js" + "google_codelab_def.js", ], deps = [ "@io_bazel_rules_closure//closure/library", @@ -40,6 +40,9 @@ closure_js_library( srcs = [ "externs.js", ], + suppress = [ + "JSC_STRICT_INEXISTENT_PROPERTY", + ] ) # Compiled version of GoogleCodelabStep element, suitable for distribution. From c3fda35a55b5dc9a651e35ee824ae225f72dc31c Mon Sep 17 00:00:00 2001 From: Nicolas Garnier Date: Wed, 4 Sep 2019 13:03:02 +0200 Subject: [PATCH 5/5] Remove all externs. --- codelab-elements/google-codelab/BUILD.bazel | 12 ------ codelab-elements/google-codelab/externs.js | 37 ------------------- .../google-codelab/google_codelab.js | 6 ++- 3 files changed, 4 insertions(+), 51 deletions(-) delete mode 100644 codelab-elements/google-codelab/externs.js diff --git a/codelab-elements/google-codelab/BUILD.bazel b/codelab-elements/google-codelab/BUILD.bazel index 0fbc5ef23..73dc8c116 100644 --- a/codelab-elements/google-codelab/BUILD.bazel +++ b/codelab-elements/google-codelab/BUILD.bazel @@ -30,18 +30,6 @@ closure_js_library( deps = [ "@io_bazel_rules_closure//closure/library", ":google_codelab_soy", - ":externs", - ] -) - -# Externs. -closure_js_library( - name = "externs", - srcs = [ - "externs.js", - ], - suppress = [ - "JSC_STRICT_INEXISTENT_PROPERTY", ] ) diff --git a/codelab-elements/google-codelab/externs.js b/codelab-elements/google-codelab/externs.js deleted file mode 100644 index b1fd24c3a..000000000 --- a/codelab-elements/google-codelab/externs.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @license - * Copyright 2019 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Externs to be included if you include Google Feedback API into - * your compiled JS code. - * @externs - */ - -/** - * namespace - * @suppress {duplicate} - */ -var userfeedback = {}; -userfeedback.api = {}; - - -/** - * @param {Object} configuration Product configuration. - * @param {Object=} opt_productData Data about the product. - * @return {boolean} true if Feedback was loaded, false otherwise. - */ -userfeedback.api.startFeedback = function(configuration, opt_productData) {}; diff --git a/codelab-elements/google-codelab/google_codelab.js b/codelab-elements/google-codelab/google_codelab.js index 131e42e43..bd7fbf44c 100644 --- a/codelab-elements/google-codelab/google_codelab.js +++ b/codelab-elements/google-codelab/google_codelab.js @@ -559,6 +559,7 @@ class Codelab extends HTMLElement { return; } + let time = 0; for (let i = this.currentSelectedStep_; i < this.steps_.length; i++) { const step = /** @type {!Element} */ (this.steps_[i]); @@ -752,8 +753,9 @@ class Codelab extends HTMLElement { if (feedbackLink) { this.eventHandler_.listen(feedbackLink, events.EventType.CLICK, (e) => { - if ('userfeedback' in window && userfeedback.api) { - userfeedback.api.startFeedback({productId: '5143948'}); + if ('userfeedback' in window) { + window['userfeedback']['api']['startFeedback'] + ({productId: '5143948'}); } }); }